GNU/Linux >> Linux の 問題 >  >> Linux

所有者にファイルの作成と読み取りを許可しますが、変更または削除は許可しません

bindfs を使用できます いいね:

$ ls -ld dir
drwxr-xr-t 2 stephane stephane 4096 Aug 12 12:28 dir/

そのディレクトリは stephane が所有し、グループ stephane (stephane はその唯一のメンバー) を持っています。 t にも注意してください これにより、ユーザーが所有していないエントリの名前を変更したり、削除したりできなくなります。

$ sudo bindfs -u root -p u=rwD,g=r,dg=rwx,o=rD dir dir

私たちは bindfs dir ファイルとディレクトリの所有権とアクセス許可が固定されています。すべてのファイルは root が所有しているようです (ただし、実際のディレクトリの下では、まだ stephane が所有しています)。

ディレクトリは drwxrwxr-x root stephane を取得します 他のタイプのファイルが -rw-r--r-- root stephane を取得する間、アクセス許可

$ ls -ld dir
drwxrwxr-t   2 root     stephane   4096 Aug 12 12:28 dir

ディレクトリが書き込み可能であるため、ファイルの作成が機能するようになりました:

$ echo test > dir/file
$ ls -ld dir/file
-rw-r--r-- 1 root stephane 5 Aug 12 12:29 dir/file

ただし、2 回目の 書き込み はできません。 open() 権限がないため、そのファイルに:

$ echo test > dir/file
zsh: permission denied: dir/file

(追加は許可されていないことに注意してください (最初の要件の一部ではないため))。

制限:dir ではエントリを削除または名前変更することはできません t のせいで そこに作成する新しいディレクトリには、その t はありません


chattr +a オプションは追加のみを許可します。ファイルはそのように変更できますが、ファイルに追加 (つまり、行を追加) することによってのみ変更できます。既存のファイルを削除することはできませんが、新しいファイルを作成します。これはあなたのニーズに合うかもしれません:

sudo chattr -R +a /dir/to/apply/to

man chattr から

<ブロック引用>

`a' 属性が設定されたファイルは、書き込み用に追加モードでのみ開くことができます。スーパーユーザーまたは CAP_LINUX_IMMUTABLE 機能を持つプロセスのみが、この属性を設定またはクリアできます。

(ディレクトリにも適用されることに注意してください)

リストは次のようになります:

echo hello > test # succeeds, because test doesn't exist, and creation is allowed
echo hello2 > test # fails, because test already exists, and overwriting is not allowed
echo hello3 >> test # succeeds, because appending is allowed
cat test # succeeds, because reads are allowed
rm test # fails, because delete is not allowed

Linux
  1. Linuxで一定時間アクセスされていないファイルを削除する

  2. スクリプトは実行可能であるが読み取り可能ではありませんか?

  3. UNIX ar の例:C アーカイブ ファイル (*.a) を作成、表示、抽出、変更する方法

  1. Linux でルートと同一のユーザーではなく、ほぼルートと同等のユーザーを作成する方法

  2. Qt が Linux のデバッグ/リリース フォルダーに出力ファイルを作成しない

  3. Git リポジトリを削除しますが、すべてのファイルを保持します

  1. ファイル変更時の自動バージョン管理 (変更/作成/削除)

  2. ディレクトリ内の 1000 個を除くすべてのランダム ファイルを削除する

  3. SCP を許可するが、SSH を使用した実際のログインは許可しない