Führen Sie einen Befehl einmal als ein anderer Benutzer aus:
sudo -u www-data php script.php
Dies sollte funktionieren, wenn Sie root sind .
Was PHP immer als www-data angeht , gibt es mehrere Möglichkeiten. Sie könnten ein einfaches Wrapper-Shellscript erstellen. Wenn /usr/bin/php ist nur ein Soft-Link zu /usr/bin/php5 oder ähnliches, das macht es einfacher. Ersetzen Sie einfach den Softlink (NICHT die Datei php5 ) mit einem Skript wie diesem:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Das ist aber nicht getestet. Beachten Sie auch, dass dies IMMER versuchen wird, php5 auszuführen als Benutzer www-data , auch wenn der Benutzer nicht root ist und möglicherweise keine Berechtigung dazu haben. Und es ist vielleicht auch nicht das, was Sie wirklich wollen. Einige installierte Dienste können beim Versuch, php auszuführen, auf Probleme stoßen.
Eine (möglicherweise bessere) Lösung, um dies nur auf root anzuwenden, könnte darin bestehen, den Softlink /usr/bin/php zu belassen allein und platzieren Sie das Skript in /root/bin stattdessen. Fügen Sie diesen Ordner dann über .bashrc zu PATH hinzu , .profile oder ähnliches. Wenn Sie /etc/skel/.profile haben , die möglicherweise darauf hinweisen, wie das gemacht wird:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Sobald dies in Ihrem .bashrc ist , .profile oder ähnlich, jede neue Shell, die Sie öffnen, erlaubt Ihnen, alle ausführbaren Dateien (+x) in $HOME/bin direkt auszuführen (/root/bin für root).
Hinweis:Vielleicht möchten Sie das Wrapper-Skript so benennen wie phpwww Sie geben also ausdrücklich php script.php an oder phpwww script.php um zu entscheiden, ob Sie reguläres oder Sudo-php möchten.
Eine andere Lösung ist ein einfacher Alias. Legen Sie dies in Ihren .bashrc , .profile oder ähnlich:
alias phpwww='sudo -u www-data php'