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'