私はFreeBSDで(私に)驚くべきライセンス動作を偶然発見しました。活動しているとしましょうルートではないユーザー。ファイルを作成し、その権限を読み取り専用に設定してから書き込みを試みます。
$ touch f
$ chmod 400 f
$ ls -l f
-r-------- 1 user wheel f
$ echo a >> t
t: Permission denied.
今まではそんなに良くなった。これでrootと同じことを行い、それをファイルに書き込みます。
# ls -l f2
-r-------- 1 root wheel f2
# echo a >> f2
# echo $?
0
これはバグですか、それとも予想される動作ですか?これはすべてのUnixとLinuxで動作すると安全に仮定できますか?
ベストアンサー1
root
このように権限をオーバーライドできるのは一般的です。
別の例は、root
読み取りアクセスなしでファイルを読み取ることができることです。
$ echo hello > tst
$ chmod 0 tst
$ ls -l tst
---------- 1 sweh sweh 6 Aug 16 15:46 tst
$ cat tst
cat: tst: Permission denied
$ sudo cat tst
hello
一部のシステムにはこの概念があります。不変文書。たとえば、FreeBSDの場合:
# ls -l tst
-rw-r--r-- 1 sweh sweh 6 Aug 16 15:50 tst
# chflags simmutable tst
# echo there >> tst
tst: Operation not permitted.
今はファイルに書き込むことはできませんroot
。しかしroot
もちろん削除するバナー:
# chflags nosimmutable tst
# echo there >> tst
# cat tst
hello
there
FreeBSDを使用すると、さらに一歩進んでカーネルフラグを設定してroot
フラグの削除を防ぐことができます。
# chflags simmutable tst
# sysctl kern.securelevel=1
kern.securelevel: -1 -> 1
# chflags nosimmutable tst
chflags: tst: Operation not permitted
これで誰もroot
このファイルを変更できません。
(セキュリティレベルを下げるにはシステムを再起動する必要があります。)