我有一个启用mod_suexec的Apache实例。我正在尝试调试一个问题,并使用strace启动Apache,以尝试查看发生了什么。
但是,当我像这样启动Apache时:
# strace -f -o /tmp/apache.strace /etc/init.d/apache2 start我在错误日志中看到了这一点:
suexec failure: could not open log file
fopen: Permission denied但是,当我正常启动Apache时,一切都正常工作。
我猜想mod_suexec正在使用的某些机制被strace的使用破坏了,但我不清楚到底发生了什么。是否有任何方法可以使用strace并使mod_suexec正确工作?
发布于 2014-07-10 20:46:22
strace使用ptrace()跟踪系统调用。
如果正在跟踪的进程试图执行带有setuid或setgid位的文件,则这些位将被忽略(进程将继续以进程的现有uid和gid运行),除非进程以根用户身份运行(或具有CAP_SETUID功能)。
您的web服务器是(希望!)不作为root运行,所以如果您跟踪它,suexec的setuid位将被忽略,它将作为web服务器的uid运行。
为了解决这个问题,您可以避免在suexec启动之前进行任何操作,然后执行strace -f -o ... -p pid-of-suexec。为了让您有时间查找suexec的进程id,您可以添加代码,这样它就可以休眠一会儿,或者等待文件出现等等。
https://unix.stackexchange.com/questions/143777
复制相似问题