Выполнение сценария от имени другого пользователя все еще вызывает проблемы с правами доступа

Я должен выполнить этот скрипт с 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
задан 24 August 2013 в 23:40

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'); ?>
0
ответ дан 24 August 2013 в 23:40

Другие вопросы по тегам:

Похожие вопросы: