2012-04-19 12 views
58

मैं एक प्रयोगशाला में काम कर रहा हूं जहां हम लिनक्स (डेबियन और उबंटू) चला रहे हैं। उपयोगकर्ता नाम और समूह के नाम एनआईएस और वाईपी द्वारा संभाले जाते हैं। हमारे पास कुछ आम उपयोगकर्ता हैं कि सभी के पास प्रयोगों को चलाने के लिए उपयोग है और फिर हम दोनों के पास हमारे स्वयं के उपयोगकर्ता हैं, इसके अलावा एक आम समूह है कि हम सभी सदस्य हैं।सिस्टम चौड़ा umask कैसे सेट करें?

मैं ऐसा कैसे कर सकता हूं कि साझा /home/ ड्राइव (एनएफएस) पर सभी फाइलें और निर्देशिका उपयोगकर्ता/समूह द्वारा पढ़/लिखने (/ निष्पादन योग्य) है? मूल रूप से मैं चाहता

chmod -R 664 /home 
chgrp -R commongroup /home 

या समतुल्य रूप umask 0002 है।

लेकिन उपरोक्त आदेशों को चलाने से केवल फ़ोल्डर्स में मौजूदा फाइलों को ठीक किया जाता है और उमास्क केवल एकल उपयोगकर्ताओं के लिए काम करता है और जब भी उपयोगकर्ता लॉग इन करता है तो उसे चलाने के लिए होता है। .bashrc फ़ाइल में (और यह gnome के माध्यम से परिवर्तन मोड के लिए काम करेगा?)। क्या कोई सिस्टम वाइड कमांड या सेटिंग है जिसका उपयोग मैं यह सुनिश्चित करने के लिए कर सकता हूं कि हमारे कम्युन समूह के पास आम फाइलों तक पहुंच है?

+2

मेरा मानना ​​है कि आप पहुँच सेटिंग एक निर्देशिका करने के लिए 'setfacl' रिकर्सिवली स्थापित करने के लिए उपयोग करते हैं (और बनाए रखने के) कर सकते हैं। http://linuxcommand.org/man_pages/setfacl1.html – tMC

+2

आप * chmod -R 644/home' नहीं चाहते हैं: यह निर्देशिकाओं से eXecute बिट को हटा देता है, जो उन्हें अचूक बनाता है। – ephemient

+0

टीएमसी की टिप्पणी के बाद: यदि आप इसे विशिष्ट डीआईआर (और वैकल्पिक रूप से subdirs) पर चाहते हैं और इसे सभी (!) फ़ाइलों और किसी विशिष्ट उपयोगकर्ता से संबंधित डीआईआर से बाध्य नहीं करते हैं, तो एसीएल का उपयोग करें। यहां एक अच्छा प्रश्न है [http://stackoverflow.com/a/6550059/923794) एक समान प्रश्न – cfi

उत्तर

90

डेबियन और उबंटू दोनों pam_umask के साथ जहाज। यह आपको /etc/login.defs में umask कॉन्फ़िगर और उन में कैसे एक उपयोगकर्ता के लॉग का सिस्टम-वाइड लागू होते हैं, भले ही है करने के लिए अनुमति देता है।

इसे सक्षम करने के लिए आपको पढ़ने /etc/pam.d/common-session में रेखा जोड़ने की आवश्यकता हो सकती

session optional pam_umask.so 

या यह पहले से ही सक्षम हो सकता है। तब /etc/login.defs संपादित करें और (डिफ़ॉल्ट 022 है)

UMASK   002 

करने के लिए UMASK लाइन बदल जाते हैं।

नोट है कि उपयोगकर्ताओं को अभी भी अपने ~/.profile या ~/.bashrc या इसी तरह के umask भी पार कर जाते हैं, लेकिन (कम से कम नए Debian और Ubuntu प्रतिष्ठानों पर) वहाँ /etc/profile या /etc/bash.bashrc में umask में से किसी अधिभावी नहीं होना चाहिए। (यदि वहां हैं, तो बस उन्हें हटा दें।)

+3

12.04 में यह डिफ़ॉल्ट रूप से सक्षम है। –

+6

डेबियन 7 ** ** ** डिफ़ॉल्ट रूप से सक्षम नहीं है। – earthmeLon

+0

एक विशिष्ट उपयोगकर्ता को कस्टम umask कैसे सेट करें? – brauliobo

20

सबसे पहले, सुनिश्चित करें कि pam-modules पैकेज स्थापित है। इससे pam_umask मॉड्यूल उपलब्ध हो जाता है। तो सुनिश्चित करें कि /etc/pam.d/common-session रूप

session optional pam_umask.so 

की एक पंक्ति ताकि pam_umask सक्षम है बनाते हैं।

अब, pam_umask आदमी पृष्ठ के अनुसार, डिफ़ॉल्ट umask लॉग इन पर आदेश में निम्न स्थानों में से प्रत्येक की जाँच, से निर्धारित होता है:

  1. एक हार्ड सिस्टम-वाइड डिफ़ॉल्ट /etc/pam.d/common-session में निर्धारित किया है। यह इस तरह से सेट करने के लिए, उस फ़ाइल इस के साथ ऊपर उल्लेख से लाइन की जगह:

    session optional pam_umask.so umask=002 
    
  2. /etc/passwd में किसी एक उपयोगकर्ता का GECOS क्षेत्र में एक प्रविष्टि है कि विशिष्ट उपयोगकर्ता के लिए एक नरम सिस्टम-वाइड डिफ़ॉल्ट ओवरराइड करता है।के रूप में आदेश का उपयोग कर कि प्रविष्टि बनाएँ:

    chfn --other='umask=002' username 
    
  3. रूप /etc/default/login में UMASK=002 (आपको लगता है कि फ़ाइल बनाने के लिए आवश्यकता हो सकती है) का एक लाइन एक नरम सिस्टम-वाइड डिफ़ॉल्ट सेट करता है।

  4. UMASK/etc/login.defs से मूल्य। उस मान का उपयोग किसी और चीज के लिए भी किया जाता है (एक नए उपयोगकर्ता की होम निर्देशिका पर अनुमतियों की गणना करना; अधिक जानकारी के लिए /etc/login.defs में टिप्पणियां देखें)। इसलिए चीजों को अलग रखने के लिए नियमित लॉग इन के लिए डिफ़ॉल्ट उमास्क सेट करने के लिए इस पर भरोसा करना सर्वोत्तम है।

अपने मामले में

तो, आप या तो /etc/default/login में यह कॉन्फ़िगर करना चाहिए अगर आप इसे व्यक्तिगत उपयोगकर्ताओं के लिए सेटिंग को ओवरराइड, या /etc/pam.d/common-session में सेट के रूप में यदि आप इसे एक ही होना चाहता हूँ कि ऊपर वर्णित करने के लिए संभव होना चाहता हूँ सभी उपयोगकर्ताओ के लिए।

ध्यान दें कि यहां तक ​​कि कठिन डिफ़ॉल्ट सेटिंग के साथ, उपयोगकर्ताओं को अब भी डिफ़ॉल्ट umask मैन्युअल खोल प्रॉम्प्ट पर या उनके .profile लिपि में umask कमांड का उपयोग करके ओवरराइड कर सकते हैं।

यह भी ध्यान रखें कि इस डिफ़ॉल्ट को सेट करने के लिए पारंपरिक यूनिक्स तरीका umask कमांड /etc/profile पर जोड़कर है, और यह अभी भी काम करेगा। लेकिन उबंटू पर इस तरह की चीजों को कॉन्फ़िगर करने का यह अनुशंसित तरीका नहीं है, क्योंकि स्क्रिप्ट और जीयूआई का उपयोग करके विश्वसनीय रूप से प्रबंधन करना मुश्किल है।

नोट, दुर्भाग्य से यह stopped working for any application which has been converted to launch via systemd --user

+1

कुछ मामलों में 'USERGROUPS_ENAB' विकल्प हैं जो' 022' से '002' बदल सकते हैं। –

+0

उबंटू सर्वर 16.04.1 में, पैकेज 'libpam-modules' में मॉड्यूल' pam_umask' है। (कमांड 'dpkg-query --search/lib/x86_64-linux-gnu/security/pam_umask.so' प्रिंट्स 'libpam-modules: amd64:/lib/x86_64-linux-gnu/security/pam_umask.so'।) –

+3

उबंटू सर्वर 16.04.1 में '/ etc/defaults' मौजूद नहीं है। क्या सही पथ '/ etc/default/login' हो सकता है? –

0

समूह अधिकारों को मिलान करने के लिए, सर्वर पर, सेट ग्रिड बिट ("चिपचिपा बिट्स" में से एक) को अतिरिक्त विकल्प के रूप में माना जा सकता है।

साझा निर्देशिका समूह से जुड़ा हुआ है, तो (रूट का उपयोग करके) की शुरूआत: chmod आर 2775 folder_for_the_group दिलचस्प हो सकता है।

फ़ोल्डर में बनाई गई किसी भी नई फ़ाइल के लिए, निर्माता मालिक होगा, लेकिन समूह स्वचालित रूप से निर्दिष्ट होगा (जब तक निर्माता समूह का हिस्सा होता है)।

अधिकार 'ग्रिड अब के रूप में प्रकट -rwxrwsr-x +

संबंधित मुद्दे