라즈베리 파이에 lighttpd와 fast-cgi를 설치했습니다. 루트 권한이 필요한 Python 스크립트를 실행할 때 다음 오류가 발생합니다.
런타임 오류: /dev/mem에 액세스할 수 없습니다. 루트로 실행해보세요! 역추적(마지막 가장 최근 호출): 파일 "/var/www/index.py", 134행, GPIO.setup(17, GPIO.OUT);#enable A RuntimeError: /dev/mem에 액세스할 수 없습니다. 루트로 실행해보세요!
visudo 및 "sudo usermod -a -G sudo www-data"를 사용하여 www-data를 sudoer로 추가했지만 작동하지 않습니다. lighttpd 루트 권한을 어떻게 부여할 수 있나요? 개인 프로젝트이므로 보안은 중요하지 않습니다.
답변1
lighttpd는 sudo를 사용하지 않습니다. 따라서 sudoers 그룹에 www-data를 추가하는 것은 도움이 되지 않습니다.
구성 파일의 웹 사용자를 www-data에서 루트로 변경해야 합니다.
server.username = "root"
원하는 경우 그룹을 www-data에 유지할 수 있지만 원하는 경우 루트로 변경할 수도 있습니다.
그러나 Python 스크립트에서는 sudo를 www-data로 사용할 수 있습니다. NOPASSWD로 설정되어 있는지 확인하세요.
웹 서버를 실행하는 것(또는 모든 서버에 명령을 실행할 root
수 있는 것 )은 어쨌든 매우 나쁜 습관입니다 . 웹 서버나 웹 애플리케이션의 취약점은 전체 시스템이 완전히 손상될 수 있음을 의미하기 때문입니다.s
u
/dev/mem
여기서는 setuid 루트에 의해 실행되는(또는 이를 실행하여 sudo
) 전용 유틸리티나 웹 서버에서 호출되는 별도의 서비스에 의해 수행 되어야 하는 모든 작업을 수행하기를 원할 것입니다 .