4

前提和目的

在 Fedora 12 启动 Apache 时,有一个关于 Passenger/mod_rails failed to initialize 的线程。底线,问题是由于权限,您可以通过调用来避免这种情况

setenforce 0 

跑步前

service httpd start

并打电话

setenforce 1

之后将其设置回来。它很酷,但我希望在 Fedora 重新启动时自动运行序列。



问题

我查看/etc/init.d/httpd并发现它只是重定向到etc/rc.d/init.d/functions,关键调用是

systemctl_redirect $0 $1

所以,我认为简单地用这样的调用来包围这个调用setenforce就可以了。

setenforce 0
systemctl_redirect $0 $1
setenforce 1

但它不起作用。它会发出这样的新错误(在 httpd 错误日志中):

Cannot change the directory '/tmp/passenger.1.0.8581/generation-0/buffered_uploads' its UID to 48 and GID to 48: Operation not permitted (1)

当我省略最后一个setenforce 1时,它终于起作用了!但显然我想把它放回某个地方。



问题

如何挂钩这些setenforce 0setenforce 1调用启动序列httpd?我觉得最合适的方法是编写自己/etc/init.d/httpd不使用的脚本systemctl,但我想避免这种情况,因为它看起来像一条荆棘之路......但如果我错了,如果你能建议简单的写作方式我自己的etc/init.d/httpd脚本,我也会很感激。

4

1 回答 1

0

你对你的问题使用了错误的方法。你不应该在你的系统上禁用 SELinux。您需要做的是尝试找出问题,使用 SELinux Troubleshooter,并添加规则以允许所需的操作。通常他们会给你你需要运行的命令。

首先确保您使用的是可用的最新版本,然后如果问题仍然存在,请考虑在此处创建错误报告,您将获得开发人员的帮助。

于 2013-08-23T08:29:18.260 回答