以其他用户身份执行脚本仍然会导致一些权限问题

以其他用户身份执行脚本仍然会导致一些权限问题

我必须用 PHP 来执行这个脚本。用户www-data无法做到这一点,因此我修改了sudoers文件:

www-data ALL=(user2) NOPASSWD: /home/user2/bin/test.sh

该脚本在 php 中使用以下命令执行:

sudo -u user2 /home/user2/bin/test.sh

脚本如下test.sh

#!/bin/bash
#Stopping previous server
screen -S minecraft -X stuff "stop^M"
#deleting the map file
rm -Rf /home/minecraft/Serveur/*/  
# deleting the properties file
rm -f /home/minecraft/Serveur/server.properties 
#new server properties
cp /home/minecraft/MapsEtServ.prop/Bloody/server.properties /home/minecraft/Serveur/server.properties
#new map
cp -R /home/minecraft/MapsEtServ.prop/Bloody/'Bloody Mess v1.0' /home/minecraft/Serveur/'Bloody Mess v1.0' 
#launching the game server
screen -dmS minecraft java -Xmx4096M -Xms4096M -jar  /home/minecraft/Serveur/minecraft_server.jar nogui 

/home/minecraft/Serveur并将/home/minecraft/MapsEtServ.prop权限设置为777。

当我通过 SSH 执行脚本时发生的情况是:一切正常。

但是当我用 php 执行它时:屏幕停止,文件粘贴,屏幕启动。但是有一个问题:游戏服务器没有运行。

编辑:问题解决了!我刚刚在脚本开头添加了 cd /home/minecraft/Servereur/,一切正常 :)

答案1

从终端,使用sudo visudo命令,编辑sudoers文件,并按原样添加以下行:

www-data ALL=(ALL) NOPASSWD: /home/user2/bin/test.sh

https://help.ubuntu.com/community/RootSudo#Allowing_other_users_to_run_sudo在这个意义上。

然后,在 php 中仅使用sudo /home/user2/bin/test.sh命令。例如:

<?php shell_exec('sudo /home/user2/bin/test.sh'); ?>

相关内容