Führen Sie einen Befehl einmal als anderer Benutzer aus:
sudo -u www-data php script.php
Dies sollte funktionieren, wenn Sie es sind root
.
Da immer PHP as ausgeführt wird www-data
, gibt es mehrere Möglichkeiten. Sie können ein einfaches Wrapper-Shellscript erstellen. Wenn /usr/bin/php
es sich nur um einen Softlink /usr/bin/php5
oder ähnliches handelt, ist dies einfacher. Ersetzen Sie einfach den Softlink (NICHT die Datei php5
) durch ein Skript wie das folgende:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Das ist aber nicht getestet. Beachten Sie auch, dass dies IMMER versucht, php5
als Benutzer ausgeführt zu werden www-data
, auch wenn der Benutzer möglicherweise nicht root
dazu berechtigt ist. Und es kann auch nicht das sein, 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, besteht darin, den Softlink in /usr/bin/php
Ruhe zu lassen und /root/bin
stattdessen das Skript zu platzieren. Dann fügen Sie diesen Ordner auf PATH über .bashrc
, .profile
oder ähnliches. Wenn ja /etc/skel/.profile
, kann dies 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 diese in Ihrer ist .bashrc
, .profile
oder ähnliches, wird jede neue Shell Sie öffnen können Sie alle ausführbaren Dateien direkt ausführen (+ x) in $HOME/bin
( /root/bin
für root).
Tipp: Möglicherweise möchten Sie das Wrapper-Skript so benennen, phpwww
dass Sie es explizit angeben php script.php
oder phpwww script.php
entscheiden, ob Sie reguläres oder sudo'ed PHP möchten.
Eine andere Lösung ist ein einfacher Alias. Legen Sie diese in Ihrem .bashrc
, .profile
oder ähnlich:
alias phpwww='sudo -u www-data php'