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

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top