सिस्टम-उपयोगकर्ता के लिए umask कैसे सेट करें?


14

क्या umaskसिस्टम-उपयोगकर्ता (के साथ बनाया गया useradd --system username) के लिए सेट करना संभव है ?

जवाबों:


14

उपयोगकर्ता के umask सेट करने के तीन सामान्य तरीके हैं।

  1. सेट UMASKमें/etc/login.defs
  2. pam_umask.soमें अपने PAM कॉन्फ़िगरेशन में जोड़ें/etc/pam.d
  3. इसे शेल स्टार्टअप फ़ाइलों में सेट करें, जैसे /etc/profile

इस संबंध में सिस्टम उपयोगकर्ताओं और सामान्य उपयोगकर्ताओं के बीच कोई अंतर नहीं है।

लेकिन मैं मान रहा हूँ कि आप एक कस्टम umask के साथ एक डेमॉन शुरू करने की कोशिश कर रहे हैं?

समस्या यह है: उपरोक्त सभी विकल्प तब होते हैं जब कोई उपयोगकर्ता लॉग इन करता है। यदि आप एक डेमॉन चला रहे हैं, तो यह कभी भी लॉग इन नहीं करता है। यह init द्वारा शुरू किया गया है, या तो रूट के रूप में चलता है, या setuidआपके द्वारा निर्दिष्ट सिस्टम उपयोगकर्ता के रूप में चलाने के लिए कॉल करता है। ।

आपके मुख्य विकल्प हैं:

  1. डाल umaskअपने init स्क्रिप्ट में (एक कर grep umask /etc/init.d/*एक उदाहरण के लिए)
  2. कस्टम umask ( systemd.exec upstart umask ) के साथ कार्यक्रम शुरू करने के लिए init कॉन्फ़िगर करें
  3. यदि उपयोग कर रहे हैं start-stop-daemon, तो umask विकल्प पास करें
  4. umask फ़ंक्शन या सिस्टम कॉल को कॉल करने के लिए प्रोग्राम को स्वयं संशोधित करें

क्या आप जानते हैं कि SSHFS (sftp-server) के लिए Arch Linux (जो सिस्टमड का उपयोग करता है) पर एक umask कैसे सेट करें? जैसा कि आपने बताया, आपके द्वारा सूचीबद्ध पहले 3 विकल्पों का कोई प्रभाव नहीं है।
MountainX

2

सिस्टम उपयोगकर्ता तीन तरीकों से 'सामान्य' से भिन्न होते हैं: पासवर्ड एक्सपायरी, होम डायरेक्टरी (सिस्टम उपयोगकर्ता के पास एक नहीं है), और यूआईडी (सिस्टम उपयोगकर्ता आमतौर पर कुछ मनमानी सीमा से नीचे हैं)।

सामान्य स्थिति में, आप लगभग पूरी तरह से भाग्य से बाहर हैं। आप PAM का उपयोग ऑमस्क सेट करने के लिए कर सकते हैं, लेकिन PAM इन तीन अंतरों के अलावा अन्य चीजों के आधार पर व्यवहारों का चयन करता है।

दूसरे शब्दों में, आप PAM को 'सिस्टम' और 'गैर-सिस्टम' उपयोगकर्ताओं के बीच अंतर करने के लिए नहीं मिल सकते हैं। यह आपको दो विकल्प देता है:

  • या तो आप PAM का उपयोग सभी के लिए umask सेट करने के लिए करते हैं (उदाहरण के लिए चेक इन /etc/login.defs), तो स्पष्ट रूप से /etc/bash.bashrc(या समान) में गैर-सिस्टम उपयोगकर्ताओं के लिए umask सेट करें ;

  • या आप ऐसा करने के लिए अपना PAM मॉड्यूल लिखते हैं। मुझे लगता है कि कई लोगों द्वारा इसका स्वागत किया जाएगा, क्योंकि ओमस्क स्थापित करना एक सामान्य अनुरोध है।

कृपया इस जवाब को नमक के एक उदार चुटकी के साथ लें। इस तरह का अनुरोध बहुत आम है, और मुझे आश्चर्य नहीं होगा यदि एक बेहतर / उचित तरीका अब मौजूद है।


1
PAM_umask नामक एक PAM मॉड्यूल पहले से ही है । समस्या यह है कि यह केवल लॉगिन समय पर काम करता है।
मिकेल

आह, मुझे लगता है कि आप इसके बारे में जानते थे pam_umask, लेकिन शायद नहीं pam_succeed_ifPam_succeed_if के साथ , आप किसी भी अन्य मॉड्यूल को किसी दिए गए उपयोगकर्ता या समूह पर ही लागू कर सकते हैं। लेकिन मुझे अभी भी नहीं लगता कि PAM यहां मदद करेगा।
मिकेल

1

जैसा कि @ मिकेल सुझाव देते हैं, यदि आप एक सिस्टम खाते को कॉन्फ़िगर करने का प्रयास कर रहे हैं जो एक डेमन है, तो डेमन को स्वयं कॉन्फ़िगर करने का प्रयास करें।

मुझे यह सवाल आया कि मैकओएस पर _www अकाउंट के लिए umask कैसे सेट करें। हालांकि यह सुझाव के अनुसार कठिन है, मैंने पाया कि मैं इसे (इस मामले में) उपयोगकर्ता == a daemon के रूप में एपाचे सेवा को कॉन्फ़िगर करके हल कर सकता हूं।

मैं अजीब तरीके से स्टार्टअप स्क्रिप्ट नहीं पा सकता (सामान्य रूप से /etc/init.d/ पर लाइब्रेरी / लॉन्चडैमन्स / में एक मैक पर), लेकिन इसकी मदद से: http://krypted.com/mac-security/apache2-umasks / पता चला कि अपाचे की अपनी विशिष्ट पर्यावरण लिपि है।

$ sudo vim /usr/sbin/envvars
    umask 002

संभवतः अन्य डेमों के समान तरीके हैं, जो विशिष्ट मामलों में मदद कर सकते हैं।


लेकिन आप इस फ़ाइल में "umask 002" कैसे लिख सकते हैं?!?!? मुझे रूट / सुडो के रूप में भी एक अनुमति अस्वीकृत त्रुटि मिलती है और ऐप्पल के अनुसार भी जड़ों को / usr / sbin निर्देशिका support.apple.com/en-gb/HT204899
Schurik
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.