Befehle aus PHP als bestimmter Benutzer ausführen
Beim Ausführen von PHP-Skripten auf einem lokalen Host können Probleme auftreten, bei denen Befehle innerhalb des Skripts ausgeführt werden Sie können nicht auf bestimmte Ressourcen oder Instanzen zugreifen, die einem anderen Benutzer gehören. Beispielsweise kann sich der Versuch, die Rhythmbox-Wiedergabe über ein PHP-Skript zu steuern, das als www-Benutzer ausgeführt wird, als erfolglos erweisen.
Um dieses Problem zu beheben, besteht eine wirksame Lösung darin, den Befehl sudo zu nutzen. Indem Sie dem Befehl, den Sie ausführen möchten, sudo voranstellen, können Sie ihn vorübergehend unter einem anderen Benutzer ausführen und dabei die Berechtigungen des ursprünglichen Benutzers beibehalten. Zum Beispiel:
<code class="php">exec('sudo -u myuser ls /');</code>
Dieser Befehl ruft sudo auf und führt den Befehl „ls /“ als Benutzer „myuser“ aus. Damit dieser Ansatz jedoch realisierbar ist, müssen Sie Ihre sudoers-Datei mit visudo ändern. Indem Sie den folgenden Eintrag:
wwwuser ALL=/usr/bin/rhythmbox-client
an Ihre sudoers-Datei anhängen, beschränken Sie die sudo-Berechtigungen von Apache nur auf den Befehl „rhythmbox-client“ und verhindern so, dass dieser beliebige Befehle ausführt. Diese Strategie stellt sicher, dass Ihr PHP-Skript mit Rhythmbox als dem beabsichtigten Benutzer interagieren kann und gleichzeitig die Sicherheit gewahrt bleibt.
Das obige ist der detaillierte Inhalt vonWie führe ich Befehle als bestimmter Benutzer in PHP aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!