मैं सूडो को 0022 के उमंग के साथ फाइल लिखने के लिए कैसे कहूं?


11

मैं हाल ही में स्नो लेपर्ड में अपग्रेड हुआ हूं। मैंने देखा है कि MacPorts द्वारा लिखी गई कुछ फाइलें गलत अनुमति के साथ स्थापित की गई हैं - वे 0077 के umask के साथ लिखी गई हैं। मुझे लगता है कि मैंने समस्या को कम कर दिया है:

  1. के portमाध्यम से आदेश दिया जाता है sudo
  2. मेरी .bashrcफ़ाइल 0077 का umask निर्दिष्ट करती है।
  3. ओएस एक्स (10.5 और नीचे) के पुराने संस्करणों पर, सुडो ने रूट उपयोगकर्ता के ओमस्क का उपयोग किया (जो 0022 था); हालाँकि, अब यह 0077 के मेरे ओम का उपयोग करता है ।

वहाँ वैसे भी sudoपुराने व्यवहार का उपयोग करने के लिए है ? अभी, यह एक तरह से कष्टप्रद है क्योंकि मुझे sudoसाधारण कमांड चलाने के लिए उपयोग करना होगा port installed, जैसे port outdated, आदि।

(इस MacPorts टिकट में समस्या को और अधिक विस्तार से वर्णित किया गया है ।)

संपादित करें

मैंने umaskसुडो के लिए विकल्प खोजा , और /etc/sudoersमैंने निम्नलिखित पंक्ति जोड़ी:

Defaults umask=0022

हालाँकि, यह वांछित के रूप में कार्य नहीं करता था, क्योंकि वास्तविक umask द्वारा उपयोग किया जाता sudoहै इस डिफ़ॉल्ट मुखौटा के साथ उपयोगकर्ता मुखौटा का संघ है। ओम्स्क के व्यवहार को ओवरराइड करने के लिए sudoऔर सीधे डिफ़ॉल्ट का उपयोग करें (यानी, उपयोगकर्ता और डिफ़ॉल्ट sudo मास्क का मिलन नहीं ), कोई निम्नलिखित जोड़ सकता है:

Defaults umask_override

जवाबों:


7

Mac OS X 10.7 (लायन) में आखिरकार sudo का एक संस्करण है जो umask_override का समर्थन करता है। रिकॉर्ड के लिए, यह मेरे लिए काम करता है:

Defaults umask_override
Defaults umask=0022

1
क्या आप यह कार्य प्रति आदेश के आधार पर कर सकते हैं? मैं सामान्य रूप से 0022 को umask करना चाहता हूं, लेकिन फिर एक ही परिस्थिति में umask 0006 को लागू करना चाहता हूं, लेकिन उपरोक्त उपेक्षा करता है।
माइकल

6

मैंने अपनी .bashrcकॉन्फ़िगरेशन स्क्रिप्ट में निम्नलिखित को जोड़ा :

# Mimic old behavior of `sudo` on OS X Snow Leopard
sudo() {
    old=$(umask)
    umask 0022
    command sudo "$@"
    umask $old
}


2

अपने .bashrc के साथ

if [[ $EUID -eq 0 ]]; then
   umask 0022
else
   umask 0077
fi

2
अच्छा विचार! दुर्भाग्य से, एक छोटी सी जांच से पता चलता है कि स्नो लेपर्ड sudoवास्तव में (फिर से) स्रोत नहीं है .bashrc, लेकिन उस उपयोगकर्ता से वर्तमान सेटिंग को विरासत में मिला है जो कि सूडो को आमंत्रित करता है।
मिपाडी

आपको फ़ंक्शन वर्कअराउंड का उपयोग अन्य उत्तर में सूचीबद्ध करना होगा।
डैरेन हॉल

2

रिकॉर्ड के लिए: एक नए विकल्प 'umask_override' के रूप में sudo का वर्तमान संस्करण, जिसे umask को मर्ज होने से रोकना चाहिए, इसलिए आपको umask को कम करने में सक्षम होना चाहिए। अफसोस की बात है, मैक ओएस एक्स 10.6.6 के लिए sudo के इस संस्करण का खेल नहीं लगता ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.