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 중국어 웹사이트의 기타 관련 기사를 참조하세요!