我用root账户创build了一个自定义的日志目录,并且把它定制为777。
ls -la /var/mylogs/log/ total 16 drwxrwxrwx 2 root root 4096 Jun 24 06:27 . drwxr-xr-x 5 root root 4096 Jun 24 06:25 ..
当我尝试从一个用户启动服务时(让我们把myuser命名为myuser ALL =(ALL)ALL),它会因为权限而失败:
sudo /etc/init.d/httpd start Starting httpd: (13)Permission denied: httpd: could not open error log file /var/mylogs/log/httpd_error.log. Unable to open logs
但是,以下是成功的:
sudo bash /etc/init.d/http start
所以我猜这两个方法是不对等的,虽然对我来说,做sudo和login到root帐户并发出命令是一样的。
任何线索?
谢谢 !
apache2服务器是RedHat 5.6的系统,因此SELinux默认是激活的。
问题的根源在于SELinux在操作系统之上添加了额外的文件权限(例如,chmod,chown),请参阅:
man httpd_selinux
该手册说,必须将显式上下文设置为文件/目录,以便httpd被允许访问它们。
因此,我使用了以下内容:
chcon -R user_u:object_r:httpd_log_t /var/mylogs/logs
您可以检查该男子获取其他权限令牌(内容,脚本..)。
apache2进程应该是日志目录的所有者,而不是root。 您可以通过更改日志目录的所有者(即www-data或apache2所属的组)来解决此问题。