저는 Raspberry Pi의 Raspbian(Debian 기반)에서 웹 서버 lighttpd를 실행하고 있습니다. 서버는 www-data 사용자로 실행 중입니다( 확인 ps aux
). 다음 줄을 추가했습니다 /etc/sudoers
.
www-data ALL=NOPASSWD:/opt/vc/bin/vcgencmd
vcgencmd
PHP 파일의 상태 정보를 제공하는 Raspberry Pi에서 도구를 실행하는 기능
<? echo shell_exec('vcgencmd version'); ?>
sudo
인쇄되는 것은 vcgencmd가 잘못된 권한으로 실행될 때 나타나는 "VCHI 초기화 실패"(사용자에게 실행할 때 나타나는 예상 버전 정보 대신)입니다 .
달리기를 예로 들어보자
<? echo shell_exec('cat /sys/class/thermal/thermal_zone*/temp'); ?>
아무런 변경 없이 /etc/sudoers
작동하므로 PHP에 문제(예: 금지 shell_exec
또는 기타 문제)가 없습니다.
명령을 실행하려면 또 무엇을 설정해야 합니까?
답변1
추가한 것을 사용하려면 에 /etc/sudoers
전화해야 합니다 sudo
.
sudo
setuid 비트가 설정된 프로그램입니다. 특별한 것이 전혀 없습니다. 즉, 프로그램을 시작할 때마다 개입하지 않는다는 의미입니다.
호출할 수 있는 이유 cat /sys/class/thermal/thermal_zone*/temp
는 이러한 파일에 대한 읽기 액세스 권한이 있기 때문입니다. 파일 시스템 권한이 설정된 방법에 따라 읽기 권한이 있을 수 있지만 반드시 쓰기 권한이 있는 것은 아닙니다.
vcgencmd version
자신의 사용자가 시작할 때 이유에 대한 두 가지 가능한 설명이 있습니다.
- 귀하의 프로필에
alias vcgencmd='sudo vcgencmd
자동으로 실행됩니다sudo
. vcgencmd
작업에 필요한 파일에 대한 충분한 권한이 있습니다. 쓰기 액세스 권한이 필요하고 해당 파일이 귀하가 속한 그룹에 속해 있고 해당 그룹에 대한 쓰기 액세스 권한이 있는 경우에는 sudo가 필요하지 않습니다.
즉, 명령을 sudo vcgencmd version
.