PHP에서 특정 사용자로 외부 명령을 실행하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-10-31 11:55:01
원래의
961명이 탐색했습니다.

How to Execute External Commands as a Specific User in PHP?

PHP에서 특정 사용자로 외부 명령 실행

서버 측 환경에서 작업할 때 외부 명령줄 프로그램을 실행해야 하는 상황에 직면하는 것이 일반적입니다. PHP 스크립트에서. 그러나 PHP가 실행되는 기본 사용자에게는 특정 애플리케이션에 대한 충분한 권한이나 액세스 권한이 없을 수 있습니다.

문제

localhost에서 Apache를 실행하고 Rhythmbox 재생을 제어하려고 시도하는 시나리오를 생각해 보십시오. www-user로 실행되는 PHP 스크립트에서. Rhythmbox-client --pause 명령을 실행하면 수동으로 실행할 때 완벽하게 작동하지만 Rhythmbox가 사용자 인스턴스를 인식하거나 액세스하지 못하기 때문에 www-user로 실행하면 실패합니다.

해결책

한 가지 효과적입니다. 해결책은 sudo 명령을 활용하여 특정 사용자로 외부 프로그램을 실행할 수 있도록 하는 것입니다. 여기에는 웹 서버 사용자(예: wwwuser)에게 특정 명령을 실행할 수 있는 권한을 부여하기 위해 sudoers 파일(visudo)을 수정하는 작업이 포함됩니다.

wwwuser ALL=/usr/bin/rhythmbox-client
로그인 후 복사

이는 필요한 명령만 실행하는 Apache의 기능을 제한하여 잠재적인 보안 위험을 방지합니다. .

확장 솔루션

이 특별한 경우 PHP가 www-user로 실행되기 때문에 Rhythmbox가 여전히 사용자 인스턴스를 인식하지 못할 수 있습니다. 이 문제를 해결하려면 리듬박스 클라이언트를 호출하고 실행 중인 사용자 환경에서 DBUS_SESSION_BUS_ADDRESS를 검색하는 bash 스크립트를 생성하세요.

<code class="bash">#! /bin/bash
DBUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/*/environ 2>> /dev/null| sed 's/DBUS/\nDBUS/g' | tail -n 1`
if [ "x$DBUS_ADDRESS" != "x" ]; then
        export $DBUS_ADDRESS
        /usr/bin/rhythmbox-client --pause
fi</code>
로그인 후 복사

이 bash 스크립트는 PHP에서 wwwuser로 실행되어 Rhythmbox 재생을 제어할 수 있습니다. PHP 애플리케이션에서 사용자로 로그인하세요.

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

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