Umask / PAM / अनुमतियों का पूर्ण नियंत्रण कैसे प्राप्त करें?


11

// अद्यतित फरवरी 8 - संक्षिप्त मुद्दों को संक्षिप्त में:

  • फ़ाइलों से अलग निर्देशिकाओं को umask कैसे करें?
  • Nautilus कॉपी / पेस्ट पर umask कैसे करें?
  • SSHFS के लिए umask कैसे सेट करें?

हमारी स्थिति

हमारी कंपनी के कई लोग सर्वर में लॉग इन करते हैं और फाइलें अपलोड करते हैं। वे सभी एक ही फाइल को अपलोड और अधिलेखित करने में सक्षम होने की आवश्यकता है। उनके अलग-अलग उपयोगकर्ता नाम हैं, लेकिन सभी एक ही समूह का हिस्सा हैं। हालांकि, यह एक इंटरनेट सर्वर है, इसलिए "अन्य" उपयोगकर्ताओं के पास (सामान्य रूप से) केवल-पढ़ने के लिए एक्सेस होना चाहिए। तो मुझे क्या करना है इन मानक अनुमति है:

फ़ाइलें: 664
निर्देशिका: 771

मेरा लक्ष्य यह है कि सभी उपयोगकर्ताओं को अनुमतियों के बारे में चिंता करने की आवश्यकता नहीं है। सर्वर को इस तरह से कॉन्फ़िगर किया जाना चाहिए कि ये अनुमतियाँ सभी फ़ाइलों और निर्देशिकाओं, नए बनाए, कॉपी किए गए या अधिक लिखे जाने पर लागू हों। केवल जब हमें कुछ विशेष अनुमतियों की आवश्यकता होती है, तो हम इसे मैन्युअल रूप से बदलते हैं।

हम Nautilus में SFTP-ing द्वारा सर्वर पर फाइल अपलोड करते हैं, सर्वर को sshfs का उपयोग करके बढ़ते हैं और इसे Nautilus में एक्सेस करते हैं जैसे कि यह एक स्थानीय फ़ोल्डर था, और कमांड लाइन में SCP-ing द्वारा। यह मूल रूप से हमारी स्थिति को कवर करता है और हम जो करना चाहते हैं।

अब, मैंने सुंदर umask कार्यक्षमता के बारे में कई बातें पढ़ी हैं। जो मैं umask समझता हूं (PAM के साथ मिलकर) मुझे वही करना चाहिए जो मुझे चाहिए : नई फ़ाइलों और निर्देशिकाओं के लिए मानक अनुमतियाँ सेट करें। हालांकि, कई घंटों के पढ़ने और परीक्षण-और-त्रुटि के बाद, मुझे अभी भी यह काम करने के लिए नहीं मिलता है। मुझे कई अप्रत्याशित परिणाम मिले। मैं वास्तव में umask की एक ठोस समझ प्राप्त करना पसंद करता हूं और कई प्रश्न अनुत्तरित हैं। मैं अपने निष्कर्षों और मेरे परीक्षणों के स्पष्टीकरण के साथ इन सवालों को नीचे पोस्ट करूंगा, जिससे इन सवालों का सामना करना पड़ा। यह देखते हुए कि कई चीजें गलत होती हैं, मुझे लगता है कि मैं कई चीजों को गलत कर रहा हूं। इसलिए, कई सवाल हैं।

नोट: मैं Ubuntu 9.10 का उपयोग कर रहा हूं और इसलिए SFTP सर्वर के लिए umask सेट करने के लिए sshd_config को बदल नहीं सकता । स्थापित SSH OpenSSH_5.1p1 Debian-6ubuntu2 <आवश्यक OpenSSH 5.4p1। तो यहाँ प्रश्न जाओ।

1. क्या मुझे पैसों को लेने के लिए पुनर्स्थापना की आवश्यकता है?

इससे शुरुआत करते हैं। इसमें बहुत सारी फाइलें शामिल थीं और मैं यह पता लगाने में असमर्थ था कि क्या करता है और क्या चीजों को प्रभावित नहीं करता है, इसलिए भी कि मुझे नहीं पता था कि प्रभावी होने के लिए मुझे पीएएम परिवर्तनों के लिए पूरी प्रणाली को पुनरारंभ करना है या नहीं। मैंने अपेक्षित परिणाम नहीं देखने के बाद ऐसा किया, लेकिन क्या यह वास्तव में आवश्यक है? या मैं सिर्फ सर्वर से लॉग आउट कर वापस लॉग इन कर सकता हूं और क्या नई पीएएम नीतियां प्रभावी होनी चाहिए? या फिर पुनः लोड करने के लिए कुछ 'PAM' कार्यक्रम है?

2. क्या वहाँ सभी अवसरों के लिए सभी उपयोगकर्ताओं को बचाने के लिए एक एकल फ़ाइल है?

इसलिए मैंने MANY फ़ाइलों को बदलना समाप्त कर दिया, क्योंकि मैंने MANY विभिन्न चीजों को पढ़ा। मैंने निम्नलिखित फाइलों में umask सेट करना समाप्त किया:

~/.profile -> umask=0002
~/.bashrc -> umask=0002
/etc/profile -> umask=0002
/etc/pam.d/common-session -> umask=0002
/etc/pam.d/sshd -> umask=0002
/etc/pam.d/login -> umask=0002

मैं चाहता हूं कि यह परिवर्तन सभी उपयोगकर्ताओं पर लागू हो, इसलिए किसी प्रकार का सिस्टम-व्यापी परिवर्तन सबसे अच्छा होगा। क्या इसे प्राप्त किया जा सकता है?

3. सभी के बाद, इस UMASK थिंग, यह काम करता है?

इसलिए हर संभव जगह पर umask को 0002 में बदलने के बाद, मैं परीक्षण चलाता हूं।

------------ SCP -----------

परीक्षण 1:

scp testfile (which has 777 permissions for testing purposes) server:/home/
testfile                                      100%    4     0.0KB/s   00:00   

चलो अनुमतियों की जाँच करें:

user@server:/home$ ls -l
total 4
-rwx--x--x 1 user uploaders 4 2011-02-05 17:59 testfile (711)

अद्यतन: pam.d / आम-सत्रों में केवल umask सेट करके तय (टिप्पणियां देखें)

--------- SSH ------------

परीक्षण 2:

ssh server
user@server:/home$ touch anotherfile
user@server:/home$ ls -l
total 4
-rw-rw-r-- 1 user uploaders 0 2011-02-05 18:03 anotherfile (664)

-------- SFTP -----------

नॉटिलस: sftp: // सर्वर / होम /

क्लाइंट से सर्वर पर न्यूफ़ाइल कॉपी और पेस्ट करें (777 क्लाइंट पर)

परीक्षण 3:

user@server:/home$ ls -l
total 4
-rwxrwxrwx 1 user uploaders 3 2011-02-05 18:05 newfile (777)

Nautilus के माध्यम से एक नई फ़ाइल बनाएँ। टर्मिनल में फ़ाइल अनुमतियों की जाँच करें:

परीक्षण 4:

user@server:/home$ ls -l
total 4
-rw------- 1 user uploaders    0 2011-02-05 18:06 newfile (600)

मेरा मतलब है ... अभी यहाँ क्या हुआ ?! हमें हर एक बार 644 मिलना चाहिए । इसके बजाय मुझे 711, 777, 600 और फिर एक बार 644 मिलता है। और 644 केवल एसएसएच के माध्यम से एक नई, रिक्त फ़ाइल बनाते समय प्राप्त होता है, जो कि सबसे कम संभावित परिदृश्य है।

तो मैं पूछ रहा हूँ, क्या ओम्स्क / पीएम आखिर काम करता है?

अद्यतन: pam.d / आम-सत्रों में केवल umask सेट करके निर्धारित परीक्षण 4 (टिप्पणियां देखें)

4. UMASK SSHFS के लिए यह क्या है?

कभी-कभी हम एक सर्वर को स्थानीय रूप से माउंट करते हैं, sshfs का उपयोग करते हुए। बहुत उपयोगी। लेकिन फिर, हमारे पास अनुमतियाँ समस्याएँ हैं।

यहां बताया गया है कि हम कैसे माउंट करते हैं:

sshfs -o idmap=user -o umask=0113 user@server:/home/ /mnt

नोट: हम umask = 113 का उपयोग करते हैं क्योंकि जाहिरा तौर पर, sshfs 666 के बजाय 777 से शुरू होता है, इसलिए 113 के साथ हमें 664 मिलता है जो वांछित फ़ाइल अनुमति है।

लेकिन अब क्या होता है कि हम सभी फाइलों और निर्देशिकाओं को देखते हैं जैसे कि वे 664 हैं। हम Nautilus में / mnt में ब्राउज़ करते हैं:

  • राइट क्लिक -> नई फ़ाइल (newfile) --- टेस्ट 5
  • राइट क्लिक -> नया फ़ोल्डर (newfolder) --- टेस्ट 6
  • हमारे स्थानीय क्लाइंट --- 7 टेस्ट से 777 फाइल कॉपी और पेस्ट करें

तो आइए कमांड लाइन पर देखें:

user@client:/mnt$ ls -l
total 8
-rw-rw-r-- 1 user 1007    3 Feb  5 18:05 copyfile (664)
-rw-rw-r-- 1 user 1007    0 Feb  5 18:15 newfile (664)
drw-rw-r-- 1 user 1007 4096 Feb  5 18:15 newfolder (664)

लेकिन हे, चलो सर्वर-साइड पर इसी फ़ोल्डर की जांच करें:

user@server:/home$ ls -l
total 8
-rwxrwxrwx 1 user uploaders    3 2011-02-05 18:05 copyfile (777)
-rw------- 1 user uploaders    0 2011-02-05 18:15 newfile (600)
drwx--x--x 2 user uploaders 4096 2011-02-05 18:15 newfolder (711)

क्या?! वास्तविक फ़ाइल अनुमतियाँ हम Nautilus में जो देखते हैं उससे बहुत अलग हैं। तो क्या sshfs पर यह umask सिर्फ एक 'फ़िल्टर' बनाता है जो अवास्तविक फ़ाइल अनुमतियाँ दिखाता है? और मैंने एक अन्य उपयोगकर्ता से एक फ़ाइल खोलने की कोशिश की, लेकिन उसी समूह के पास वास्तविक 600 अनुमतियाँ थीं, लेकिन 644 'नकली' अनुमतियाँ थीं, और मैं अभी भी इसे नहीं पढ़ सका, इसलिए यह फ़िल्टर कितना अच्छा है ??

5. UMASK सभी के बारे में फ़ाइलें है। दिशाओं के बारे में क्या होगा?

अपने परीक्षणों से मैं देख सकता हूं कि जो umask लगाया जा रहा है, वह किसी भी तरह निर्देशिका अनुमतियों को प्रभावित करता है। हालाँकि, मैं चाहता हूं कि मेरी फाइलें 664 (002) और मेरी निर्देशिका 771 (006) हो। तो क्या निर्देशिकाओं के लिए एक अलग umask होना संभव है?

6. परमात्मा UMASK / PAM वास्तव में शांत है, लेकिन UBUNTU बस शरीर है?

एक ओर, मैंने उन लोगों के विषय पढ़े हैं जिन्हें PAM / UMASK और उबंटू के साथ सफलता मिली है। दूसरी ओर, मुझे उबंटू / PAM / फ्यूज के बारे में कई पुराने और नए बग मिले हैं:

इसलिए मुझे नहीं पता कि अब मुझे क्या विश्वास करना चाहिए। क्या मुझे बस हार माननी चाहिए? क्या एसीएल मेरी सभी समस्याओं का समाधान करेगा ? या क्या मुझे उबंटू का उपयोग करने में फिर से समस्या है?

टार का उपयोग कर बैकअप के साथ सावधानी का एक शब्द। Red Hat / Centos वितरण टार प्रोग्राम में acls का समर्थन करता है, लेकिन Ubuntu बैक अप लेने पर acls का समर्थन नहीं करता है। इसका मतलब यह है कि जब आप एक बैकअप बनाते हैं तो सभी एकड़ खो जाएंगे।

मैं उबंटू 10.04 में अपग्रेड करने के लिए तैयार हूं, अगर वह मेरी समस्याओं को भी हल कर देगा, लेकिन पहले मैं समझना चाहता हूं कि क्या हो रहा है।

जवाबों:


3

कई चीजें यहां हो सकती हैं।

पहले विचार:

  • हाँ, pam.d परिवर्तन तुरंत प्रभाव डालते हैं
  • /etc/pam.d/common-session डिफ़ॉल्ट सेट करने के लिए सबसे अच्छी जगह है umask
  • किसी भी pam.d umask में किसी भी प्रविष्टि से ओवरराइड हो जाएगा .bashrc,
    लेकिन .bashrcकेवल कुछ परिस्थितियों में पढ़ा जाता है (इंटरैक्टिव, गैर-लॉगिन शेल)
  • testfile (711) बहुत अजीब है
    • कैसे /homeमुहिम की जाती है, और क्या आप ACL का उपयोग कर रहे हैं?
      (उदा। क्या करें ls -ld /homeऔर क्या getfacl /homeप्रिंट करें?)
    • किया था testfileपहले से ही मौजूद इससे पहले कि आप प्रतिलिपि किया था, क्योंकि scpएक फ़ाइल पर अनुमतियों में परिवर्तन नहीं होगा पहले से मौजूद हैं (जब तक आप का उपयोग -pझंडा)
  • नॉटिलस फाइलों को एक अलग तरीके से बनाने के लिए जाना जाता है, यह सुनिश्चित नहीं है कि क्यों, या नियम क्या हैं
  • umask=0113 शायद समस्याओं का कारण होगा
  • क्या सर्वर और क्लाइंट एक ही ऑपरेटिंग सिस्टम चला रहे हैं?
    उदाहरण के लिए, यदि ग्राहक के पास एसीएल सक्षम है, या साइगविन है, तो व्यवहार भिन्न हो सकता है
  • बल समझदार अनुमतियों का सबसे अच्छा तरीका डिफ़ॉल्ट एसीएल उपयोग करने के लिए, वास्तव में, क्योंकि जैसा कि आप की खोज की है, umaskमें उपयोगकर्ता द्वारा अधिलेखित हो सकता है .bashrcऔर .bash_profile

अपडेट करें:

  • umask=0113 sshfs के लिए गलत है।
    1. कोई निर्दिष्ट किए बिना माउंट करने का प्रयास करें umask
    2. उपयोग करके आरोह बिंदु के अंदर एक नई फ़ाइल बनाएँ touch
    3. आपको यह देखना चाहिए कि यह केवल बिट्स के -rw-r--r--बिना, उदाx
    4. xबिट्स को मास्क करके , आप निर्देशिकाओं को तोड़
      सकते हैं और संकलक निष्पादन योग्य फ़ाइलों को ठीक से बनाने में असमर्थ हो सकते हैं

युक्ति:

यदि हम कुछ भी बेहतर नहीं सोच सकते हैं, तो आप नई फ़ाइलों के निर्माण के लिए उपयोग कर सकते हैं famया gaminदेख सकते हैं और उन पर अनुमतियों को ठीक कर सकते हैं, या यहां तक ​​कि केवल एक स्क्रिप्ट जो समय-समय पर चलती है और सभी फाइलों पर अनुमतियाँ सेट करती है।


धन्यवाद! ठीक है, इसलिए मैंने pam.d / सामान्य सत्रों को छोड़कर सभी umask सेटिंग्स को हटा दिया । इससे कई मसले हल हो गए! टेस्ट 1 (SCP) और टेस्ट 4 (Nautilus में नई फ़ाइल) अब अच्छी तरह से काम करते हैं। हर्लल्स अब Nautilus में सर्वर (टेस्ट 3 - अभी भी 764 के बजाय 664) की अनुमति के साथ एक फ़ाइल की प्रतिलिपि बना रहे हैं। और निर्देशिका जारी करती है। सर्वर और क्लाइंट दोनों Ubuntu (9.10 बनाम 10.10 हालांकि) हैं, और कोई अतिरिक्त ACL सक्षम नहीं हैं।

Nautilus के साथ नकल करने की तरह लगता है cp -pया की तरह अनुमति संरक्षण है scp -p
मिकेल

किसी भी विचार यह कैसे बदलना है ??

आप क्या व्यवहार चाहते हैं? आप डिफ़ॉल्ट ACL का उपयोग करके नई फ़ाइलों के लिए डिफ़ॉल्ट अनुमतियाँ सेट कर सकते हैं। Nautilus डिफ़ॉल्ट ACL को सम्मानित करेगा। सभी विवरणों के लिए vanemery.com/Linux/ACL/linux-acl.html अवलोकन और suse.de/~agruen/acl/linux-acls/online देखें।
मिकेल

ध्यान दें कि डिफ़ॉल्ट ACL अनुमतियों के अधिकतम सेट को लागू नहीं करता है, वे केवल उन अनुमतियों को डिफ़ॉल्ट बनाते हैं। cp -p, scp -pऔर Nautilus के माध्यम से कॉपी करने के बाद भी प्रतिलिपि की अनुमतियों को उसी तरह बनाने की कोशिश की जाएगी जिस तरह से फाइल कॉपी की जा रही है।
मिकेल

0

यह PAM / umask संबंधित नहीं है, लेकिन यह आपके लिए उपयोगी हो सकता है।

आप तो setgid एक निर्देशिका है, तो सभी फ़ाइलों और इसके अंदर बनाई गई निर्देशिका स्वचालित रूप से अपने समूह को सौंपा है।

root@ricarda ~ # mkdir hello      
root@ricarda ~ # chown :users hello 
root@ricarda ~ # chmod g+s hello
root@ricarda ~ # ls -l |grep hello 
drwxr-sr-x. 2 root users  4096 Feb  7 04:05 hello
root@ricarda ~ # touch hello/some_file
root@ricarda ~ # mkdir hello/some_dir
root@ricarda ~ # ls -l hello/       
total 4
drwxr-sr-x. 2 root users 4096 Feb  7 04:16 some_dir
-rw-r--r--. 1 root users    0 Feb  7 04:06 some_file

धन्यवाद! मुझे इसकी जानकारी नहीं थी। यह अनुमति के मुद्दों को हल नहीं करता है, लेकिन यह वास्तव में उपयोगी है!


0

ACL आपके लिए ठीक काम करना चाहिए।

समूह के लिए सभी फ़ोल्डर पर एक डिफ़ॉल्ट एसीएल सेट करें, जो तब भविष्य की सभी फ़ाइलों और निर्देशिकाओं द्वारा विरासत में मिलेगा।

कुछ ऐसा setfacl -m d:g:uploaders:rwxकाम करना चाहिए।

अपनी मौजूदा अनुमतियां तय करने के लिए:

find /shared/folder -type d -exec setfacl -m d:g:uploaders:rwx {} \;
find /shared/folder -type f -exec setfacl -m g:uploaders:rw {} \;

ऐसा लगता है कि अगर "संरक्षित" एक फाइल कॉपी होने पर सेट है, तो डिफ़ॉल्ट ACL काम नहीं करता है। उस स्थिति में, मैं केवल क्रोन में खोज कमांड चलाने या परिवर्तनों के लिए फाइल सिस्टम की निगरानी करने का सुझाव दे सकता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.