사용자 www-data에 대한 명령을 허용하는 방법은 무엇입니까?

사용자 www-data에 대한 명령을 허용하는 방법은 무엇입니까?

eth0에서 IP 주소를 가져오기 위해 다음 PHP 명령을 실행하려고 합니다.

$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | tr ':' ' ' | awk '{ print $3 }'"));

하지만 난 아무것도 돌려받지 못해요. SSH를 통해 똑같은 명령을 실행하면 IP를 얻으므로 명령이 작동합니다.

이 줄을 열고 visudo추가한 후 apache2를 다시 시작했습니다.

www-data        ALL = NOPASSWD: /sbin/ifconfig
www-data        ALL = NOPASSWD: /bin/grep
www-data        ALL = NOPASSWD: /usr/bin/awk
www-data        ALL = NOPASSWD: /usr/bin/tr

하지만 난 아직도 아무것도 돌려받지 못해요

답변1

grep 패턴이 출력과 일치하지 않는 것 같으 ifconfig므로 grep출력이 생성되지 않습니다. 다음을 시도해 보십시오.

$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | awk '{ print $2 }'"));

답변2

해결책을 찾았습니다. shell_execOS가 독일어로 설정되어 있어도 항상 영어로 출력되기 때문입니다 . 실행하면 출력 대신 shell_exec("/sbin/ifconfig")항상 영어로 출력됩니다 .inet addrinet Adresse

또한 내 파일의 사용자 및 그룹을 로 변경 www-data하고 chown로 스크립트 실행을 허용하는 것을 잊었습니다 chmod. 그래도 이것이 필요한지는 모르겠습니다.

관련 정보