グループメンバーとして書き込み権限があるファイルを削除できません。


12
$ touch testfile
$ chmod g+w testfile
$ sudo adduser user2 user1
$ stat -c'%a %A' testfile
664 -rw-rw-r--
$ su user2
Password: 
$ groups
user2 user1
$ rm testfile 
rm: cannot remove `testfile': Permission denied

何が欠けている?

回答:


21

ファイルを削除するとは、ファイル自体ではなく、ファイルが存在するディレクトリに変更を加えることを意味します。ファイルを削除するには、グループのディレクトリにrwが必要です。ファイルのアクセス許可は、ファイル自体に変更を加えるためだけのものです。

これは、ファイルシステムがどのように機能するかを考えるまで、最初は混乱するように見えるかもしれません。ファイルは単なるiノードであり、ディレクトリはiノードを参照します。削除することにより、ディレクトリ内のそのファイルのiノードへの参照を削除するだけです。したがって、ファイルではなくディレクトリを変更しています。別のディレクトリにあるそのファイルへのハードリンクがあり、実際にファイル自体を変更せずに最初のディレクトリから削除することができますが、それは別のディレクトリに存在します。


775 drwxrwxr-xディレクトリを取得します。
シェパン

1
ディレクトリのグループ所有権は何ですか?あなたが言及した2番目の7は、ユーザーのグループではなく、ディレクトリのグループが持っている許可であることを忘れないでください。
jsbillings

1
ls -ld /path/to/directoryまたは、単にls -ld .そのディレクトリにcdした場合。
jsbillings

1
なんらかの理由で、statはグループID 1002を検索できません。statは/ etc / group、NIS、LDAPなどでグループIDを検索しますが、エラーが発生しているため、UNKNOWNが表示されています。実行getent group 1002して、より詳細なエラーが発生するかどうかを確認します。
jsbillings

1
実際、この振る舞いはまったく混乱しているとは思いません。これは、実際の「実際の」ディレクトリが機能する方法と同じです。そのため、たとえば「フォルダ」ではなく「ディレクトリ」と呼ばれ、まったく異なる動作をします。電話帳から誰かを削除したい場合、私は彼女の家に行って彼女を殺すことはせず、単にペンを取り、彼女の番号を打ちます。IOW:ディレクトリへの書き込みアクセスが必要で、彼女へのアクセスは必要ありません。Windowsにはフォルダがあり、Unixにはディレクトリがあり、どちらも実際の対応物のように動作します。混同するのは、それらを混同する場合のみです。
ヨルグWミットタグ

0

ファイルを削除できるのは、参照がない場合のみです。単なるユーザーはファイルのリンクを解除する、つまりディレクトリから削除することしかできません。ディレクトリからファイルのリンクを解除するには、ディレクトリへの書き込みアクセスが必要です。ファイルのリンクを解除してもファイルは変更されないため、ファイルへの書き込みアクセスは無関係です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.