我正在设置一个LAMP服务器,并希望将Apache的umask设置设置为002,以便所有Apache创建的文件都设置了组写权限位(因此同一组的成员可以覆盖这些文件)。
有谁知道怎么做?我知道在Ubuntu上,您可以使用/ etc / apache2 / envvars文件来配置umask,但服务器正在运行CentOS。
更新 这个问题与我刚才提到的另一个问题有关(Linux users and groups for a LAMP server)。如果愿意,请更新另一个问题,以了解在服务器上拥有可编辑apache用户创建的文件的开发人员用户所需的最佳设置。
答案 0 :(得分:112)
对于CentOS和其他Red Hat发行版,将umask设置添加到/ etc / sysconfig / httpd并重启apache。
[root ~]$ echo "umask 002" >> /etc/sysconfig/httpd [root ~]$ service httpd restart
更多信息:Apache2 umask | MDLog:/sysadmin
对于Debian和Ubuntu系统,您可以类似地编辑/etc/apache2/envvars
。
答案 1 :(得分:21)
这是Google搜索结果中“CentOS 7 apache umask”的第一个结果,所以我将分享我需要做些什么来使用CentOS 7。
使用CentOS 7 echo "umask 002" >> /etc/sysconfig/httpd
方法对我不起作用。
我确实通过创建文件夹/etc/systemd/system/httpd.service.d
覆盖了systemd启动文件,并在那里用行创建了一个文件 umask.conf :
[Service]
UMask=0007
启动,它对我有用。
答案 2 :(得分:9)
Apache从其父进程(即启动Apache的进程)继承其umask
;这通常应该是/etc/init.d/
脚本。所以在该脚本中放置一个umask
命令。
答案 3 :(得分:3)
向umask
添加/etc/apache2/envvars
命令对我来说似乎不是一个好主意,不仅仅是因为文件的名称(仅提及变量)而且基于该文件中的评论:
# 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
创建的文件的权限,您应该考虑the DAV repository is considered private to Apache并让其他进程访问这些文件可能会导致到various isses (including corruption)。
答案 4 :(得分:1)
添加到Luoti /蜘蛛侠对CentOS7的回答:而不是"启动"更改后,可以使用以下命令:
...
@reflectable
void clicked([_, __]) {
...
}
答案 5 :(得分:1)
在Debian中,另一个为Apache设置umask的地方是/ etc / default / apache2。就在这个文件末尾的这一行: umask 0002
答案 6 :(得分:1)
您 想要做的是在CGI正在使用的目录上设置组粘贴位(SetGID
):
chgrp mygroup dir
chmod g+s dir
确定当你这样做时(用户)apache在mygroup
组(/etc/group
)中,所以它会有权限。
这将使得在此目录下创建的任何文件都将与该目录拥有相同的组。
这比为apache可能运行的每个cgi脚本设置全局umask更安全。
(这是git-http-backend
通常从Apache运行的方式。)
答案 7 :(得分:0)
对于Ubuntu,有工具svnwrap
sudo apt-get install subversion-tools
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完成
答案 8 :(得分:0)
这里可能会有帮助。
管理rhel/centos的文件权限
# ls -lrt /etc/systemd/system/httpd.service.d/umask.conf
-rw-r--r-- 1 root root 21 Feb 25 10:19 /etc/systemd/system/httpd.service.d/umask.conf
# cat /etc/systemd/system/httpd.service.d/umask.conf
[Service]
UMask=0002
答案 9 :(得分:0)
洛蒂的回答在 CentOS7 上为我工作。
不需要系统启动或重启。
当您使用命令 systemctl restart httpd
`Warning: httpd.service changed on disk. Run 'systemctl daemon-reload' to reload units`.
所以先运行 systemctl daemon-reload
命令然后 systemctl restart httpd
答案 10 :(得分:-12)
通常不建议远离“经过验证的Apache方式”。大量的时间和艰苦的经验已经用于选择这样的东西。