使用これ便利な投稿フォルダにデフォルトのグループとファイル権限を設定できます。
デフォルトの所有者(チームリードuid 1234)の設定に問題があります。
setfacl -d -m g::rwx /my/test/folder
setfacl -d -m o::rx /my/test/folder
getfacl /my/test/folder
# file: /my/test/folder
# owner: teamlead
# group: web_prod
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
その後すぐに:
[mary@boxen]# touch /my/test/folder/somefile
[mary@boxen]# ll /my/test/folder/somefile
-rw-rw-r--. 1 mary web_prod 0 Nov 6 08:58 somefile
したがって、正しいグループが割り当てられますが、新しいファイルにはそのファイルを作成したユーザーの所有権があります。新しく作成されたファイルにteamlead:web_prodの所有者/グループを含めたいと思います。
setfacl
デフォルトのユーザー設定にも効果があるようです。既存のフォルダacl構成を使用する(上記):
[mary@boxen]# setfacl -d -m u:1234:rwx /my/test/folder
次に、別のユーザーとしてファイルを生成します。 teamlead:web_prodの所有権を持ちたいです。
[mary@boxen]# touch /my/test/folder/anotherfile
[mary@boxen]# ll /my/test/folder/anotherfile
-rw-rw-r--+ 1 mary web_prod 0 Nov 6 08:58 somefile
新しいファイルには、uid 1234(チームリーダー)ではなく、そのファイルを作成した所有者の所有権があります。
私が追求することは可能ですか、それともこの問題にアプローチするのが間違っていますか?
答え1
setfaclを使用すると、新しく作成されたファイルのデフォルト権限を設定できますが、デフォルトの所有者/グループは設定できません。
特定のユーザーが所有する新しいファイルを作成するには、ディレクトリのsetgidビットのように動作するsetuidビットが必要です。残念ながら、これは実装されていません。
setfaclを使用すると、ほとんどの場合、ほぼ同じことができます。たとえば、ACLを設定できますdefault:user:teamlead:rwx
(例setfacl -d -m u:teamlead:rwx foo
:)。これにより、他の人がファイルを所有していても、指定したユーザーが新しいファイルに書き込むことができます。
答え2
ファイルを作成したプロセスが実行されているユーザーに属する新しいファイルは常に作成されます。 (正確には有効なユーザーIDです。)ユーザーが他のユーザーに属するファイルを生成できるようにすると、次のようなセキュリティ脆弱性が発生するため、変更できません。root以外のユーザーがファイルを漏洩させる。
何をしたい場合でもこれを行う必要はありません。 ACLは、後でファイルを読み取る必要がある人が十分な権限を持っていることを保証するのに十分です。ファイルを作成したユーザーの所有としてファイルを残します。
答え3
新しいグループを使用して新しいファイルを作成するには、デフォルトグループを変更する必要があります。
これには、次のものを使用できます。ユーザーモードそしてパラメータ-g
-g, --gid GROUP The group name or number of the user's new initial login group. The group must exist. Any file from the user's home directory owned by the previous primary group of the user will be owned by this new group. The group ownership of files outside of the user's home directory must be fixed manually.
例えば
test2@kinakuta:/tmp$ id
uid=1002(test2) gid=1002(test2) grupos=1002(test2),1003(testgroup)
test2@kinakuta:/tmp$ touch test2
test2@kinakuta:/tmp$ ls -la test2
-rw-r--r-- 1 test2 test2 0 nov 23 22:26 test2
root@kinakuta:/tmp# usermod -g testgroup test2
root@kinakuta:/tmp# su test2
test2@kinakuta:/tmp$ touch test2_1
test2@kinakuta:/tmp$ ls -la test2_1
-rw-r--r-- 1 test2 testgroup 0 nov 23 22:27 test2_1
答え4
Linuxでは、ファイルグループを継承するには、親ディレクトリにsgidが必要です。 (BSDシステムのディレクトリにsgidは必要ありませんが)