所有者はファイルを作成して読み取ることができますが、変更または削除することはできません。

所有者はファイルを作成して読み取ることができますが、変更または削除することはできません。

ユーザーに特定のディレクトリでファイルを作成および読み取る権限を付与したいが、ファイルを変更または削除することはできません。ユーザーがファイルに追加できる場合は問題ありませんが、私はそうしない方が良いです。これはUbuntu Linuxにあります。

標準のUnixファイル権限ではこれはできないようですが、ACLを使用することは可能でしょうか?ユーザーは常にSFTPを使用して接続するので(OS権限ではなく)、SFTPでこれを制御する方法がある場合は問題ありません。

確実にするために、以下が欲しいです。

  • echo hello> test#成功、テストが存在しないため、生成が許可されます。
  • echo hello >>テスト#は、追加の許可によって成功または失敗する可能性があります。
  • echo hello2> test#テストがすでに存在し、変更が許可されていないため失敗しました。
  • catテスト#読み取りが許可されているため成功しました。
  • 削除が許可されていないため、rmテスト#失敗

なぜこれが起こっているのか疑問に思うなら、Duplicatiバックアップシステムをランサムウェアに耐えることができます。

ベストアンサー1

次のように使用できます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

しかし、二度とはできません。書く open()権限がないため、このファイルには次の操作を行います。

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

(ここでは追加は許可されていません(初期要件の一部ではありません)。)

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

おすすめ記事