`sudo`를 사용하여 PHP에서 향상된 쉘 스크립트를 실행하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-19 17:13:03
원래의
886명이 탐색했습니다.

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

PHP에서 높은 권한으로 셸 스크립트 실행

shell_exec를 사용하여 PHP 내에서 SUDO를 통해 높은 권한이 필요한 bash 스크립트를 실행하려면 , 두 가지 기본 접근 방식이 있습니다:

옵션 1: 비밀번호 프롬프트 비활성화

이 방법에는 웹 서버 사용자(예: www-data)가 없이 지정된 명령을 실행할 수 있도록 허용하는 규칙을 추가하여 sudoers 파일(/etc/sudoers)을 수정하는 작업이 포함됩니다. 비밀번호 프롬프트. visudo 명령을 사용하여 sudoers 파일을 열고 다음과 유사한 줄을 추가합니다.

www-data ALL=NOPASSWD: /path/to/script
로그인 후 복사

이렇게 하면 웹 서버 사용자가 비밀번호를 묻는 메시지를 표시하지 않고 스크립트를 실행할 수 있습니다.

옵션 2: PHP의 proc_open 사용

대체 접근 방식은 proc_open을 사용하는 것입니다. PHP의 함수. 이 함수를 사용하면 프로세스를 열고 SUDO 비밀번호를 매개변수로 제공하는 것을 포함하여 추가 옵션을 지정할 수 있습니다.

<?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);
?>
로그인 후 복사

이 예에서 SUDO 비밀번호는 fwrite 문에서 문자열로 제공됩니다. 두 방법 모두 비밀번호를 입력하지 않고 PHP에서 권한 있는 스크립트를 실행한다는 목표를 효과적으로 달성합니다.

위 내용은 `sudo`를 사용하여 PHP에서 향상된 쉘 스크립트를 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿