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

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

评论

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

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

什么操作系统?需要标签。 setfacl和默认ACL在AIX上不存在。

#1 楼

我发现了它:应用默认权限
从本文:


设置setgid位,以便在下的文件/文件夹将与<目录>
 chmod g+s <directory>
 



为组和其他
设置默认ACL
< pre class =“ lang-bsh prettyprint-override”> 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


评论


是的,有点粘!

– Gabe。
2010年8月27日在15:11

让我们不要将gid与粘性位混淆。

–阿米特·奈杜(Amit Naidu)
13年4月25日在4:51

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

– SteenSchütt
2014年2月12日12:28



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

– sg23
2014年10月21日19:29



您可能要考虑使用“ X”代替,因此它将仅对目录而非文件setfacl -d -m g :: rwX / 设置执行权限。

–阿德里安·古纳万(Adrian Gunawan)
17年8月31日,0:50



#2 楼

这是Chris回答的补充,它是基于我在Arch Linux平台上的经验得出的。
使用默认开关(-d)和Modify开关(-m)只会修改默认权限,而保留现有权限完整:
setfacl -d -m g::rwx /<directory>

如果要更改文件夹的整个权限结构,包括现有的权限结构(您必须做额外的一行,并使用-R使其递归): > eg。
setfacl -R -m g::rwx /<directory>

(CREDIT标记注释中的撤销所有特权行的语法)

评论


撤销组特权(例如):sudo setfacl -d -m g :: --- / path

–markedwhite
17年1月26日在8:53



仅仅是在输入答案中两次指定setfacl -R -m g :: rwx / 的错字?

– Shane Rowatt
17年9月2日在11:05

#3 楼

将您自己/登录的用户添加到www-data组,这样我们就可以处理由www-data服务器创建的文件

sudo usermod -a -G www-data $USER


需要重新启动/重新登录,因此新添加的组会生效
cd /var/www


将用户名替换为USER

根据需要设置读取,写入,执行权限,(ugo)u = user,g = group,o = others

sudo chown -R $USER:www-data html


设置html的GID,现在,在html中新建的文件将继承所有权权限:

sudo chmod 750 html


这将为html目录和子目录中的新创建的文件/目录创建默认规则。

sudo chmod g+s html


如果安装了SELinux,则忽略www-data上下文要求,以便允许写入权限

sudo setfacl -R -d -m u::rwX -m g::rX -m o::000 html


列出目录以查看应用的新权限

sudo setsebool -P httpd_unified 1


返回此

ls -ld html


后缀+表示目录中设置了ACL(访问控制列表)。

参考:链接到论坛

#4 楼

使用以下命令可以设置文件的默认权限:

chacl -R filename


评论


这与其他答案有何不同?并举一些例子

–罗密欧·尼诺夫(Romeo Ninov)
17年7月13日在9:21

您确定这就是它的作用吗? linux.die.net/man/1/chacl表示它将删除ACL。

– Jeff Schaller♦
17年7月13日在10:26