क्या मैं किसी दिए गए निर्देशिका दुनिया में बनाई गई सभी फाइलों को पठनीय बनाने के लिए ACLs का उपयोग करके अपने umask को ओवरराइड कर सकता हूं?


12

मान लें कि मेरी उमर 0077 है।

मेरे पास एक निर्देशिका है, fooजो मैं चाहता हूं कि उस पर विशेष अनुमति लागू हो। मेरे द्वारा बनाई गई सभी फाइलें fooदुनिया में पठनीय होनी चाहिए, और सभी निर्देशिकाएं विश्व पठनीय और निष्पादन योग्य होनी चाहिए।

वर्तमान में, यदि मैं कोई फ़ाइल बनाता हूं, तो यह 0600 होगी, और एक निर्देशिका 0700 होगी:

$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm    0 2012-01-12 16:15 file

मैं चाहता हूँ कि फ़ाइल ०६४४ हो, और निर्देशिका ० ,५५, मेरे umask की परवाह किए बिना:

drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm    0 2012-01-12 16:15 file

इसे कैसे प्राप्त किया जा सकता है?


आप "प्रति निर्देशिका umask" googling की कोशिश नहीं की, क्या तुमने? अगर मेरी अनुमति थी, तो मैं आपको इसके लिए मना कर दूंगा, क्योंकि तीसरी हिट एक bash हैक है जो आप चाहते हैं (ठीक है, केवल आपके लिए, अन्य उपयोगकर्ताओं के लिए नहीं।)
ब्रेट डिकमैन

3
@BeeDee मैंने वह देखा। मैं इसे करने के अन्य तरीकों से दिलचस्प हूं, उम्मीद है कि एसीएल का उपयोग कर रहा हूं। मैं हर cd पर अपने umask को चेक / चेंज नहीं करूंगा, या bash फ़ंक्शन को ओवरराइड नहीं कर सकता।
स्टिकमंगुम्बी

जवाबों:


15

हाँ, acl यह कर सकता है।

  1. सुनिश्चित करें कि आपका फाइलसिस्टम acl के साथ आरोहित है। इसे जांचने के लिए, टाइप करें mount। आप अन्य अनुमतियों में सूचीबद्ध 'acl' को देख सकते हैं, जैसे:

    /dev/sda1 on / type ext4 (rw,errors=remount-ro,acl)
    

    यदि यह एसीएल के साथ नहीं लगाया गया है, तो / etc / fstab खोलें, और विकल्पों की सूची में 'acl' जोड़ें:

    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>   <options>       <dump>  <pass>
    /dev/sda1       /          ext3     noatime,errors=remount-ro,acl 0       1
    

    अब, नए विकल्पों के साथ चल रहे फाइल सिस्टम को फिर से माउंट करें:

    mount -v -o remount /
    
  2. एसएल उपयोगिताओं को स्थापित करें। उबंटू / डेबियन पर, यह है:

    sudo apt-get install acl
    
  3. आपका नया दोस्त हैं setfaclऔर getfaclsetfaclनिर्देशिका के लिए डिफ़ॉल्ट acl बदलने के लिए उपयोग करें :

    setfacl -d -m o:r foo
    

    -dडिफ़ॉल्ट सेट, -macl को संशोधित करता है, और o:rपढ़ने के अधिकार को "अन्य" देता है। एक निर्देशिका पर डिफ़ॉल्ट सेटिंग मोटे तौर पर स्थापित करने के बराबर है setgid एक निर्देशिका पर है, लेकिन समूह इनहेरिट नई बनाई गई फ़ाइलों के बजाय, वे एसीएल के वारिस। साथ में, सेटगिड और एसएल शक्तिशाली हो सकते हैं, क्योंकि आप एक समूह के लिए डिफ़ॉल्ट अनुमति दे सकते हैं, और एक प्रभावी समूह-आधारित प्रति-निर्देशिका उमक के लिए उस समूह से संबंधित नई बनाई गई फाइलें प्राप्त कर सकते हैं।

  4. अपने काम की जाँच करें: ls -lअब एक अतिरिक्त "+" दिखाना चाहिए जो कि मानक फ़ाइल अनुमतियों के अलावा एसील की उपस्थिति को दर्शाता है।

    % ls -la foo/
    drwxr--r--+
    

    आप acl के उपयोग से विस्तृत जानकारी प्राप्त कर सकते हैं getfacl

    % getfacl foo
    # file: foo
    # owner: you
    # group: you
    user::rwx
    group::r--
    other::r--
    default:user::rwx
    default:group::---
    default:other::r--
    

1
यह मेरे लिए काम नहीं कर रहा है। setfaclऔर getfaclअपेक्षित आउटपुट लौटा रहे हैं, लेकिन मूल निर्देशिका के भीतर केवल निर्देशिका (फाइलें नहीं) एसीएल को विरासत में मिल रही हैं, और फिर भी मेरे umask डिफ़ॉल्ट पर वरीयता ले रहे हैं (यदि वे दुनिया में पढ़ने योग्य नहीं हैं, default:other::r--तो किसी अन्य उपयोगकर्ता को नहीं देते हैं उन तक पहुँच)। क्या मुझे कुछ स्पष्ट याद आया?
स्टिकमंगुंबी

एक चीज़ जो मैंने पाई है (शायद यह परेशानी है): फेसल (उपयोगकर्ता, समूह, अन्य) का उपयोग करने के लिए लगता है जो वर्तमान उपयोगकर्ता से मेल खाता है। यही है, यदि आप फ़ाइल के लिए समूह से संबंधित हैं, तो समूह के लिए acl संसाधित किया जाएगा, अन्य के लिए acl नहीं। यदि आपने निर्देशिका को -d के साथ लागू किया है, तो
acl

1
हम्म, बस फिर से कोशिश की और सब कुछ ठीक काम किया। क्षमा करें, निश्चित नहीं कि मैंने पहली बार क्या गलत किया! धन्यवाद :)
stickmangumby

3

आप इस तरह मुखौटा ACL- संपत्ति सेट करके निर्देशिका के लिए एक umask भी मजबूर कर सकते हैं:

setfacl -d -m mask:07 .

-4

बस OnDir स्थापित करें और इसे अपनी आवश्यकताओं के अनुसार ठीक से कॉन्फ़िगर करें। मैंने यहाँ स्थित एक ऐसी ही समस्या का उत्तर दिया है


सवाल टर्मिनल के साथ निर्देशिकाओं के बारे में कुछ भी उल्लेख नहीं करता है, जो कि ऑनडिर के लिए है।
यारिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.