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


254

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

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


1
这不是由用户创建新文件/文件夹及其umask来控制的吗?
Wadih M.

umask确实与权限有关,但我不认为它会设置默认用户(不是他/她自己)来做任何事情。
克里斯(Chris)2010年

1
什么操作系统?需要标签。setfacl并且默认ACL在AIX上不存在。
阿米特·奈杜

Answers:


269

我发现了:应用默认权限

从文章:

chmod g+s <directory>  //set gid 
setfacl -d -m g::rwx /<directory>  //set group to rwx default 
setfacl -d -m o::rx /<directory>   //set other

接下来我们可以验证:

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

5
是的,有点粘!
gabe。

22
让我们不要将粘性与粘性混淆。
阿米特·奈杜

10
g + s将确保目录中的新内容将继承组的所有权。setfacl仅更改chmod,在您的情况下将权限设置为o = rx
SteenSchütt2014年

10
请注意,必须启用ACL(已包含在已安装文件系统的安装选项之一中),才能继承文件权限。
sg23 2014年

11
您可能要考虑使用'X'代替,因此它将仅对目录而非文件设置执行权限setfacl -d -m g::rwX /<directory>
Adrian Gunawan

27

这是克里斯回答的补充,它是基于我在Arch Linux设备上的经验得出的。

使用默认开关(-d)和修改开关(-m)只会修改默认权限,而完整保留现有权限:

setfacl -d -m g::rwx /<directory>

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

setfacl -R -m g::rwx /<directory>

例如。

setfacl -R -m g::rwx /home/limited.users/<directory> // gives group read,write,exec permissions for currently existing files and folders, recursively
setfacl -R -m o::x /home/limited.users/<directory> //revokes read and write permission for everyone else in existing folder and subfolders 
setfacl -R -d -m g::rwx /home/limited.users/<directory> // gives group rwx permissions by default, recursively
setfacl -R -d -m o::--- /home/limited.users/<directory> //revokes read, write and execute permissions for everyone else. 

CREDIT在评论markdwite为撤销所有特权线的synthax)


2
要撤消组特权(例如):sudo setfacl -d -mg :: --- / path
markdwhite

1
只是错字setfacl -R -m g::rwx /<directory>在您的答案中指定了两次?
Shane Rowatt

0

将您自己/登录的用户添加到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(访问控制列表)。

参考链接到论坛


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.