他のユーザーディレクトリからファイルの書き込みと読み取りを生成する機能をユーザーに提供したいのですが、生成後にファイルを削除するオプションはありません(ここでは固定ビットは機能しません...)。たとえば、次のようになります。
manager
ディレクトリにユーザーがいます。記録する必要があるが削除できないファイルがrepository
あります。記録する必要があるが削除できないファイルがあります。記録する必要があるが削除できないファイルがあります。ファイルの削除worker1
/manager/repository
worker2
/manager/repository
worker3
/manager/repository
ただし、worker 1-2-3
ファイルが作成された後は削除できず、生成されたファイルのみを削除manager
できroot
ますworker 1-2-3
。
私は粘着性のあるビットを適用するためのいくつかの技術を試しましたが、成功しませんでしたchown
。chmod
答え1
Windowsとは異なり、Unix / Linuxでは明確な削除権限がありません。ファイルを削除(または作成または名前変更)する権限は、含まれているディレクトリに関連付けられています。ワーカーの書き込み権限を削除し/manager/repository/
て、ワーカーがファイルを作成、削除、名前を変更する機能を拒否します。
ファイルの生成を許可しますが、削除を拒否することはできません。
答え2
まず、システムでACLが有効になっていることを確認してから、このコマンドを実行してください。
setfacl -d -R -m user::rwx,user:worker1:---,user:worker2:---,user:worker3:--- \
/manager/repository
どのように動作しますか?
このコマンドは、ディレクトリ所有者に読み取り、書き込み、および実行権限を付与します
/manager/repository
。worker1
、worker2
およびに対するすべての権限が取り消されますworker3
。これにより、他のユーザーに読み取りおよび書き込みアクセスが提供されますが、削除アクセスは拒否されます。
からman setfacl
:
-d, --default
All operations apply to the Default ACL.
-R, --recursive
Apply operations to all files and directories recursively.
-m, --modify
Options to modify the ACL of a file or directory.
答え3
権限を使用してこれを行うには、NFSv4 ACLに似たACLをサポートするシステムが必要です。たとえば、FreeBSDでこのフラグを使用してファイルシステムをマウントすると、nfsv4acls
次のことができます。
mkdir testdir
chown manager:worker-group testdir
chmod 775 testdir
setfacl -m group@:D::deny testdir
明らかに否定的なdelete_child
グループメンバーに付与された権限worker-group
。
ただし、ワーカーは自分が作成したファイルの所有者になるため、ACLを引き続き変更でき、自分に権限を付与すると、その権限が親ディレクトリの権限delete
よりも優先されます。delete_child
この問題を解決する方法があるかどうかはわかりません(少なくともFreeBSDのUFSファイルシステムでは)。たとえば、次のようにできます。
$ touch file
$ rm -f file
rm: file: Operation not permitted
$ setfacl -m owner@:d::allow file
$ rm -f file
$
答え4
フォルダから書き込み権限を取得してください/manager/repository
。したがって、ルート以外のすべてのユーザーはその中にあるファイルを書き込んだり削除したりできますが、/manager/repository
ディレクトリ内のファイルは削除できません。
chmod 755 /manager/repository