设置Apache用户的umask
我正在设置一个LAMP服务器,并希望将Apache的umask设置设置为002,以便所有Apache创build的文件都具有设置的组写入权限位(因此同一组的成员可以覆盖文件)。
有谁知道如何做到这一点? 我知道在Ubuntu上,可以使用/ etc / apache2 / envvars文件来configurationumask,但服务器正在运行CentOS。
更新这个问题涉及到我刚才问的另一个问题( Linux用户和组为一个LAMP服务器 )。 如果你喜欢,请更新这个问题,使用最好的设置是让一个开发者用户在一个可以编辑由apache用户创build的文件的服务器上使用。
Apache从其父进程(即启动Apache的进程)inheritance它的umask
; 这通常应该是/etc/init.d/
脚本。 因此,在该脚本中放置一个umask
命令。
对于CentOS和其他Red Hat发行版,将umask设置添加到/ etc / sysconfig / httpd并重新启动apache。
[root〜] $ echo“umask 002”>> / etc / sysconfig / httpd [root〜] $ service httpd restart
更多信息: Apache2 umask | MDLog:/系统pipe理员
对于Debian和Ubuntu系统,您可以编辑/etc/apache2/envvars
。
这是Googlesearch“CentOS 7 apache umask”search结果的第一个结果,所以我将分享我需要做的工作来使CentOS 7得到这个工作。
在CentOS 7中, echo "umask 002" >> /etc/sysconfig/httpd
-method并不适用于我。
我通过创build一个文件夹/etc/systemd/system/httpd.service.d
覆盖了systemd启动文件,并在那里创build了一个带有行的文件umask.conf :
[Service] UMask=0007
启动,它为我工作。
给/etc/apache2/envvars
添加一个umask
命令对我来说似乎不是一个好主意,不仅仅是因为文件的名字(仅提及variables),而且是基于这个文件中的注释:
# Since there is no sane way to get the parsed apache2 config in scripts, some # settings are defined via environment variables and then used in apache2ctl, # /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
这表明/etc/apache2/envvars
可能由任何执行Apache相关任务的脚本提供,并且更改这些(未知的)脚本的umask是相当危险的。
另一方面,如果想改变Apache的umask目标放宽由mod_dav
创build的文件的权限,你应该考虑DAV的仓库被认为是Apache的私有,并让其他进程访问这些文件可能会导致各种isses(包括腐败) 。
在Debian中,为Apache设置umask的另一个地方是/ etc / default / apache2。 在这个文件的末尾只有这行:umask 0002
对于Ubuntu有工具svnwrap
- 安装
sudo apt-get install subversion-tools
- 用svnwrap包装svn和svnserve:
sudo ln -s /usr/bin/svnwrap /usr/local/bin/svn
sudo ln -s /usr/bin/svnwrap /usr/local/bin/svnserve
在这之后,所有使用file://,svn + ssh://和http://协议的svn操作都将使用umask 002
添加由罗蒂/蜘蛛侠为CentOS7的答案:而不是改变后的“启动”,这些命令可以使用:
systemctl daemon-reload service httpd restart
你可能想要做的是在你的CGI正在处理的目录上设置组sticky bit( SetGID
)位:
chgrp mygroup dir chmod g+s dir
确保当你这样做(用户)apache在mygroup
组(在/etc/group
),所以它将有权限。
这将使得在该目录下创build的任何文件将与目录所属的组相同。
这比为apache可能运行的每个cgi脚本设置全局umask更安全。
(这是git-http-backend
通常从Apache运行的方式)。
通常不推荐从“尝试和真正的Apache方式”中转移。 很多时间和艰苦的经验已经进入了这样的事情的select。