जवाबों:
उपयोगकर्ता के umask सेट करने के तीन सामान्य तरीके हैं।
UMASKमें/etc/login.defspam_umask.soमें अपने PAM कॉन्फ़िगरेशन में जोड़ें/etc/pam.d/etc/profileइस संबंध में सिस्टम उपयोगकर्ताओं और सामान्य उपयोगकर्ताओं के बीच कोई अंतर नहीं है।
लेकिन मैं मान रहा हूँ कि आप एक कस्टम umask के साथ एक डेमॉन शुरू करने की कोशिश कर रहे हैं?
समस्या यह है: उपरोक्त सभी विकल्प तब होते हैं जब कोई उपयोगकर्ता लॉग इन करता है। यदि आप एक डेमॉन चला रहे हैं, तो यह कभी भी लॉग इन नहीं करता है। यह init द्वारा शुरू किया गया है, या तो रूट के रूप में चलता है, या setuidआपके द्वारा निर्दिष्ट सिस्टम उपयोगकर्ता के रूप में चलाने के लिए कॉल करता है। ।
आपके मुख्य विकल्प हैं:
umaskअपने init स्क्रिप्ट में (एक कर grep umask /etc/init.d/*एक उदाहरण के लिए)start-stop-daemon, तो umask विकल्प पास करेंसिस्टम उपयोगकर्ता तीन तरीकों से 'सामान्य' से भिन्न होते हैं: पासवर्ड एक्सपायरी, होम डायरेक्टरी (सिस्टम उपयोगकर्ता के पास एक नहीं है), और यूआईडी (सिस्टम उपयोगकर्ता आमतौर पर कुछ मनमानी सीमा से नीचे हैं)।
सामान्य स्थिति में, आप लगभग पूरी तरह से भाग्य से बाहर हैं। आप PAM का उपयोग ऑमस्क सेट करने के लिए कर सकते हैं, लेकिन PAM इन तीन अंतरों के अलावा अन्य चीजों के आधार पर व्यवहारों का चयन करता है।
दूसरे शब्दों में, आप PAM को 'सिस्टम' और 'गैर-सिस्टम' उपयोगकर्ताओं के बीच अंतर करने के लिए नहीं मिल सकते हैं। यह आपको दो विकल्प देता है:
या तो आप PAM का उपयोग सभी के लिए umask सेट करने के लिए करते हैं (उदाहरण के लिए चेक इन /etc/login.defs), तो स्पष्ट रूप से /etc/bash.bashrc(या समान) में गैर-सिस्टम उपयोगकर्ताओं के लिए umask सेट करें ;
या आप ऐसा करने के लिए अपना PAM मॉड्यूल लिखते हैं। मुझे लगता है कि कई लोगों द्वारा इसका स्वागत किया जाएगा, क्योंकि ओमस्क स्थापित करना एक सामान्य अनुरोध है।
कृपया इस जवाब को नमक के एक उदार चुटकी के साथ लें। इस तरह का अनुरोध बहुत आम है, और मुझे आश्चर्य नहीं होगा यदि एक बेहतर / उचित तरीका अब मौजूद है।
pam_umask, लेकिन शायद नहीं pam_succeed_if। Pam_succeed_if के साथ , आप किसी भी अन्य मॉड्यूल को किसी दिए गए उपयोगकर्ता या समूह पर ही लागू कर सकते हैं। लेकिन मुझे अभी भी नहीं लगता कि PAM यहां मदद करेगा।
जैसा कि @ मिकेल सुझाव देते हैं, यदि आप एक सिस्टम खाते को कॉन्फ़िगर करने का प्रयास कर रहे हैं जो एक डेमन है, तो डेमन को स्वयं कॉन्फ़िगर करने का प्रयास करें।
मुझे यह सवाल आया कि मैकओएस पर _www अकाउंट के लिए umask कैसे सेट करें। हालांकि यह सुझाव के अनुसार कठिन है, मैंने पाया कि मैं इसे (इस मामले में) उपयोगकर्ता == a daemon के रूप में एपाचे सेवा को कॉन्फ़िगर करके हल कर सकता हूं।
मैं अजीब तरीके से स्टार्टअप स्क्रिप्ट नहीं पा सकता (सामान्य रूप से /etc/init.d/ पर लाइब्रेरी / लॉन्चडैमन्स / में एक मैक पर), लेकिन इसकी मदद से: http://krypted.com/mac-security/apache2-umasks / पता चला कि अपाचे की अपनी विशिष्ट पर्यावरण लिपि है।
$ sudo vim /usr/sbin/envvars
umask 002
संभवतः अन्य डेमों के समान तरीके हैं, जो विशिष्ट मामलों में मदद कर सकते हैं।