ユーザーに[重複]に書き込む権限がないファイルを削除するロジック

ユーザーに[重複]に書き込む権限がないファイルを削除するロジック

書き込み権限なしでホームディレクトリにファイルを作成する場合:

$ umask 777; touch testfile
$ ls -ln testfile
---------- 1 1000 1000 0 2014-03-21 16:52 testfile
$

..これにより、ファイルを簡単に削除できます。

$ rm -fv testfile
removed `testfile'
$ 

書き込み権限がないディレクトリに書き込み権限なしでファイルを作成すると、そのファイルを削除できません。

$ ls -lnd /var/
drwxr-xr-x 14 0 0 4096 2014-03-21 17:04 /var/
$ ls -ln /var/testfile
---------- 1 1000 1000 0 2014-03-21 17:04 /var/testfile
$ rm -vf /var/testfile 
rm: cannot remove `/var/testfile': Permission denied
$ 

書き込み権限が親ディレクトリから継承されるのは正しいですか?読み取りおよび実行権限も同じですか?

答え1

いいえ、権限はこの方法で継承されません。理由は少し異なります。ファイルの削除はファイルに書き込むとは見なされず、ディレクトリに書き込むと見なされます。そのため、ファイルに対する権限がなくてもファイルを削除できます。コンテンツ

ファイル全体の削除は、ファイルの編集と基本的に異なると見なされます。ディレクトリへの書き込み権限を持たないファイルに対してできる最善の方法は、内容を空にすることです。ただし、ディレクトリエントリを削除することはできません。

答え2

ファイル削除機能は、ファイルに対する実際の権限とは何の関係もありません。このファイルを含むディレクトリの権限。

はい

$ whoami
saml

$ ll -d adir/
drwxrwxr-x. 2 samtest samtest 60 Mar 21 14:35 adir/

$ rm adir/afile 
rm: remove write-protected regular empty file ‘adir/afile’? y
rm: cannot remove ‘adir/afile’: Permission denied

しかし、ユーザーsamladir

$ sudo chmod o+w adir/

これでそのユーザーが削除しようとすると、次のことが適用されますafile

$ rm adir/afile 
rm: remove write-protected regular empty file ‘adir/afile’? y

$ ll adir/
total 0

したがって、ファイルの読み取り/書き込み/実行機能は、その属性を介してファイル自体に属することに注意してください。ただし、ディレクトリからファイルを削除する機能は、ファイルを含むディレクトリの権限によって制御されます。

答え3

権限は継承されません。ディレクトリに入ると、ファイルはすべての権限または所有権を持つことができます。たとえば、2 つのフォルダーの深さのファイルに対する完全な権限がありますが、ディレクトリに入る権限がない場合があります。ディレクトリへの書き込み権限はファイルのリスト(ファイルの移動/削除/作成)を変更できますが、ファイルの内容を変更することは異なります。ディレクトリに対する読み取り権限を使用すると、ファイルのリストを読み取ることができます(run ls)。ディレクトリに対する実行権限は、そのcdディレクトリに入ることができることを意味します。

たとえば、ディレクトリに対する「wx」権限がある場合は、ファイルを作成または削除でき、その中にディレクトリを入力できますが、その内容を一覧表示することはできません(つまり、bashのタブ補完が機能しないことを意味します) )。ただし、サブフォルダの権限が許可されている場合は、サブフォルダの内容を一覧表示できます。

例外は固定ビットです。固定ビットは、設定時にビットが設定されたディレクトリ内のファイルで実行できる操作を制限します。 (chmod 1???、ここで???は一般権限(例:755))が設定されている場合、権限がない人はファイルを削除できません。所有者書き込み権限がある場合でも、ファイルまたはインクルードディレクトリに対する権限です。これはいくつかの目的に役立ちます(たとえば、/tmp/ディレクトリはしばしばこのように表示されます。誰もがディレクトリに書き込むことができますが、自分に属していないものに触れることはできません)。

答え4

ディレクトリを「ディレクトリ」と呼ぶ理由は次のとおりです。正確に実際のディレクトリと同じです。電話アドレス帳から誰かを削除するには、その人ではなく電話アドレス帳にのみアクセスできます。 (これは「フォルダ」と同じではありません。フォルダからドキュメントを削除するには、フォルダとドキュメントの両方へのアクセス権が必要です。)

関連情報