Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menjalankan Skrip Shell Tinggi daripada PHP Menggunakan `sudo`?

Bagaimana untuk Menjalankan Skrip Shell Tinggi daripada PHP Menggunakan `sudo`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-19 17:13:03891semak imbas

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

Melaksanakan Skrip Shell dengan Keistimewaan Ditingkatkan dalam PHP

Untuk melaksanakan skrip bash yang memerlukan keistimewaan tinggi (melalui SUDO) dari dalam PHP menggunakan shell_exec , terdapat dua pendekatan utama:

Pilihan 1: Lumpuhkan Prompt Kata Laluan

Kaedah ini melibatkan pengubahsuaian fail sudoers (/etc/sudoers) dengan menambahkan peraturan yang membenarkan pengguna pelayan web (cth., www-data) untuk menjalankan arahan yang ditentukan tanpa gesaan kata laluan. Buka fail sudoers menggunakan arahan visudo dan tambahkan baris yang serupa dengan yang berikut:

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

Ini akan membolehkan pengguna pelayan web melaksanakan skrip tanpa digesa untuk mendapatkan kata laluan.

Pilihan 2: Gunakan proc_open PHP

Pendekatan alternatif ialah menggunakan fungsi proc_open dalam PHP. Fungsi ini membolehkan anda membuka proses dan menentukan pilihan tambahan, termasuk menyediakan kata laluan SUDO sebagai 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);
?>

Dalam contoh ini, kata laluan SUDO disediakan sebagai rentetan dalam pernyataan fwrite. Kedua-dua kaedah berkesan mencapai matlamat untuk melaksanakan skrip istimewa daripada PHP tanpa digesa untuk kata laluan.

Atas ialah kandungan terperinci Bagaimana untuk Menjalankan Skrip Shell Tinggi daripada PHP Menggunakan `sudo`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn