web-dev-qa-db-ja.com

ソースファイルへの書き込み権限のないmvファイル

自分が所有しておらず、書き込み権限も持たないファイルを移動できることに気づきました。私はディレクトリへの書き込み権限を持っているので、それを移動できる理由だと思いますが、この場合、ソースファイルを保護する方法はありますか?

ファイルの権限は次のとおりです。

cgi-bin> ls -al 

drwxrwxrwx   3 voyager  endeavor     512 Feb  1 10:45 .
drwxrwxrwx   6 voyager  endeavor     512 Feb  1 09:38 ..
-rwxr-xr-x   1 voyager  endeavor   22374 Feb  1 10:45 webvoyage_link.cgi

cgi-bin> whoami
moorc

cgi-bin> groups
lrsn endeavor

cgi-bin> rm webvoyage_link.cgi
rm: webvoyage_link.cgi: override protection 755 (yes/no)? yes

この最後のものは私にとって大きな驚きです。アクセスできないファイルを削除するにはどうすればよいですか。明らかに私が欠けているものがあります。

6
Mr Moose

移動(mv)は、アクセス許可に関する限り、基本的に属性を保持するコピーとそれに続く削除(rm)です。1 ファイルのリンクを解除または削除するとは、ファイルを含むディレクトリからそのディレクトリエントリを削除することを意味します。ファイル自体ではなくディレクトリに書き込んでいるため、ファイルに書き込み権限は必要ありません。

ほとんどのシステムは、ディレクトリ(chmod +t dir/)のスティッキービットのセマンティクスをサポートしています。これを設定すると、ファイル所有者はそのディレクトリ内のファイルのみを削除できます。 cgi-bin/にスティッキービットを設定すると、moorcvoyagerに属するcgi-bin内のファイルのリンクを解除できなくなります。

1一般に、宛先がソースと同じファイルシステムにある場合、物理コピーはありません。代わりに、宛先ディレクトリ内のファイルへの新しいリンクが作成されますが、ファイル自体は変更されないという同じ一般的な概念が保持されます。

詳細については、これを参照してください 記事では、ファイルとディレクトリのアクセス許可(スティッキービットを含む)がシステムコールにどのように影響するかを説明しています追記

このサイトの別の質問で、 コメント by @ JorgWMittag で本当に気に入った面白いアナロジーに出くわしました。

抜粋

これは、実際の「実際の」ディレクトリの動作と同じです。そのため、「ディレクトリ」と呼ばれ、たとえば「フォルダ」とはまったく異なる動作をします。電話帳から誰かを削除したい場合、私は彼女の家に行って彼女を殺すのではなく、単にペンを持って彼女の番号を打ち消します。 IOW:ディレクトリへの書き込みアクセス権が必要ですが、彼女へのアクセス権は必要ありません。

ファイルシステムの実装がファイルを指すディレクトリエントリの数がゼロになり、すべてが開いたときにファイルのディスクブロックを自動的に解放する状況を説明する効果的な方法がないため、それを引き伸ばそうとすると、アナロジーは少し壊れます。ハンドルが閉じています。

13
jw013