我想设置一个文件夹,以便在其中创建的任何内容(目录、文件)继承默认权限和组。
我们称这个团体为“媒体”。而且,在目录中创建的文件夹/文件应该自动具有 g+rw。
答案1
我找到了:应用默认权限
来自文章:
设置该
setgid
位,以便 <directory> 下的文件/文件夹将使用与 <directory> 相同的组创建chmod g+s <directory>
设置组和其他组的默认 ACL
setfacl -d -m g::rwx /<directory> setfacl -d -m o::rx /<directory>
接下来我们可以验证一下:
getfacl /<directory>
输出:
# 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
答案2
这是对 Chris 答案的补充,它基于我在 Arch Linux 设备上的经验。
使用默认开关 ( -d
) 和修改开关 ( -m
) 将仅修改默认权限,但保留现有权限不变:
setfacl -d -m g::rwx /<directory>
如果您想更改文件夹的整个权限结构,包括现有的权限结构(您必须多做一行并使其递归-R
):
setfacl -R -m g::rwx /<directory>
例子:
# 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
(信用在注释中标记为撤销所有权限行的语法)
答案3
将您自己/登录的用户添加到 www-data 组,以便我们可以使用 www-data 服务器创建的文件
sudo usermod -a -G www-data $USER
需要重启/重新登录以使新添加的组生效
cd /var/www
将 www-data 添加为 html 文件夹的组成员,并将您的用户添加为所有者,因此我们拥有它以及组成员
sudo chown -R $USER:www-data html
将您的用户名替换为 USER
根据需要设置读、写、执行权限,(ugo) u=用户,g=组,o=其他
sudo chmod 750 html
设置html的GID,现在html中新创建的文件将继承所有权权限:
sudo chmod g+s html
这将为 html 目录和子目录中新创建的文件/目录创建默认规则。
sudo setfacl -R -d -m u::rwX -m g::rX -m o::000 html
如果安装了 SELinux,请忽略 www-data 上下文要求,以便允许写入权限
sudo setsebool -P httpd_unified 1
列出目录以查看应用的新权限
ls -ld html
返回这个
drwxrwsr-x+ 3 html www-data
尾随 + 表示在目录上设置了 ACL(访问控制列表)。
参考:链接到论坛
答案4
使用以下命令可以设置文件的默认权限:
chacl -R filename