ユーザーがグループを介してファイルへの読み取りアクセス権しか持っていない場合でも、グループ内のユーザーはファイルを削除できます。

ユーザーがグループを介してファイルへの読み取りアクセス権しか持っていない場合でも、グループ内のユーザーはファイルを削除できます。

次の権限を持つディレクトリがあります。

drwxrwsr-x 3 john ro 20K Jun 20 14:48 logs

私はjohnとしてログインし、ログ内の新しいファイルをタッチしました。

-rw-r--r-- 1 john ro 0 Jun 20 14:48 d

私が理解しているように、この場合、ジョンだけがファイルdを削除できるはずです。 roグループを持つ他のユーザーはグループ読み取り権限のみを持っているため、ファイルを削除できません。しかし、グループroの他のアカウントを使用して削除しようとすると、ファイルが削除されます!

mathew@ip-10-0-0-148:/mnt/custom/ops/logs$ ls -lrth d
-rw-r--r-- 1 john ro 0 Jun 20 14:48 d
mathew@ip-10-0-0-148:/mnt/custom/ops/logs$ rm d
rm: remove write-protected regular empty file 'd'? yes
mathew@ip-10-0-0-148:/mnt/custom/ops/logs$ ls -lrth d
ls: cannot access 'd': No such file or directory

これは奇妙に見えます!グループメンバーがファイルを読み取ることはできますが、削除できないようにしたいと思います。私は何を見逃していますか?

答え1

ファイルを削除するのではなく、ディレクトリからそのエントリを削除することです。これを行うには、ディレクトリ書き込み権限が必要です。 (この権限はあなたの例に存在します)。

粘着性のある部分を見たいかもしれません。これをディレクトリに適用しますchmod +t …/logs/d。これにより、所有者(およびCAP_DAC_OVERRIDE権限を持つユーザーroot)のみがディレクトリからファイルを削除できます。

ファイルにディレクトリエントリがなく、どのプロセスでも開かれていない場合は削除されます。

答え2

このroグループにはディレクトリに対するフルアクセス権があります。つまり、そのメンバーは、所有権やファイル権限に関係なく、その中のファイルまたはディレクトリを削除または変更できます。

グループメンバーのみがそのファイルを読み取ることができるようにするには、グループを変更するか、johnグループの書き込み権限を削除します。このディレクトリを含むディレクトリでタスクの1つを実行しますlogs

chown :john logs

chmod 755 logs

書き込み権限を削除するには、2番目のコマンドを使用することをお勧めします。

関連情報