为目录中的文件设置默认用户名和组

a c*_*der 13 users acl permissions defaults group

使用这篇有用的帖子,我可以在文件夹中设置默认组和文件权限。

我在设置默认所有者 (teamlead 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
Run Code Online (Sandbox Code Playgroud)

接着就,随即:

[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
Run Code Online (Sandbox Code Playgroud)

因此分配了正确的组,但新文件拥有创建文件的用户的所有权。我希望新创建的文件具有 teamlead:web_prod 所有者/组。

似乎setfacl也可以用来设置默认用户。使用现有文件夹 acl config(上图):

[mary@boxen]# setfacl -d -m u:1234:rwx /my/test/folder
Run Code Online (Sandbox Code Playgroud)

现在以不同的用户身份创建一个文件。我希望它拥有 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
Run Code Online (Sandbox Code Playgroud)

新文件仍然拥有创建文件的所有者的所有权,而不是 uid 1234(teamlead)。

我所追求的甚至是可能的,还是我解决这个问题的方式是错误的?

Mic*_*ann 19

使用 setfacl,您可以为新创建的文件设置默认权限,但不能设置默认所有者/组。

要让特定用户拥有新文件,您需要一个 setuid 位,其作用类似于目录上的 setgid 位。不幸的是,这没有实施。

使用 setfacl,您可以做一些在大多数情况下几乎等效的事情:您可以设置 ACL 之类的default:user:teamlead:rwx(例如setfacl -d -m u:teamlead:rwx foo)。这样指定的用户可以写入新文件,即使其他人拥有它。

  • 请使用命令更新此答案以将 'default:user:teamlead:rwx' 应用于目录 '/foo' (2认同)

Gil*_*il' 11

始终创建一个新文件,该文件属于正在运行创建文件的进程的用户。(准确地说是有效用户 ID。)这不能改变,因为允许用户创建属于其他用户的文件将是安全漏洞,类似于允许非 root 用户放弃文件

无论你想做什么,你都不需要这样做。ACL 足以确保以后需要读取文件的任何内容都具有足够的权限。保留创建它的用户拥有的文件。


jir*_*rib -1

在 Linux 上,您必须在父目录上具有 sgid 才能继承文件组。(尽管 BSD 系统上的目录不需要 sgid。)