> 백엔드 개발 > PHP 튜토리얼 > CentOS에서 PHP의 루트 명령을 실행하는 방법은 무엇입니까?

CentOS에서 PHP의 루트 명령을 실행하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-16 04:24:02
원래의
197명이 탐색했습니다.

How to Execute Root Commands from PHP on CentOS?

PHP를 통해 루트 명령 실행

CentOS 서버의 PHP 코드에서 루트 권한으로 명령을 실행하고 싶다고 표현하셨습니다. 문제를 살펴보고 잠재적인 해결책을 제시해 보겠습니다.

문제:

exec() 함수를 사용하여 sshd 서비스를 다시 시작하려고 시도했지만 필요합니다. Apache 사용자에게는 부여되지 않는 루트 액세스입니다. 루트 권한으로 Apache를 실행하거나 sudoers 파일을 수정하는 등의 해결 방법을 시도했지만 문제가 해결되지 않았습니다.

Binary Wrapper를 사용한 해결 방법(Suid Bit 사용):

  1. 셸 스크립트 만들기: 루트로 실행하려는 명령이 포함된 스크립트(예: php_shell.sh)를 만드는 것으로 시작합니다.
  2. 소유권 및 권한 설정: 루트 사용자가 스크립트를 소유하고 다음 권한이 있는지 확인하세요.

    • 소유자: 읽기, 쓰기, 실행(rwx)
    • 그룹: 읽기, 실행(rx)
    • 기타: 읽기, 실행(rx)
  3. 바이너리 래퍼 만들기: 루트 권한으로 셸 스크립트를 실행할 바이너리 래퍼를 만듭니다. 다음은 래퍼 예시입니다.

    # 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
    로그인 후 복사
  4. 컴파일 및 권한 설정: 바이너리 래퍼를 컴파일하고 suid 비트로 설정합니다.

    • 컴파일: gcc Wrapper.c -o php_root
    • 소유권 설정: chown root php_root
    • 권한 설정: chmod u=rwx,go=xr, s php_root

이 php_root 래퍼는 호출 시 루트 권한으로 php_shell.sh에 지정된 명령을 실행합니다.

대체 솔루션:

사용하는 대신 외부 셸 스크립트를 사용하면 명령을 바이너리 래퍼에 직접 포함할 수 있습니다. 3단계의 내용을 루트 권한으로 실행하려는 명령으로 바꾸면 됩니다.

주의:

실행하려는 스크립트에 대한 절대 경로를 사용하는 것이 중요합니다. 악의적인 사용자가 바이너리를 악용하여 임의 명령을 실행하는 것을 방지합니다.

위 내용은 CentOS에서 PHP의 루트 명령을 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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