利用PHP启动停止系统服务

来源:互联网 发布:网络制造 编辑:程序博客网 时间:2024/06/08 01:14

在做一个web界面的DNS管理系统..

最后的一个问题耗了两个星期才解决..  郁闷!

就是利用sudo 执行/etc/rc.d/init.d/named stop的时候,总是执行失败..

现在问题已经解决. 把详细的步骤写出来

 

有些系统服务是需要root权限才可以执行的..

但是想要非系统用户执行必须使用sudo.

现在把apache的用户daemon允许执行named添加到sudo配置文件中去

1.[root@localhost ~]# visudo -f /etc/sudoers

    在最下方添加

    Cmnd_Alias DNS = /etc/rc.d/init.d/named

    deamon  ALL=(ALL)                      NOPASSWD: DNS

    将 Defaults requiretty 注释掉,不注释掉的话sudo必须请求一个tty执行,也就是说必须用户登陆到tty才可以执行

找到Defaults requiretty ,但是daemon是nologin类型的用户,根本进不到tty的,就算给daemon允许登陆的权限apache 也不会登陆到tty.所以必须注释掉或者删掉这一行

    #Defaults requiretty

说明:daemon是apache的用户, ALL是表示所有的机器,NOPASSWD表示daemon用户使用sudo的时候不提示输入密码,DNS表示允许daemon执行的程序

2.在PHP中利用exec,shell_exec或者system函数执行

    例如: $output = shell_exec("/usr/bin/sudo /etc/rc.d/init.d/named start");

             echo $output

 

0 0
原创粉丝点击