我已经在树莓派上安装了lighttpd和fast-cgi。当运行需要 root 权限的 python 脚本时,出现以下错误:
运行时错误:无法访问 /dev/mem。尝试以 root 身份运行!回溯(最近一次调用最后一次):文件“/var/www/index.py”,第 134 行,在 GPIO.setup(17, GPIO.OUT);#enable A RuntimeError:无法访问 /dev/mem。尝试以 root 身份运行!
我已使用 visudo 和“sudo usermod -a -G sudo www-data”将 www-data 添加为 sudoer,但它不起作用。我怎样才能给lighttpd root权限?安全性并不重要,因为这是一个个人项目。
答案1
lighttpd 不使用 sudo。因此,将 www-data 添加到 sudoers 组并没有帮助。
您需要将配置文件中的 Web 用户从 www-data 更改为 root:
server.username = "root"
如果需要,您可以将组保留在 www-data,但如果您愿意,您也可以将其更改为 root。
不过,您可以使用 sudo 作为 Python 脚本中的 www-data。确保设置为 NOPASSWD。
无论如何,运行 Web 服务器root
(或能够s
向任何服务器执行u
任何命令)都是非常糟糕的做法,因为 Web 服务器或其服务的任何 Web 应用程序中的任何漏洞都意味着整个系统可能会完全受到损害。
在这里,您很可能希望需要执行的任何操作/dev/mem
都由 setuid root(或通过 运行sudo
)的专用实用程序或由您的 Web 服务器调用的单独服务来执行。