मैं OpenSSH के umask को 0027
सभी कनेक्शन प्रकारों के अनुरूप तरीके से सेटअप करने का तरीका खोज रहा हूं ।
उन कनेक्शन प्रकारों से जिनका मैं उल्लेख कर रहा हूं:
- SFTP
- SCP
- ssh होस्टनाम
- ssh होस्टनाम कार्यक्रम
3. और 4. के बीच का अंतर यह है कि पूर्व एक शेल शुरू करता है जो आमतौर पर /etc/profile
जानकारी पढ़ता है जबकि बाद वाला नहीं करता है।
इस पोस्ट को पढ़ने के अलावा, मैं ओपन विकल्प के नए संस्करणों में मौजूद -u विकल्प से अवगत हो गया हूं। हालांकि यह काम नहीं करता है।
मुझे यह भी जोड़ना चाहिए कि /etc/profile
अब इसमें शामिल हैं umask 0027
।
बिंदु से बिंदु:
- SFTP - स्थापना
-u 0027
मेंsshd_config
के रूप में उल्लेख यहाँ , पर्याप्त नहीं है।
यदि मैं यह पैरामीटर सेट नहीं करता हूं, तो sftp डिफ़ॉल्ट रूप से उपयोग होता है umask 0022
। इसका मतलब है कि अगर मेरे पास दो फाइलें हैं:
-rwxrwxrwx 1 user user 0 2011-01-29 02:04 execute
-rw-rw-rw- 1 user user 0 2011-01-29 02:04 read-write
जब मैं उन्हें गंतव्य मशीन में डालने के लिए sftp का उपयोग करता हूं तो मुझे वास्तव में मिलता है:
-rwxr-xr-x 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
हालाँकि जब मैं गंतव्य मशीन -u 0027
पर सेट होता हूँ तो मुझे sshd_config
वास्तव में मिलता है:
-rwxr--r-- 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
जो अपेक्षित नहीं है, क्योंकि यह वास्तव में होना चाहिए:
-rwxr-x--- 1 user user 0 2011-01-29 02:04 execute
-rw-r----- 1 user user 0 2011-01-29 02:04 read-write
कोई भी समझता है कि ऐसा क्यों होता है?
scp - स्वतंत्र रूप से sftp के लिए सेटअप क्या है , अनुमतियाँ हमेशा होती हैं
umask 0022
। मुझे वर्तमान में यह पता नहीं है कि इसे कैसे बदला जाए।ssh hostname - यहाँ कोई समस्या नहीं है क्योंकि शेल
/etc/profile
डिफ़ॉल्ट रूप से पढ़ता है जिसका मतलबumask 0027
है कि वर्तमान सेटअप।ssh होस्टनाम कार्यक्रम - एससीपी जैसी ही स्थिति ।
संक्षेप में, पर umask की स्थापना sftp
परिणाम बदलती जाती है लेकिन एकदम सही ढंग से नहीं, ssh hostname
उम्मीद पढ़ने के रूप में काम करता है /etc/profile
और दोनों scp
और ssh hostname program
गए हैं लगता है umask 0022
कहीं hardcoded।
उपरोक्त किसी भी बिंदु पर कोई भी जानकारी स्वागत योग्य है।
संपादित करें: मैं उन पैच से बचना चाहूंगा, जिन्हें मैन्युअल रूप से ओपनशेड संकलित करने की आवश्यकता होती है। सिस्टम उबंटू सर्वर 10.04.01 (ल्यूसिड) एलटीएस openssh
को मावरिक से पैकेज के साथ चला रहा है ।
उत्तर: जैसा कि poige द्वारा इंगित किया गया है, pam_umask का उपयोग करके चाल चली गई।
सटीक परिवर्तन थे:
इसमें जोड़ी गई लाइनें /etc/pam.d/sshd
:
# Setting UMASK for all ssh based connections (ssh, sftp, scp)
session optional pam_umask.so umask=0027
इसके अलावा, चाहे वे स्रोत हों /etc/profile
या न हों, सभी लॉगइन शेल को प्रभावित करने के लिए , उसी लाइनों को भी जोड़ा गया था /etc/pam.d/login
।
संपादित करें : कुछ टिप्पणियों के बाद मैंने इस मुद्दे को सेवानिवृत्त किया।
कम से कम उबंटू (जहां मैंने परीक्षण किया) में ऐसा लगता है कि यदि उपयोगकर्ता के पास अपने शेल की इनिट फ़ाइलों (.bashrc, .zshrc, ...) में एक अलग umask सेट है, तो PAM umask को नजरअंदाज कर दिया जाता है और उपयोगकर्ता इसके बजाय उपयोग किए गए umask को परिभाषित करता है। में परिवर्तन /etc/profile
जब तक उपयोगकर्ता स्पष्ट रूप से init फाइल में उन परिवर्तनों के सूत्रों नहीं समझे परिणाम को प्रभावित।
यह इस बिंदु पर स्पष्ट नहीं है यदि यह व्यवहार सभी विकृतियों में होता है।
UsePAM yes
sshd_config है?
/etc/profile
। कुछ इस तरहalias umask=/bin/true