%EB%A5%BC%20sudoer%EB%A1%9C%20%EC%84%A4%EC%A0%95%ED%95%98%EB%A9%B4%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
라즈베리 파이에 fast-cgi와 함께 lighttpd를 설치했습니다. 루트 권한이 필요한 Python 스크립트를 실행할 때 다음 오류가 발생합니다.
RuntimeError: /dev/mem에 접근할 수 없습니다. 루트로 실행해보세요! 역추적(가장 최근 호출 마지막): File "/var/www/index.py", line 134, in 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 스크립트에서 www-data로 sudo를 사용하는 것입니다. NOPASSWD를 설정했는지 확인하세요.
어떤 경우든 웹 서버를 실행하는 것은 (또는 어떤 명령에 대해 어떤 서버로 전환 root
할 수 있는 능력을 가지고 ) 매우 나쁜 습관입니다. 웹 서버나 그것이 제공하는 웹 애플리케이션의 취약점은 전체 시스템이 완전히 손상될 수 있다는 것을 의미하기 때문입니다. .s
u
/dev/mem
여기서는 setuid 루트(또는 를 통해 실행됨)인 전용 유틸리티 sudo
또는 웹 서버에서 호출되는 별도의 서비스를 통해 수행 해야 하는 모든 작업을 수행하기를 원할 것입니다 .