पूरे सूक्ति सत्र के लिए `उम्मा` कैसे सेट करें?


10

सूक्ति 3.18 का उपयोग करना। मैं परिवार के अन्य सदस्यों के बीच फाइलें साझा करता हूं, लेकिन मेरे डिस्ट्रो (आर्च्लिनक्स) पर डिफ़ॉल्ट उमर है 0022। इसलिए बनाई गई प्रत्येक फ़ाइल / निर्देशिका हमारे सामान्य समूह के लिए उपयुक्त नहीं है।

मैं डालने की कोशिश की umask 0002में /etc/profileलेकिन सूक्ति सत्र अभी भी उपयोग कर रहा है 0022। यह एक लॉगिन बैश शेल के लिए काम कर रहा है, हालाँकि।

मैंने इस लाइन को जोड़ने की भी कोशिश की /etc/pam.d/system-auth: session required pam_umask.so umask=0002 इसका प्रभाव उसी के रूप में होता है जैसे कि एक में /etc/profile। मैंने कोशिश की

अगर मैं गनोम-टर्मिनल शेल में मैन्युअल रूप से ओम्स्क को बदलता हूं, तो मैं इसमें से एक एप्लिकेशन लॉन्च करता हूं, गेडिट कहता हूं, फिर इसके द्वारा बनाई गई फाइलों में वांछित अनुमतियां हैं। अगर मैं सूक्ति मेनू से gedit लॉन्च करता हूं, तो यह नहीं है। इसलिए मेरा मामला वास्तव में गनोम सत्र के लिए ऑमस्क सेट करना है, और मुझे यह नहीं मिल रहा है कि मुझे यह कहां करना है।

EDIT (गाइल्स की टिप्पणी का जवाब देने के लिए): मैं DM के रूप में gdm 3.18 का उपयोग कर रहा हूं। मैंने pam_umask लाइन को भी जोड़ने की कोशिश की /etc/pam.d/gdm-launch-environment। अन्य सभी gdm-*फ़ाइलों में फ़ाइल sessionसे शामिल हैं system-auth, इसलिए उन्हें अधिक की आवश्यकता नहीं होनी चाहिए। यह कुछ भी नहीं बदलता है।

/etc/login.defsइसमें UMASK 077वह भी शामिल है , जिसे या तो उन उपयोगकर्ताओं के लिए USERGROUPS_ENAB yesसेट किया जाना चाहिए , जिनका प्राथमिक समूह उपयोगकर्ता नाम है।umask00770007

एकमात्र फ़ाइल जिसमें 022umask शामिल /etcहै, /etc/profileलेकिन वह मेरी पहली कोशिश थी।

जैसे /etc/Xsession.d, मेरे पास यह निर्देशिका नहीं है। इसके अलावा, चूंकि वैंडलैंड अब डिफॉल्ट डिस्प्ले सर्वर है, मुझे यकीन नहीं है कि उम को एक्स इनिशियलाइजेशन के हिस्से के रूप में सेट किया जाना चाहिए, भले ही मैं अभी भी इसे खुद उपयोग कर रहा हूं।


आप किस प्रदर्शन प्रबंधक का उपयोग करते हैं? (यह वह कार्यक्रम है जहाँ आप अपना उपयोगकर्ता नाम और पासवर्ड दर्ज करते हैं।) GDM, lightdm, स्लिम, xdm, kdm, ...? आर्क और आपका DM कैसे सेट किया जाता है, इस पर निर्भर करते हुए, किसी फ़ाइल को /etc/Xsession.dया किसी भिन्न फ़ाइल को जोड़ने का प्रयास करें /etc/pam.d(मैं मान रहा हूं कि आप इस सिस्टम को चौड़ा करना चाहते हैं)। या हो सकता है /etc/login.defs
गिल्स एसओ-

दो उत्तर ttyया sshलॉगिन के लिए मान्य हैं , और वे मूल रूप से एक ही हैं, वास्तव में (उपयोग करते हुए pam_umask)। वे मेरे सूक्ति सत्र के साथ काम नहीं करते हैं। इसलिए मैं किसी को भी इनाम नहीं दे सकता। मुझे नहीं पता कि यह आर्कग्लिनक्स पर Xorg पर सूक्ति के लिए विशिष्ट है। जब मेरे पास कुछ समय होगा तो मैं अन्य वितरणों के साथ परीक्षण करूंगा।
क्रिस्टोफ़ ड्रेव-ड्रगेट

1
इस मुद्दे का इलाज करने वाले आर्कलिनक्स फोरम पर एक समान धागा है: bbs.archlinux.org/viewtopic.php?id=207753 gdm में एक बग जैसा लगता है ...

मैंने ACL का उपयोग करके समाप्त किया, जो अनुमतियों को नियंत्रित करने का एक बेहतर तरीका है। डिफ़ॉल्ट सुरक्षित अनुमतियाँ मास्क को बदलने की आवश्यकता नहीं है।
क्रिस्तोफ़ ड्रेवेट-ड्रोगेट

जवाबों:


6

कुछ सूक्ति अनुप्रयोगों द्वारा लॉन्च किया जाता है systemd --user, जिसमें pum_umask के0022 लिए कॉन्फ़िगर किए गए मान की परवाह किए बिना सिस्टमड द्वारा umask सेट किया जाता है । मैं किसी भी वर्कअराउंड के बारे में नहीं जानता, लेकिन मैंने सिस्टमड जीथब इश्यू ट्रैकर पर एक मुद्दा खोला । यह मुद्दा ग्नोम बुगज़िला पर भी बताया गया है ।

उपयोग किए गए उम्मास्क pam_umaskउन अनुप्रयोगों के लिए अपेक्षा के अनुसार काम कर रहे हैं, जिनके द्वारा लॉन्च नहीं किया गया है systemd --user

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


इसकी पड़ताल खुद करने के लिए

आप अपने सिस्टम पर चल रही प्रक्रियाओं को ट्री फॉर्मेट (माता-पिता / बच्चे की प्रक्रिया) में सूचीबद्ध कर सकते हैं:

pstree -Tapu

PID के लिए खोजें : (1) आपके सत्र का सिस्टमड - यूसर का उदाहरण ; (2) इसके द्वारा शुरू किया गया एक आवेदन , जैसे कि गेडिट , जो सिस्टमड्यूसर के लिए बच्चे की प्रक्रिया के रूप में दिखाई देगा ; और (3) आपके सत्र में एक प्रक्रिया systemd --user द्वारा लॉन्च नहीं की गई है

की तुलना करें umasks में सूचना दी procfs :

grep Umask /proc/<pid>/status

systemd --उपयोगकर्ता ही (1) और प्रक्रियाओं नहीं यह द्वारा शुरू की (3) सही होना चाहिए umask जिसके द्वारा स्थापित किया गया था pam_umaskSystemd --user (2) द्वारा शुरू की गई प्रक्रियाओं में umask होगा 0022


3

समस्या यह है कि सेबस्ट द्वारा उल्लेख किया गया है। मैंने कई चीजों की कोशिश की, लेकिन फिर मुझे एक वर्कअराउंड मिला, जिसमें ओवरबुकिंग के प्रति-उपयोगकर्ता (प्रति-उपयोगकर्ता) में लिखा था:

$ systemctl --user edit dbus

खुलने वाली फ़ाइल में, बस लिखें:

[Service]
UMask=002 # This is the umask I want to use

फ़ाइल .config / systemd / user / dbus.service.d / override.conf में सेव हो जाती है और dbus डिफ़ॉल्ट umask को ओवरराइड करती है, जो मुझे लगता है कि systemd --user से विरासत में मिला है, क्योंकि dbus इसके द्वारा लॉन्च किया गया है। बस लॉगआउट करें और फिर से लॉगिन करें और गनोम एप्लिकेशन को निर्दिष्ट umask का उपयोग करना चाहिए। बस एक वर्कअराउंड, लेकिन यह मेरे लिए काम करता है।


2

बदले में umaskआप usergroupsविकल्प का उपयोग कर सकते हैं pam_umask, इस उपयोगकर्ता और समूह के पास एक ही अनुमतियाँ हैं, जैसे कि फ़ोल्डर्स को साझा करने का शास्त्रीय यूनिक्स तरीका।

# /etc/pam.d/login or
# /etc/pam.d/common-session or system-auth
session optional pam_umask.so usergroups

1
यदि उपयोगकर्ता रूट नहीं है और उपयोगकर्ता नाम प्राथमिक समूह के नाम के समान है , तो umask समूह बिट्स को स्वामी बिट्स के समान सेट किया जाता है (उदाहरण: 022 -> 002, 077 -> 007)।
क्रिस्टोफ़ ड्रेव-ड्रोगेट

मैं प्राथमिक समूह को साझाकरण समूह के रूप में उपयोग करता हूं। उपयोगकर्ता समूहों के साथ, इस उपयोगकर्ता समूह के साथ डिफ़ॉल्ट रूप से फाइलें बनाई जाएंगी, न कि अन्य उपयोगकर्ताओं द्वारा संपादन योग्य।
क्रिस्टोफ ड्रेवेट-ड्रोगेट

1
मुझे एक रास्ता दिखाई देता है, हालांकि: मैं उपयोगकर्ता समूहों और एक सामान्य द्वितीयक समूह का उपयोग कर सकता हूं, और फिर साझा पेड़ पर, सभी बनाए गए फ़ाइलों और फ़ोल्डरों पर इस सामान्य समूह को बाध्य करने के लिए "सेट समूह" बिट जोड़ें। फिर भी, मैं अपने पीसी पर बाद में कोशिश करूँगा। मुझे यकीन नहीं है कि सूक्ति को वैसे भी परवाह होगी, क्योंकि यह हमेशा 0022 को एक umask के रूप में लेता है, इससे कोई फर्क नहीं पड़ता कि मैं रेती सत्र के लिए क्या काम कर रहा हूं।
क्रिस्टोफ ड्रेवेट-ड्रोगेट

1

डिफ़ॉल्ट umask सिस्टम-वाइड सेट करने के लिए आपको इसे पहले स्थान पर सक्षम करना होगा, जो यहाँ बहुत अच्छी तरह से समझाया गया है:

http://manpages.debian.org/cgi-bin/man.cgi?query=pam_umask&sektion=8

उपरोक्त लिंक डेबियन और ubuntu के लिए है लेकिन अन्य सभी लिनक्स सिस्टम के लिए समान है।

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

session optional pam_umask.so

एक बार सक्षम होने के बाद आप इसे इसमें सेट कर सकते हैं:

/etc/login.defs

मैं देख रहा हूँ कि आपको यह फ़ाइल पहले ही मिल गई है इसलिए आपको बस इतना करना है:

# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK           077

और इसे UMASK को 0002 पर सेट करें या आप जो भी करना चाहते हैं।

यह डिफ़ॉल्ट मान सिस्टम-वाइड सेट हो जाएगा, जिसका मतलब है सभी उपयोगकर्ताओं वहां से umask लेने होगा जब तक कि वे विशेष रूप से उनके में अन्यथा निर्धारित नहीं करते .profile या .bashrc


आपके उत्तर के लिए धन्यवाद। मुझे कोशिश करनी होगी। मैं वह आशावादी नहीं हूं क्योंकि मैंने पहले ही इस पैम मॉड्यूल को इनलाइन पैरामीटर "umask = 0002" के साथ आजमाया था और यह काम नहीं किया था (ग्नोम के लिए, इसने अन्य लॉगिन शेल के लिए काम किया था, हालांकि)। मैं आपके सुझाव की कोशिश करूँगा।
क्रिस्टोफ ड्रेवेट-ड्रोगेट

आपने सिस्टम-सामान्य के लिए pam मॉड्यूल की कोशिश की, जो सामान्य-सामान्य नहीं है :-)
ostendali

3
यह सिर्फ फ़ाइल नामों के वितरण की बात है। मुझे पता है कि डेबियन common-*आम सेटिंग्स के लिए उपयोग करता है । आर्क, रेडहैट के रूप में, इसके लिए एक system-authफ़ाइल का उपयोग करता है । वैसे भी, मैं जोड़ने के अपने सुझाव की कोशिश की session optional pam_umask.soऔर और UMASK 002में /etc/login.defsजैसा कि मैंने उम्मीद थी, और साथ के रूप में pam_umask.so umask=0002, यह एक tty के लिए काम किया login(SSH या के माध्यम से) सत्र लेकिन Gnome एक सेट 0022हमेशा की तरह umask। सूक्ति में आंतरिक umask सेटिंग का उपयोग करना चाहिए, या आर्च्लिनक्स एक का उपयोग कर रहा है ... मैं यह देखने के लिए कि क्या समस्या उत्पन्न होती है, एक और वितरण की कोशिश करेंगे।
क्रिस्टोफ ड्रेवेट-ड्रोगेट

1

लॉगिन सत्र के लिए: umask 0002अपने $HOME/.profile(या /etc/profile) में जोड़ें ।

सूक्ति सत्र के लिए: umask 0002अपने में जोड़ें$HOME/.gnomerc


1

EDIT: सूक्ति सत्र के उमस्क को सेट करने के लिए systemd पाने के लिए, मैंने निम्नलिखित पंक्तियों के साथ /etc/systemd/system/display-manager.service.d/ के तहत एक umask.conf फ़ाइल बनाई:


[Service]
UMask=0002

मशीन को रिबूट करने के बाद, यह अब उन सभी प्रक्रियाओं को अनुमति देता है, user.sliceजो आप चाहते हैं कि umask के अनुरूप हों। लॉग आउट करना परिवर्तनों के लिए पर्याप्त नहीं था इसलिए मैं प्रक्रिया umasks पर परीक्षण करने से पहले अपनी मशीन को रिबूट करने की सलाह दूंगा।

अतिरिक्त जानकारी:

  • OS: CentOS7.4
  • DE: सूक्ति 3

3
यदि यह काम कर रहा है, तो /etc/systemd/system/gdm.service.d/umask.confकेवल एक फाइल की तरह [Service]\nUMask=0002पर्याप्त होना चाहिए।
क्रिस्टोफ ड्रेवेट-ड्रोगेट

और वास्तव में यह करता है! बस वहाँ परीक्षण किया। मेरे / etc / systemd / system / folder में gdm.service का एक सिमलिंक है, इसलिए मैंने एक प्रदर्शन-manager.service.d / umask.conf बनाया और लाइन को जोड़ा, यह सही काम किया, इसे शामिल करने के लिए उत्तर को अपडेट करने के लिए जा रहा है। आप @ क्रिस्टोफ़ेरेवेट-ड्रोगेट
जैमलम

0

बस यह जोड़ना चाहता था कि pam_umaskमैनपेज़ आपको यह पता लगाने में मदद करने के लिए कुछ बहुत अच्छी जानकारी प्रदान करता है कि आपका ऑमस्क कहां से आ रहा है। विशेष रूप से:

pam_umask वर्तमान परिवेश के फ़ाइल मोड निर्माण मास्क को सेट करने के लिए PAM मॉड्यूल है। ऑमस्क नव निर्मित फ़ाइलों को सौंपी गई डिफ़ॉल्ट अनुमतियों को प्रभावित करता है।

PAM मॉड्यूल निम्नलिखित क्रम में निम्नलिखित स्थानों से umask मूल्य प्राप्त करने की कोशिश करता है:

·   umask= argument
·   umask= entry of the users GECOS field
·   pri= entry of the users GECOS field
·   ulimit= entry of the users GECOS field
·   UMASK= entry from /etc/default/login
·   UMASK entry from /etc/login.defs

जैसा कि किसी ने कहा है, आपको इसे common-sessionनिर्देशिका में फ़ाइल में सेट करना चाहिए /etc/pam.d

ध्यान दें कि लॉगिन जो पैम का उपयोग नहीं करते हैं (जैसे कि वे जो उपयोग करते हैं gettyया loginउनके umask सेट होंगे login.defs


0

ग्नोम के साथ फेडोरा 29 के एक इंस्टॉलेशन पर मैंने पाया कि, गनोम लांचर से लॉन्च किए गए प्रोग्राम अन्य पठनीय, 0022 फाइलों को छोड़ देते हैं। पाम जाहिर तौर पर /etc/login.defs को ऊपर बताए अनुसार डिफरेक्ट करता है। हालाँकि, 0077 में मास्क को संपादित करने से ग्नोम का व्यवहार नहीं बदला। मुझे संपादन / आदि / प्रोफ़ाइल, और / etc / bashrc पर भी जाना था - ये दोनों इसे 0022 पर वापस सेट कर रहे थे।

यह अच्छा होगा यदि फेडोरा के पास इसके लिए एक जगह है, लेकिन / etc / प्रोफाइल और / etc / bashrc में प्रविष्टियों ने 200 या उससे अधिक आईडी वाले उपयोगकर्ताओं के लिए अलग से मास्क सेट किया है, इसलिए ऐसा लगता है कि एक मुखौटा सभी फिट नहीं है।

हालाँकि, यह अभी के लिए एक समस्या है, समस्या पूरी तरह से हल नहीं हुई है, क्योंकि सूक्ति उपयोगकर्ता के पास अभी भी अपने स्वयं के umask स्थापित करने का कोई तरीका नहीं है क्योंकि यह उन अनुप्रयोगों पर लागू होता है जो सूक्ति लांचर से चलते हैं। लगता है कि गनोम के पास उस ऑमस्क के लिए एक विन्यास विकल्प होना चाहिए। (शायद यह करता है, लेकिन मुझे यह नहीं मिला।)


0

मेरे पास कम से कम फेडोरा 31 पर वर्कअराउंड है:

sudo vi /etc/profile.d/umask.sh
umask <your_umask>

sudo vi /etc/login.defs
UMASK <your_umask>

sudo vi /usr/local/bin/systemd-user
/usr/lib/systemd/systemd --user

sudo chmod a+x /usr/local/bin/systemd-user

sudo vi /usr/lib/systemd/system/user@.service
ExecStart=-/usr/local/bin/systemd-user
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.