如何为目录中的所有文件夹/文件设置默认文件权限?

Chr*_*ris 314 linux permissions directory

我想设置一个文件夹,以便在其中创建的任何内容(目录、文件)继承默认权限和组。

让我们称该组为“媒体”。而且,在目录中创建的文件夹/文件应该自动具有 g+rw。

Chr*_*ris 337

我找到了:应用默认权限

从文章:

  1. 设置setgid位,以便 <directory> 下的文件/文件夹将创建与 <directory> 相同的组

    chmod g+s <directory>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 为组和其他设置默认 ACL

    setfacl -d -m g::rwx /<directory>
    setfacl -d -m o::rx /<directory>
    
    Run Code Online (Sandbox Code Playgroud)

接下来我们可以验证:

getfacl /<directory>
Run Code Online (Sandbox Code Playgroud)

输出:

# file: ../<directory>/
# owner: <user>
# group: media
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
Run Code Online (Sandbox Code Playgroud)

  • 不要将 gid 与粘性位混淆。 (35认同)
  • 您可能需要考虑使用 'X' 来代替它,这样它只会对目录而不是文件设置执行权限 `setfacl -d -mg::rwX /&lt;directory&gt;` (29认同)
  • 请注意,必须启用 ACL(作为已挂载文件系统的挂载选项之一包括在内)才能继承文件权限。 (12认同)
  • g+s 将确保目录中的新内容将继承组所有权。setfacl 仅更改 chmod,在您的情况下将权限设置为 o=rx (10认同)
  • 耶! (5认同)
  • @gabe `s` 代表 `set-user-ID` 或 `set-group-ID`,`t` 是粘性位。 (3认同)

the*_*les 35

这是对 Chris 回答的补充,它基于我在 Arch Linux 装备上的经验。

使用默认开关 ( -d) 和修改开关 ( -m) 只会修改默认权限,但保持现有权限不变:

setfacl -d -m g::rwx /<directory>
Run Code Online (Sandbox Code Playgroud)

如果您想更改文件夹的整个权限结构,包括现有的权限结构(您必须多做一行并使其递归-R):

setfacl -R -m g::rwx /<directory>
Run Code Online (Sandbox Code Playgroud)

例子

# Gives group read,write,exec permissions for currently existing files and
# folders, recursively.
setfacl -R -m g::rwx /home/limited.users/directory 

# Revokes read and write permission for everyone else in existing folder and
# subfolders.
setfacl -R -m o::x /home/limited.users/directory  

# Gives group rwx permissions by default, recursively.
setfacl -R -d -m g::rwx /home/limited.users/directory

# Revokes read, write and execute permissions for everyone else. 
setfacl -R -d -m o::--- /home/limited.users/directory
Run Code Online (Sandbox Code Playgroud)

信用在注释中标记为撤销所有权限行的语法)

  • 撤销组权限(例如): sudo setfacl -d -mg::--- /path (3认同)
  • 这只是在你的答案中两次指定 `setfacl -R -mg::rwx /&lt;directory&gt;` 的错字吗? (2认同)