php调用外部程序(system、exec)获取sudo更高权限
在调试服务器管理程序时,遇到了个权限问题,现在将解决方案列出如下:
当我们用php的exec或者system调用一个外部程序时,比如一个python文件,调用py文件本身没有遇到问题,但是但是py文件里执行os.system(sudo cp filea fileb)等shell命令时,此时会遇到sudo权限问题。(服务器的命令行里调用py应该不会遇到此问题,但通过网页执行php去调用就难说了)
在服务器环境LNMP( nginx + php)下,test2.php中,PHP函数exec()执行whoami
得到的结果是 www
,说明是以用户www来执行命令。
| |
|
解决思路:可通过给用户www
添加可使用sudo命令
的权限,来使exec()函数
获取更高执行权限。
以超级用户(如root用户)执行 visudo
来编辑配置文件。
在配置文件中添加(文件位置:/etc/sudoers)
| |
www ALL=(ALL) NOPASSWD: ALL
|
如下图:
至此,用户www会有近似root的执行权限。
在执行的命令前添加sudo
,例:
| |
|
到此php调用python脚本的权限问题完美解决
License:
CC BY 4.0