2012-08-27 4 views
0

CentOS 서버의 GUI 용 PHP 스크립트를 작성하고 있습니다. 테스트 목적으로 Apache를 localhost로 설정했습니다. Cent OS는 연결된 USB 장치를 자동 마운트하지 않습니다. PHP에서는 USB 장치가 연결되어 있는지 확인한 후 마운트하고 사용자의 파일 내용을 나열해야합니다. 이것은 bash에서 매우 간단하지만, PHP로는 작동하지 않습니다. 나는 exec()shell_exec() 기능을 가지고 놀았습니다. 둘 다 수동 즉, 명령을 시도 : PHP : USB 장치 마운트

exec("./mountlist.sh"); 

내가 같은 일을 것를 호출 할 수 있습니다 PHP에서 함수가, 아니면 내가 뭔가를 놓친 거지 :
shell_exec("sudo mount /dev/sdb1 /mnt"); 

과 bash는 스크립트를 통해

execshell_exec 기능이 있습니다. 두 함수 모두 쉘에서 잘 작동합니다. mount가 루트 명령이기 때문에 나는 bash 스크립트에 sudo을 포함 시켰습니다.

+2

sudo 권한을 가지고 실행중인 모든 사용자 php는 무엇입니까? 암호가 없어도 권한이 부여됩니까? –

+0

나는 PHP와 bash에 꽤 익숙하지 않다.하지만 사용자가하지 않는다면 문제가되지 않을 것이다. Apache 사용자에게 루트 권한을 부여하는 방법은 무엇입니까? – user1628380

+3

아파치는 이미 root privs로 시작하므로 (포트 80에 바인드 할 수 있음) 웹 서버를 루트로 실행하는 것은 근본적으로 나쁜 아이디어이기 때문에 삭제합니다. –

답변

1

PHP 스크립트 내부에서 sudo 할 수 없습니다. sudo 암호를 입력 할 방법이 없습니다.

당신은 쉘 스크립트를 작성하고 passwd 명령은 당신이 비록 루트가 소유 암호 파일에 기록 할 수있는 방법은 루트 사용자

http://www.dba-oracle.com/linux/sticky_bit.htm

로 실행해야하는 스티키 비트를 사용할 수 있습니다 일반 사용자로 실행

또한 웹 사용자에게 파일 시스템을 마운트/마운트 해제 할 권한을 부여 할 수 있습니다 (대부분의 시스템에서 그를 퓨즈 그룹에 추가하십시오).하지만 웹 서버가 해킹 당하면 더 개방적이고 위험합니다. 쉘 스크립트와 끈적 끈적한 비트로 여러분의 목적을 달성하십시오.

+0

고마워요! – user1628380