J'ai un serveur Web qui joue également une radio Internet. En tant qu'utilisateur de données www, je souhaite exécuter certaines commandes, par exemple, j'ai fait cela dans /etc/sudoers Fichier:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer
Et formulaire PHP Je peux manipuler le volume sans utiliser de mot de passe par:
exec('Sudo -u user amixer set Master 3%-');
Et:
exec('Sudo -u user amixer set Master 3%+');
Mais maintenant, je veux être capable de redémarrer mon propre service en exécutant la commande:
exec('Sudo -u user service servicename restart');
Alors j'ai essayé:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer, NOPASSWD: /bin/service
Et ça:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer, /bin/service
Et même ceci:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer
www-data ALL=(ALL) NOPASSWD: /bin/service
Mais aucun d'entre eux ne semble fonctionner. Sil te plait aide moi.
Désolé gars - mon erreur. J'ai fait des changements, essayé de relier la forme/sbin à/bin
Maintenant je l'ai changé pour:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer, NOPASSWD: /usr/sbin/service
Et il fonctionne! Merci! Sujet fermé.
Soyez prudent avec votre solution: vous pouvez commencer, arrêter ou redémarrer n'importe quel service de cette façon!
Mieux créer un script shell qui exécute cette commande:
echo "#!/bin/sh' > /usr/bin/amixer_restart
echo "Sudo -u user service amixer restart' >> /usr/bin/amixer_restart
Accorder des autorisations adéquates (550 racines moyennes et les données www de groupe peuvent lire et exécuter, personne ne peut écrire)
Sudo chown root:www-data /usr/bin/amixer_restart
Sudo chmod 550 /usr/bin/amixer_restart
Et autoriser Apache à Sudo sur ce script:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer_restart