百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> linux中获取root权限 php执行shell
分享文章到:

linux中获取root权限 php执行shell

发布时间:01/15 来源: 浏览: 关键词:
下面我们来看一篇关于linux中获取root权限 php执行shell,虽然许多的网站直接把这个权限给禁止了,但如果自己操作可以开启的哦。


有的时候,通过php做很多系统操作的时候,并不如直接利用bash来的快。php-fpm默认是apache用户,直接改成root账户,是启动不了的。这样的话,apache用户无法执行root才能执行的命令。所以我们要先使php-fpm的启动用户,拥有执行shell的权限,以及shell内部执行命令的权限。

一,获取root权限

1,给具体进程指定无密码访问

# visudo       //添加以下内容,文件最下面有例子,照着写 
apache ALL=(ALL) NOPASSWD:/etc/init.d/srs 
调用的时候

$result = shell_exec("/usr/bin/sudo /etc/init.d/srs start"); 
2,批定用户无需密码,切换root账号
# visudo 
apache ALL=(ALL) NOPASSWD: ALL 
直接可以用sudo su切换成root用户,权限远大于上面的方法,权限越大,安全性越低。
3,针对某个shell脚本,开放权限
如果说第一方法,满足不了要求,第二方法权限过大,不安全,那么第三种方法可以试试

# visudo 
apache ALL=(ALL) NOPASSWD: UPLOADVIDEO 
Cmnd_Alias UPLOADVIDEO = /var/www/srs/upload.sh 
调用方法根一般调用方法一样。
还有一点很重要就是visudo时注释掉,#Default requiretty,因为php调用shell时,用不到终端
二,php调用shell怎么调试
不好调试,无log可查,只能看输出,nginx,php的log没有调用shell的相关信息,我有一些以经验,屡试不爽
1,检查php启动用户权限,文件本身能被执行,php启动用户也要能执行该文件的权限。以前遇到过一个情况是,php执行一个shell怎么都执行不了,后来才发面,没有chmod +x操作。
2,php是可以捕获取shell的输出的,但是要知道,不是所有命令执行都是有输出的,也就是说,成功,失败,或者没执行没办法区别,搞不清。这个时候,我们可以shell脚本中输出,用echo就可以。这样我们可以知道,执行到什么地方,可以知道,在什么地方出错了。
3,直接通过su切换到php的启动用户,然后在linux命令行下执行,有人问了,nologin用户无法su,那就直接useradd一个,改一下php的启动用户。如果用php的启动用户测试成功,通过php脚本去执行,基本也是能通过的。
4,在这里要注意一点,路径问题,相对路径和绝对路径,尽量用绝对路径。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有3人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板