Esegui un comando come un altro utente una volta:
sudo -u www-data php script.php
Questo dovrebbe funzionare se sei root
.
Per quanto riguarda l'esecuzione sempre di php come www-data
, ci sono diverse possibilità. Potresti creare un semplice shellscript wrapper. Se /usr/bin/php
è solo un soft-link a /usr/bin/php5
o simili, che lo rende più semplice. Basta sostituire il soft-link (NON il file php5
) con uno script come questo:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Non è testato però. Tieni anche presente che questo cercherà SEMPRE di eseguire php5
come utente www-data
, anche se l'utente potrebbe non essere root
e potrebbe non avere il permesso di farlo. E potrebbe anche non essere quello che vuoi veramente. Alcuni servizi installati potrebbero incorrere in problemi durante il tentativo di eseguire php.
Una soluzione (forse migliore) per applicarla solo a root potrebbe essere quella di lasciare il soft-link /usr/bin/php
da solo e posiziona lo script in /root/bin
invece. Quindi aggiungi quella cartella a PATH tramite .bashrc
, .profile
o simili. Se hai /etc/skel/.profile
, che potrebbe indicare come si fa:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Una volta che questo è nel tuo .bashrc
, .profile
o simili, ogni nuova shell che apri ti permetterà di eseguire direttamente qualsiasi eseguibile (+x) in $HOME/bin
(/root/bin
per root).
Suggerimento:potresti voler nominare lo script wrapper come phpwww
quindi specifichi esplicitamente php script.php
o phpwww script.php
per decidere se vuoi un php normale o sudo'ed.
Un'altra soluzione è un semplice alias. Inseriscilo nel tuo .bashrc
, .profile
o simile:
alias phpwww='sudo -u www-data php'