2010-11-01 26 views
1

J'ai fait un simple script bash pour l'administration de serveur et je n'arrive pas à comprendre comment je peux l'exécuter en toute sécurité dans une page php: Je voudrais créer une page d'administration PHP, mais je ne veux pas hard-code mot de passe root anyware. Faisons un exemple (ce qui est un script foo, bien sûr)quelle est la meilleure façon d'exécuter le script shell (avec les privilèges root) via PHP?

#!/bin/bash 
touch /$1 

ce script simple/stupide ne fonctionnera pas si l'utilisateur qui fonctionne comme aucune autorisation d'écriture sur /.
En fait, le script ajoute apache virtualhosts, ftp utilisateurs et ainsi de suite ... des idées?
grâce

+1

Cela ne ressemble pas à quelque chose que vous voulez appeler à partir d'un script accessible sur le Web. –

+0

Je vais seconder l'avertissement de Jason. À moins que le script ne soit écrit avec beaucoup de soin, il est probable qu'il puisse être utilisé pour faire ... des choses inattendues. Juste par exemple, votre exemple de script pourrait être utilisé pour toucher les fichiers de validation de mot de passe dans/var/db/sudo, ou toucher plusieurs fichiers (puisque $ 1 est utilisé sans guillemets, s'il contient des espaces, il sera traité comme multiple arguments pour "toucher"). Votre script réel est probablement beaucoup plus complexe, ce qui signifie qu'il aura probablement plus de possibilités de faire des bêtises. –

Répondre

3

Utilisez

sudo /path/to/executable/file 

et mis en place sudo il peut exécuter la commande suivante pour l'utilisateur actuel comme une racine.

- voici le manuel sudoers, le fichier de configuration, que vous devez modifier.

zerkms ALL = (ALL) NOPASSWD: /sbin/iptables -L FORWARD -n -v -x 

Ceci est un exemple de mon /etc/sudoers. Ici, j'ai permis d'exécuter la commande /sbin/iptables -L FORWARD -n -v -x en tant que root sans demander de mot de passe pour l'utilisateur zerkms.

+0

ok, c'est une réponse, pas moyen de le faire sans sudo? – ArtoAle

+0

@ArtoAle: Je ne sais pas – zerkms

+0

merci de toute façon, je vais continuer avec sudo =) – ArtoAle