ルート権限なしでファイルの所有者を変更する

ルート権限なしでファイルの所有者を変更する

666 権限のログ ファイルがあり、その所有者が alice であるとします。この場合、ユーザー 'bob' は次のようにしてその所有者を変更できます。

cp log log.temp; rm log; mv log.temp log

では、このリスクをどう修正すればよいのでしょうか?

答え1

Andrey が上で述べているように、bob はファイルを含むディレクトリに対する権限を持っている場合にのみ、あなたが指示したことを実行できます。bob がアクセスできるようにしたいが、新しいファイルを作成できないようにしたい場合は、ディレクトリの権限を xx5 に変更するだけです。

からUNIX 権限の理解

ファイルとフォルダに対するアクセス権限は、ユーザーの視点から見ると異なる意味を持ちます。

ファイルの場合

  • 読む: ファイルの内容が読み取れる場合
  • 書く:ユーザーまたはプロセスがファイルに書き込むことができる場合(内容を変更できる場合)
  • 実行する:ファイルが実行できる場合

ディレクトリの場合

  • 読む:ディレクトリリストを取得できる場合
  • 書く:ユーザーまたはプロセスが何らかの方法でディレクトリの内容を変更できる場合: ディレクトリ内の新しいファイルを作成するか、既存のファイルを削除するか、ファイルの名前を変更します。
  • 実行する:ユーザーまたはプロセスがディレクトリにアクセスできる場合、つまりそのディレクトリに移動する(現在の作業ディレクトリにする)

答え2

OP が alice と bob にログ ディレクトリへの書き込み権限を与える正当な理由があると仮定すると、別の答えは次のようになります。

chmod og+t directorypath

問題は、ユーザーがログ ファイルを読み取れることや、同じディレクトリに新しいファイルを作成できることではなく、既存のログ ファイルを移動したり削除したりできることです。

+tディレクトリ内のファイルの移動と削除を、ファイルの所有者 (ルートを除く) のみに制限します。

dir はこのように/tmp 動作します。

関連情報