web-dev-qa-db-ja.com

別のユーザーとしてスクリプトを実行すると、依然としてアクセス許可の問題が発生する

このスクリプトを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/Serveur /を追加したところ、すべて正常に動作します:)

1
Babajaga

ターミナルから、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'); ?>
2
Radu Rădeanu