Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führe ich erhöhte Shell-Skripte von PHP mit „sudo“ aus?

Wie führe ich erhöhte Shell-Skripte von PHP mit „sudo“ aus?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-19 17:13:03888Durchsuche

How to Run Elevated Shell Scripts from PHP Using `sudo`?

Ausführen von Shell-Skripten mit erhöhten Berechtigungen in PHP

So führen Sie ein Bash-Skript, das erhöhte Berechtigungen (über SUDO) erfordert, aus PHP heraus mit Shell_exec aus gibt es zwei Hauptansätze:

Option 1: Passwortabfrage deaktivieren

Diese Methode beinhaltet das Ändern der sudoers-Datei (/etc/sudoers) durch Hinzufügen einer Regel, die dies zulässt Der Webserver-Benutzer (z. B. www-data) kann den angegebenen Befehl ohne Passwortabfrage ausführen. Öffnen Sie die sudoers-Datei mit dem Befehl visudo und fügen Sie eine Zeile ähnlich der folgenden hinzu:

www-data ALL=NOPASSWD: /path/to/script

Dadurch kann der Webserver-Benutzer das Skript ausführen, ohne zur Eingabe eines Passworts aufgefordert zu werden.

Option 2: PHPs proc_open verwenden

Ein alternativer Ansatz ist die Verwendung der proc_open-Funktion in PHP. Mit dieser Funktion können Sie einen Prozess öffnen und zusätzliche Optionen angeben, einschließlich der Bereitstellung des SUDO-Passworts als Parameter:

<?php
$descriptorspec = array(
    0 => array("pipe", "r"),  // stdin
    1 => array("pipe", "w"),  // stdout
    2 => array("pipe", "w")   // stderr
);
$process = proc_open(
    "sudo /path/to/script",
    $descriptorspec,
    $pipes
);

// Write the password to stdin
fwrite($pipes[0], "your_sudo_password\n");
fclose($pipes[0]);

// Read stdout and stderr from pipes
while (!feof($pipes[1])) {
    $stdout .= fgets($pipes[1]);
}
while (!feof($pipes[2])) {
    $stderr .= fgets($pipes[2]);
}

proc_close($process);
?>

In diesem Beispiel wird das SUDO-Passwort als Zeichenfolge in der fwrite-Anweisung bereitgestellt. Beide Methoden erreichen effektiv das Ziel, das privilegierte Skript von PHP aus auszuführen, ohne zur Eingabe des Passworts aufgefordert zu werden.

Das obige ist der detaillierte Inhalt vonWie führe ich erhöhte Shell-Skripte von PHP mit „sudo“ aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn