ユーザーのホームディレクトリにあるファイルをそのユーザーが編集できないようにし、ホームディレクトリを編集可能なままにするにはどうすればよいですか。

ユーザーのホームディレクトリにあるファイルをそのユーザーが編集できないようにし、ホームディレクトリを編集可能なままにするにはどうすればよいですか。

私は多くのchmodとchownとそれらの組み合わせを試しました。

私はまだそのユーザーのホームディレクトリにあるファイルをそのユーザーが読み取ることはできますが、書き込みまたは実行は不可能にしたいと思います。しかし、私はまだそのユーザーがユーザーのホームフォルダに書き込むことができるので、ユーザーはフォルダにファイルを追加できますが、これらのコマンドを実行したフォルダ内のファイルを削除することはできません。

より多くのデータ:

  1. このホームディレクトリは暗号化されています。
  2. bashスクリプトに入れることができる限り、私が必要とする解決策が複数行かどうかはあまり気にしません。

ベストアンサー1

私が知っている唯一の方法は、名前が示すように、ファイル属性を変更するchatr(1)を使用することです。

プロパティセクションでは、以下を読むことができます。

「i」属性を持つファイルは変更できません。削除または名前変更できず、ファイルへのリンクを作成できず、ファイルのメタデータのほとんどを変更できず、ファイルを書き込みモードで開くことができません。ユーザーまたは所有者CAP_LINUX_IMMUTABLE機能を持つプロセスのみが、この属性を設定または消去できます。

--実際のケース:

: lsattr example.file
------------------- example.file
: ls -lh example.file 
-rw------- 1 tntx tntx 15 Dec 23 20:43 example.file
: su -
Password:
root@foo: chattr +i example.file
root@foo: exit
logout
: lsattr example.file 
----i-------------- example.file
: cat example.file 
testing chattr
: echo "adding text" >> example.file 
ksh93: example.file: cannot create [Operation not permitted]

Same with vi:
Read-only file, not written; use ! to override.
:w!
Error: example.file: Operation not permitted.

And then trying to mv:
: mv example.file example.file2 
mv: cannot move 'example.file' to 'example.file2': Operation not permitted

What about cp:
: ls -lh example.file*
-rw------- 1 tntx tntx 15 Dec 23 20:43 example.file
-rw------- 1 tntx tntx 15 Dec 23 21:02 example.file2
: /usr/bin/lsattr example.file*
----i-------------- example.file
------------------- example.file2

したがって、ユーザーだけが読み取れるようにファイルをロックできますが、自由に cp(1) して新しいファイルで編集できるため失敗します。

おすすめ記事