以下是设置:
git
,umask
为022
。git
将文件和文件夹添加到名为htdocs
。htdocs
拥有drwxr-srx
权限(gid设置)并归git:apache
所有htdocs
中已创建的文件和文件夹包含-rw-r--r--
(644)和drwxr-srx
(2775)有时我需要授予Apache对文件夹的写权限:
chmod g+w some-folder
问题在于它失去了gid,所以而不是:
drwxrwsr-x
我明白了:
drwxrwxr-x
当我尝试添加gid时:
chmod g+s some-folder
它没有做任何事情。 some-folder
仍然只有755个权限。
我也尝试手动将其设置为2755:
chmod 2755 some-folder
没有运气。
有没有人对如何保持gid设置有任何想法?
经过几个小时的研究并发现其他用户遇到同样的问题后,@twalberg确定了仅有的两个可用选项。我决定创建一个新组,并在其中放置git和apache。现在git属于那个组,gid仍然存在。
答案 0 :(得分:1)
man 2 chmod
有这样的说法:
If the calling process is not privileged (Linux: does not have the
CAP_FSETID capability), and the group of the file does not match the
effective group ID of the process or one of its supplementary group
IDs, the S_ISGID bit will be turned off, but this will not cause an
error to be returned.
我猜测git
组中不存在apache
,因此当git
更改目录上的模式时,会自动清除setgid位。您可以将git
添加到apache
组,也可以使用特权帐户执行chmod
。