Linux で書き込み権限を付与しながらユーザーがファイル名を変更できないようにする方法

Linux で書き込み権限を付与しながらユーザーがファイル名を変更できないようにする方法

何らかの特別な目的のため、Linux サーバーの非 root ユーザーがファイル名を変更したり、名前を変更したりできないようにしたいと考えています。ただし、ファイルの内容を変更したり、書き込んだりすることはできます。これをコマンド ラインから行う方法。

答え1

ファイルの名前を変更する場合、ファイルへの書き込み権限は関係ありません。ファイルの名前変更は、ファイルではなくディレクトリの変更です。つまり、ディレクトリ エントリを変更して、ファイルを指す別の名前を設定します。

したがって、必要なのはディレクトリの権限を変更することだけです。たとえば、次のようになります。

chown root: .
chmod 755 .

これにより、ユーザーはディレクトリ内のファイルの名前を変更できなくなりますが、ファイルの作成や削除もできなくなります。それでもユーザーがファイルを作成または削除できるようにしたい場合は、代わりにディレクトリを書き込み可能にして、ビットも設定しますt。このビットを設定すると、ユーザー (制限されていないディレクトリの所有者以外) は、自分が所有するファイルのみを削除または名前変更できるようになります。

chown root:people-who-can-create-file-here .
chmod 1775 .
chown root:people-who-can-modify-the-files file1-that-must-not-be-rename ...
chmod 664 file1-that-must-not-be-rename ...

関連情報