PHP shell_exec () e sudo: devono essere setuid root
Domanda
Ho un comando shell_exec()
che accede a una directory sopra la mia principale del documento quindi ho bisogno di usare sudo "come root" per farlo accadere. (Capisco i problemi di sicurezza e sono in putitng misure per affrontarlo).
Il problema è quando faccio funzionare il shell_exec()
ottengo un "sudo: deve essere setuid root". Errore nel mio file apache error_log
Ho pensato che la soluzione era quella di chmod 4750 lo script bash che è invocato il mio sheel_exec()
ma che non fa il lavoro.
Che cosa è esattamente? "Sudo: deve essere setuid root" cercando di dirmi e come potrei risolverlo
Soluzione
È il sudo
stesso eseguibile setuid root? Potrebbe essere necessario
chown root: /usr/bin/sudo
chmod u+s /usr/bin/sudo
Altri suggerimenti
In alternativa, saltare sudo
tutto. Se lo script è di proprietà di root e ha un proprio bit setuid impostato, allora non c'è bisogno di usare sudo per ottenere i privilegi di root. In effetti, può essere più sicuro in questo modo; si garantisce che l'utente web può utilizzare solo lo script, senza dover modificare sudoers. Per fare ciò, Rimuovi sudo dalla linea shell_exec()
:
<?php
shell_exec('/path/to/your/command');
?>
Hai controllato i permessi per lo script?
Chi è in possesso di script?
Fa l'utente web ha il diritto di sudo?
Per risolvere questo problema è necessario chown e il file sudo chmod come root, come di seguito.
chown root:root /usr/bin/sudo
chmod 4111 /usr/bin/sudo
chmod 0440 /etc/sudoers