问题:每当我在文件夹中写入新文件或修改文件时www
,该文件的权限和所有权都会被重置,有时会导致服务器无法读取我创建的文件。因此,我需要转到终端,设置所有权等,这非常繁琐。
我的www
文件夹可通过 Samba 访问。
每当我向该文件夹写入或修改任何内容时,文件的权限和所有权都会被重置为jay:jay
无法读取apache
。
我在网上查了一下,看到了这个问题.所以我尝试了:
sudo setfacl -Rdm g:apache:rx www
sudo chmod g+s www
现在结果是这样的:
drwxr-sr-x+ 14 jay apache 4096 Aug 15 21:09 www
但现在每当我尝试类似的事情时:
touch somefile.txt
我得到这些设置:
-rw-r--r--+ 1 jay apache 0 Aug 15 23:07 somefile.txt
我以为权限会保留文件夹的权限,不是吗?
就所有权而言,这是可以的,但是权限没有被保留!
- 假设我想让 750 chmod 自动
jay
写入文件夹。我该怎么做? - 我认为小
's'
标记设置组ID? 这是否意味着此文件夹中写入的任何内容都将被赋予该文件夹组的所有权? 为什么它不会影响我的文件?我以为新创建的文件的设置应该与包含文件夹的设置一样
(www)
,rwxr-xr-x
有没有办法简单地撤消
setfacl
?即删除'+'
权限行中的小部分?
我正在运行 Ubuntu 12
答案1
- 一种方法是将
umask
值设置0022
为jay
。什么是“umask”以及它如何工作?umask
您还可以在 Samba 的配置中设置。请参阅如何强制 Samba 共享的群组所有权?举个例子。 - 它确实代表
setgid
。在setgid
文件夹中,创建的文件和文件夹继承组所有权,文件夹继承位setgid
。 - 新创建文件的设置是使用
umask
用户的设置进行的。 - 要重置 ACL,最好的方法是使用 给出的原始 ACL
getfacl
,因为setfacl
有--restore
选项。如果失败,您可以尝试使用 删除所有扩展 ACLsetfacl -b
。
关于sudo
和umask
:根据建筑维基:
Sudo 将会把用户的 umask 值与其自己的 umask(默认为 0022)合并。
这应该没问题(因为用户的 umask0022
也是如此)。