मैंने FreeBSD पर आश्चर्य व्यवहार (मेरे लिए) अनुमति व्यवहार पर ठोकर खाई है। मान लें कि मैं गैर-रूट उपयोगकर्ता के रूप में काम कर रहा हूं । मैं एक फ़ाइल बनाता हूं, इसकी अनुमति केवल पढ़ने के लिए देता हूं और फिर उसमें लिखने का प्रयास करता हूं:
$ touch f
$ chmod 400 f
$ ls -l f
-r-------- 1 user wheel f
$ echo a >> t
t: Permission denied.
अब तक सब ठीक है। अब मैं रूट के समान करता हूं और यह फाइल में लिखता है:
# ls -l f2
-r-------- 1 root wheel f2
# echo a >> f2
# echo $?
0
क्या यह बग या इच्छित व्यवहार है? क्या मैं सुरक्षित रूप से मान सकता हूं कि यह किसी भी यूनिक्स और लिनक्स पर काम करेगा?
chmodसकता है क्योंकि फ़ाइल में नहीं लिख सकता।
touch somefile; chmod 0000 somefile; chmod 0644 somefileएक सामान्य उपयोगकर्ता के रूप में प्रयास करें।
CAP_DAC_OVERRIDEऐसा कर सकता है। लगभग सभी लिनक्स सिस्टम पर इसका मतलब है कि रूट ऐसा कर सकता है इसलिए यह जानबूझकर है। FreeBSD भाग के लिए बात नहीं कर सकते, लेकिन मुझे लगता है कि वे एक समान सेटअप है।