次の権限を持つディレクトリがあります。
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番目のコマンドを使用することをお勧めします。