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