यदि मैं एक फ़ाइल को एक अनपेक्षित उपयोगकर्ता के रूप में बनाता हूं, और अनुमतियों के मोड को 400इसमें बदल देता हूं , तो यह उस उपयोगकर्ता द्वारा केवल पढ़ने के लिए, सही तरीके से देखा जाता है:
$ touch somefile
$ chmod 400 somefile
$ [ -w somefile ] && echo rw || echo ro
ro
सब ठीक हैं।
लेकिन फिर रूट साथ आता है:
# [ -w somefile ] && echo rw || echo ro
rw
क्या बिल्ली है? ज़रूर, रूट केवल पढ़ने के लिए फ़ाइलें लिख सकता है, लेकिन इसे इसकी आदत नहीं बनानी चाहिए: सर्वश्रेष्ठ अभ्यास यह निर्धारित करने की कोशिश करेगा कि मुझे लिखने की अनुमति बिट के लिए परीक्षण करने में सक्षम होना चाहिए, और यदि यह नहीं है, तो इसे सेट किया गया था इस कारण से।
मुझे लगता है कि मैं दोनों को समझना चाहता हूं कि ऐसा क्यों हो रहा है, और किसी फ़ाइल का परीक्षण करते समय मुझे गलत रिटर्न कोड कैसे मिल सकता है जिसमें राइट बिट सेट नहीं है?
/etc/dhcp/dhcpd.conf, जो रूट के स्वामित्व में है। मैं विक्रेता-आपूर्ति का उपयोग कर रहा हूं dhcpd। कुल आपदा, हुह? फ़ाइल को आरसीएस में जांचा जाता है, मैं इसका उपयोग स्वचालित कर रहा हूं rcsdiff, ciऔर coक्योंकि हमारे पास ऐसे ऑपरेटर हैं जिन्हें ... संचालित करने की आवश्यकता है। अनुमति बिट चेक ( -wजैसा कि विस्तृत रूप से test(1)) विफलता की पहली पंक्ति होने जा रही थी, इस आधार पर काम करना कि ci -uएक फ़ाइल केवल-पढ़ने के लिए छोड़ देती है। मैं उसे खाई और सीधे जा रहा हूँ rcsdiff -qऔर जाँच कर रहा हूँ $?। निर्विवाद dhcpd? यह स्वामित्व में होगा dhcpd।
bashऔर testवो क्या है विश्वास करने के लिए मुझे नेतृत्व [ -wके लिए है।
4.1.2(1)-release) और RHEL7 (4.2.46(2)-release) का उपयोग कर रहा हूँ ।