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'
Beantwortet von mwargh unter ## linux (IRC Freenode.net)
So führen Sie einen Befehl als anderer Benutzer aus -> wechseln Sie zu diesem Benutzer, indem Sie Folgendes verwenden:
Ich wäre immer noch daran interessiert (wenn es möglich ist), PHP so zu konfigurieren, dass es läuft:
als Root- Benutzer
führt zum Erstellen einer Datei mit www-data: www-data user / group
(Auf diese Weise müsste ich nicht von root zu www-data wechseln, um meine Befehle auszuführen)
quelle
Ich würde versuchen, / usr / bin / php im Besitz von www-data zu machen und die suid-Berechtigung festzulegen, wodurch der Befehl vom Dateieigentümer ausgeführt wird. Sie würden dies tun mit:
von dir gefällt die oktale Notation:
Obwohl ich sagen muss, dass es einen unruhig machen sollte, wenn Sie www-data zum Eigentümer von irgendetwas machen, da der Sinn des www-data-Kontos darin besteht, so wenig wie möglich zu besitzen.
quelle
Wenn Sie das php-fpm (FastCGI Process Manager) haben
, können Sie es in der Konfigurationsdatei einrichten, die sich unter (mindestens für Centos) befindet: In
/etc/php-fpm.d/www.conf
Zeile 39 können Sie den Benutzer und 49 die Gruppe festlegen
quelle
php-cli
, oder?Skriptdatei erstellen:
Inhalt hinzufügen:
Führen Sie Ihre Skripte von root aus:
oder verwenden Sie einen Interpreter in Ihren Skripten
Hinweis: Auf Debian 7 getestet, müssen Sie möglicherweise sudo installieren
Alle von script.php erstellten Dateien haben dieselbe UID wie dieses Skript
quelle