我想通过网页更改树莓派4上接口eth0的静态IP地址。我正在运行没有桌面的buster lite 4.19。据我了解,我需要修改/etc/dhcpcd.conf文件中的“ static ip_address =“行,以使更改永久生效。
我可以执行以下命令,直到重新启动控制器后,它才能正常工作。
ifconfig eth0 192.168.1.10 netmask 255.255.255.0
我发现此链接在命令行中效果很好。 Using sed to change ip addresses in dhcpcd.conf file
我试图使用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);
有更好的方法吗?
在此先感谢您的帮助!
答案 0 :(得分:1)
我认为您的问题是在您不是root用户时以root用户身份执行命令的普遍问题。
有几种解决方法:
1 /。编写以root用户身份执行的特定脚本或二进制文件。
2 /。使用sudo并确保pi Web标识(www-data)在/ etc / sudoers文件中具有一个条目,以使其能够执行您指定为root用户的命令,而无需使用密码
3 /。更改您想要的文件的权限,例如组写并使其组www-data。嗯我看到我的是netdev。然后授予它666权限以使它的世界可写,并使组保持相同可能更安全。
我认为,在受保护的环境中进行快速入侵可能最容易。 例如sudo chmod 666 /etc/dhcpcd.conf并查看是否有效。
2 /。对于合理的安全环境还可以。
我用过1 /。当我希望所有用户都能够执行root-ish