使用sudo使得php有更高的权限

本文介绍如何配置PHP在Linux环境下通过Sudo执行需要高权限的Shell命令,如重启网络服务。通过这种方式,即使PHP本身没有足够权限,也能间接完成任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Php来操作linux系统,下达一些shell让php执行的时候,我们会因为权限的问题搞的焦头烂额。下面有一个好方法,几乎可以让php有root的权限。

比如我们要让php来执行重启网络服务,那么我们可能就会用
exec("/etc/init.d/network restart")来执行,但是因为php没有足够的权限,实际上这样的操作是执行不了的。

我们可以配置sudo,php就能顺利的执行重启网络服务了。

终端下输入 visudo
Defaults requiretty 前加注释符# 将这行注释掉

然后我们在最后追加
apache ALL=NOPASSWD:/etc/init.d/network
注意大小写

最后Php中的exec函数稍作修改
exec("/usr/bin/sudo /etc/init.d/network restart")

OK,大功告成。
我们还可以在sudo中加入更多,比如可以加入
apache ALL=NOPASSWD:/bin/sh

这样php就可以执行shell脚本,我们完全可以把service network restart直接丢到shell脚本里,让Php去执行这个shell,尽管php没有权限重启网络服务,但是经过我们的配置它可以执行shell了,而shell是有权限来执行service network restart

我们编辑一个shell脚本
#! /bin/bash
service network restart
保存到/root/netrestart文件。
php执行exec("/usr/bin/sudo /bin/sh /root/netrestart")

同样可以达到我们最终要的效果。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值