利用PHP启动停止系统服务

本文记录了解决使用PHP通过sudo执行Linux系统服务(如named)时遇到的问题。通过修改sudoers配置文件,允许Apache用户(daemon)无密码启动和停止DNS服务。具体步骤包括添加Cmnd_Alias、取消requiretty限制,并在PHP中使用shell_exec等函数执行命令。
摘要由CSDN通过智能技术生成

在做一个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值