我必须用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/Min克拉夫特/Serveur/,一切都很好:)
发布于 2013-08-24 15:41:24
在终端中,使用sudo visudo
命令编辑sudoers
文件,并添加如下一行:
www-data ALL=(ALL) NOPASSWD: /home/user2/bin/test.sh
从这个意义上看,https://help.ubuntu.com/community/RootSudo#Allowing_其他_用户_至_跑_数独。
然后,在php中只使用sudo /home/user2/bin/test.sh
命令。例如:
<?php shell_exec('sudo /home/user2/bin/test.sh'); ?>
https://askubuntu.com/questions/336686
复制相似问题