Comment faire pour exécuter du PHP un script bash sous l'utilisateur root
Comment faire pour exécuter du PHP un script bash sous utilisateur root (avec toutes les autorisations) et de ne pas personne ne l'utilisateur de php par défaut de l'utilisateur?
c'est ma sortie après sudo visudo:
Defaults env_keep += "LINES COLUMNS"
Defaults env_keep += "LSCOLORS"
Defaults env_keep += "SSH_AUTH_SOCK"
Defaults env_keep += "TZ"
Defaults env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
Defaults env_keep += "EDITOR VISUAL"
Defaults env_keep += "HOME MAIL"
#User privilege specification
root ALL=(ALL) ALL
%admin ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
Cela semble dangereux, il soulève la question évidente: pourquoi avez-vous besoin de faire cela? C'est peut-être une meilleure solution globale.
OriginalL'auteur Oleg | 2012-06-06
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser sudo:
Vous devez autoriser l'exécution de votre script sans invite de mot de passe. Exécuter
sudo visudo
dans la console et ajoutez la chaîne suivante à la fin:Vous devez configurer le mode de fichier correctement pour s'assurer que personne ne peut modifier ce script et dangereux de mettre le contenu (de la racine de la console):
sudo visudo
dans la questionJuste mettre une nouvelle ligne à la fin du fichier.
J'ai tout fait! cant... je fais appel à xcodebuilde(Unix) -rien ne se passe, dans le terminal de fichier works.
Vérifier la valeur de retour de
exec
fonction. Passer$output
et$return_var
paramètres et de vérifier leurs valeurs. Ils sont susceptibles de contenir des informations utiles.il a vérifié.
output
=Array etreturn_var
=69.OriginalL'auteur Pavel Strakhov
Vous pouvez faire un programme set-uid root. Cela provoque la programme de toujours exécuter en tant que root. Cela ne fonctionne pas avec les scripts shell, donc vous devez utiliser un programme qui appelle votre script.
OriginalL'auteur Sjoerd
Sous Linux normalement, vous faites ceci à l'aide de
sudo
. Essayez d'être aussi précis que possible, afin de ne pas donner le script de trop nombreuses autorisations.Pour des exemples sur la façon d'utiliser
sudo
: http://aplawrence.com/Basics/sudo.htmlcp
,mv
commandes de travail), je pense que 90% des autorisations.OriginalL'auteur Ja͢ck
Je voudrais ajouter une règle spécifique pour permettre à ce script appelé par
nobody
de l'utilisateur, à l'aide desudo
.Voir Riateche de réponse, vous devez ajouter la ligne
nobody ALL = NOPASSWD: /your/script
à la "visudo" (fichier sudoers fichier de configuration). Bien sûr, remplacez/your/script
par le chemin d'accès à votre script.Comment puis-je modifier ce fichier? j'ai utilisé
sudo visudo
mais il ne montre que la sortie.Étrange.
sudo visudo
devrait l'ouvrir dans un éditeur de fichier: google.com.br/search?q=visudoVous pouvez modifier l'éditeur visudo utilise en tapant
EDITOR=nano
(par exemple)... dans les "nano", utilisez les touches CTRL+O CTRL+X pour enregistrer le fichier...OriginalL'auteur J. Bruni
J'ai récemment publié un projet qui permet à PHP d'obtenir et d'interagir avec un vrai shell Bash (en tant qu'utilisateur: apache/www-data à la racine ou si nécessaire). Obtenez-le ici: https://github.com/merlinthemagic/MTS
Après le téléchargement, il vous suffit d'utiliser le code suivant:
OriginalL'auteur MerlinTheMagic