%20%E8%A8%AD%E5%AE%9A%E7%82%BA%20sudoer%20%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我已經在樹莓派上安裝了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 伺服器呼叫的單獨服務來執行。