我想從網頁更改樹莓派 4 上接口 eth0 的靜態 IP 地址。我正在運行沒有桌面的buster lite 4.19。據我了解,我需要修改 /etc/dhcpcd.conf 文件中的“static ip_address=”行以使更改永久生效。我可以執行以下命令,并且在重新啟動控制器之前它可以正常工作。ifconfig eth0 192.168.1.10 netmask 255.255.255.0我發現這個鏈接在命令行中效果很好。 使用 sed 更改 dhcpcd.conf 文件中的 IP 地址我嘗試使用 exec() 命令來執行 php 腳本中的命令。讀取工作正常,但 sed 操作不寫入任何內容。我假設存在權限問題,但不確定如何解決這個問題。我在代碼中使用以下命令。$newIPcidr = "192.168.1.10/24";$cmd = "cat /etc/dhcpcd.conf | grep -e '^static ip_address=' | cut -d= -f2";$curIP = exec($cmd); $cmd = "sudo sed -i -e \"s@^static ip_address=" . $curIP . "\b@static ip_address=" . $newIPcidr . "@g\" /etc/dhcpcd.conf";$output = exec($cmd);有一個更好的方法嗎?預先感謝您對此的任何幫助!
1 回答

一只名叫tom的貓
TA貢獻1906條經驗 獲得超3個贊
我認為您的問題是當您不是 root 時以 root 身份執行命令的一般問題。
有幾種方法可以解決這個問題:
1/. 編寫以 root 身份執行的特定腳本或二進制文件。
2/. 使用 sudo 并確保 pi Web 身份 (www-data) 在 /etc/sudoers 文件中有一個條目,使其能夠執行您指定為 root 的命令,而無需使用密碼
3/. 更改您想要的文件的權限,例如組寫入并使其組為www-data。唔。我看到我的是netdev??赡芨踩氖墙o它 666 權限,以便它的世界可寫,并保持組不變。
我認為對于在受保護的環境中進行快速破解來說,后者可能是最簡單的。例如 sudo chmod 666 /etc/dhcpcd.conf 并查看是否有效。
2/. 對于相當安全的環境來說是可以的。
我用過1/. 當我希望所有用戶都能夠執行 root 權限的操作時
- 1 回答
- 0 關注
- 98 瀏覽
添加回答
舉報
0/150
提交
取消