我想在c和cgi代码中重启
linux服务,如apache,bind,proftpd等.
我使用system()来做到这一点,例如:
system ("service httpd reload");
我也设置suid编译程序并运行它.但不工作并返回权限错误.
我该怎么办 ?
编辑:
我的apache记录错误:
[Wed Dec 21 21:07:13 2011] [error] [client *] cannot remove `/var/run/httpd.pid' [Wed Dec 21 21:07:13 2011] [error] [client *] : Permission denied [Wed Dec 21 21:07:13 2011] [error] [client *] [Wed Dec 21 21:07:13 2011] [error] [client *] touch: [Wed Dec 21 21:07:13 2011] [error] [client *] cannot touch `/var/lock/subsys/httpd' [Wed Dec 21 21:07:13 2011] [error] [client *] : Permission denied
和命名,proftpd等相同的日志
解决方法
这里有几件事需要检查:
>确保已编译的程序具有suid root(即程序的所有者是root).>确保在没有“noexec”选项的情况下挂载正在执行程序的分区.