俺的Linux新事実

自分の無知をさらすようでイヤなんだが、新事実が発覚。ちょっとこいつを見てくれ。

$ touch hoge
$ ls -l
total 0
-rw-r--r--    1 user      user             0 Feb  8 15:44 hoge
$ su
Password:
# chown root:root hoge
# ls -l
total 0
-rw-r--r--    1 root     root            0 Feb  8 15:44 hoge
# exit
exit
$ rm hoge
rm: remove `hoge'? y
$ ls -l
total 0
$
( ゚д゚)

(つд⊂)ゴシゴシ

(;゚д゚)

(つд⊂)ゴシゴシ
  _, ._
(;゚ Д゚)

rootのファイルを一般ユーザが消せているように見えるのだが!?

3つのLinuxディストリビューションで試したが、全てで再現する。どうやら俺のUNIXLinux)に対する理解に根本的な誤りがあるらしい。

で、同僚と共に検討したところ、どうやらそのファイルが存在するディレクトリのパーミッションが関係するらしい。ディレクトリにw権限があれば、その中にあるファイルのオーナーやパーミッションがどうなっていようが削除可能。確かに、上の操作はオーナー自分かつパーミッションが755のディレクトリで実施した。

俺と同僚の他に識者である友人にも尋ねてみたが、やはり驚いていた。そりゃそうだよな、ファイルにパーミッション設定できるんだから、そっちで判断すると思うよな。

UNIXは奥が深い。勉強になりました。