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

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

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

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

答案1

我找到了:应用默认权限

来自文章:

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

    chmod g+s <directory>
    
  2. 设置组和其他组的默认 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

相关内容