A execução de um script como outro usuário ainda causa algum problema de permissão

1

Eu tenho que executar este script com PHP. O usuário www-data não pode fazer isso, então eu modifiquei o arquivo sudoers :

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

O script é executado em php com este comando:

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

Aqui está o script 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 
As permissões

/home/minecraft/Serveur e /home/minecraft/MapsEtServ.prop estão definidas para 777.

O que acontece quando eu executo o script via SSH: tudo funciona bem.

Mas quando eu executo com php: a tela é parada, os arquivos são colados e a tela é iniciada. Mas há um problema: o servidor do jogo não está em execução.

EDIT: O problema está resolvido! Acabei de adicionar um cd / home / minecraft / Serveur / no início do script e tudo funciona bem:)

    
por Babajaga 24.08.2013 / 16:47

1 resposta

2

Do terminal, usando o comando sudo visudo , edite o arquivo sudoers e adicione a seguinte linha exatamente como está:

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

Veja link neste sentido.

Então, no php, use apenas o comando sudo /home/user2/bin/test.sh . Por exemplo:

<?php shell_exec('sudo /home/user2/bin/test.sh'); ?>
    
por Radu Rădeanu 24.08.2013 / 17:41