PHP를 통해 루트 명령 실행
CentOS 서버의 PHP 코드에서 루트 권한으로 명령을 실행하고 싶다고 표현하셨습니다. 문제를 살펴보고 잠재적인 해결책을 제시해 보겠습니다.
문제:
exec() 함수를 사용하여 sshd 서비스를 다시 시작하려고 시도했지만 필요합니다. Apache 사용자에게는 부여되지 않는 루트 액세스입니다. 루트 권한으로 Apache를 실행하거나 sudoers 파일을 수정하는 등의 해결 방법을 시도했지만 문제가 해결되지 않았습니다.
Binary Wrapper를 사용한 해결 방법(Suid Bit 사용):
소유권 및 권한 설정: 루트 사용자가 스크립트를 소유하고 다음 권한이 있는지 확인하세요.
바이너리 래퍼 만들기: 루트 권한으로 셸 스크립트를 실행할 바이너리 래퍼를 만듭니다. 다음은 래퍼 예시입니다.
# cat > wrapper.c <<CONTENT #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main (int argc, char *argv[]) { setuid (0); system ("/bin/sh /path/to/php_shell.sh"); return 0; } CONTENT
컴파일 및 권한 설정: 바이너리 래퍼를 컴파일하고 suid 비트로 설정합니다.
이 php_root 래퍼는 호출 시 루트 권한으로 php_shell.sh에 지정된 명령을 실행합니다.
대체 솔루션:
사용하는 대신 외부 셸 스크립트를 사용하면 명령을 바이너리 래퍼에 직접 포함할 수 있습니다. 3단계의 내용을 루트 권한으로 실행하려는 명령으로 바꾸면 됩니다.
주의:
실행하려는 스크립트에 대한 절대 경로를 사용하는 것이 중요합니다. 악의적인 사용자가 바이너리를 악용하여 임의 명령을 실행하는 것을 방지합니다.
위 내용은 CentOS에서 PHP의 루트 명령을 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!