>백엔드 개발 >PHP 튜토리얼 >PHP 애플리케이션에서 루트 명령을 안전하게 실행하는 방법은 무엇입니까?

PHP 애플리케이션에서 루트 명령을 안전하게 실행하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-17 16:03:02377검색

How to Execute Root Commands Securely from PHP Applications?

PHP를 통해 루트 명령을 원활하게 실행

루트 명령을 안전하게 실행하는 것은 웹 기반 애플리케이션의 일반적인 요구 사항입니다. 이 기사에서는 제한된 사용자 액세스로 루트 명령을 실행하여 기능 요구 사항을 충족하면서 보안을 강화할 수 있는 솔루션을 자세히 살펴보겠습니다.

초기 접근 방식은 Apache 사용자에게 루트 권한을 부여하는 것이었습니다. 그러나 이는 심각한 보안 위험을 초래하므로 사용하지 않는 것이 좋습니다. 대신, 우리는 보다 안전한 대안을 채택할 것입니다.

우리의 솔루션은 원하는 명령을 루트로 실행할 바이너리 래퍼를 만드는 것입니다. 이를 설정하기 위한 단계별 가이드는 다음과 같습니다.

  1. 루트 명령으로 스크립트 만들기:

    다음을 포함하는 스크립트 만들기 실행해야 하는 루트 명령. 예를 들어 SSHD 서비스를 다시 시작하려면 다음 콘텐츠로 php_shell.sh라는 스크립트를 생성하세요.

    #!/bin/sh
    /sbin/service sshd restart
  2. 보안 스크립트 권한:

    php_shell.sh의 소유자를 루트로 설정하고 루트 사용자에게만 쓰기 권한을 부여합니다.

    chown root php_shell.sh
    chmod u=rwx,go=xr php_shell.sh
  3. 바이너리 래퍼 만들기:

    이 바이너리는 루트 권한으로 php_shell.sh를 실행합니다. 다음 코드를 사용하여 Wrapper.c 파일을 만듭니다.

    #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;
    }
  4. 컴파일 및 권한 설정:

    wrapper.c 파일을 컴파일하고 suid 비트를 포함하여 올바른 권한을 설정하십시오.

    gcc wrapper.c -o php_root
    chown root php_root
    chmod u=rwx,go=xr,+s php_root

이 단계를 수행하면 php_shell에 지정된 루트 명령을 실행할 수 있는 바이너리 래퍼(php_root)가 생성됩니다. 쉿. 이는 시스템 보안을 손상시키지 않고 PHP 애플리케이션에서 루트 명령을 실행하는 안전한 방법을 제공합니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.