动态地我想编辑/更新主机(etc/hosts)文件以添加域。
要编辑主机(etc/hosts)文件需要管理员权限。使用 Linux 我可以通过这个命令做到这一点
须藤 gedit /etc/hosts
但我试图通过使用编程语言来做到这一点。
我该怎么做?
最好的办法是使用 SSH 之类的东西并以 root 身份(或 system() 中的 sudo)连接到计算机,修改文件然后断开连接。这样做的另一个好处是方便提示用户输入密码。
要在没有提示的情况下执行此操作,用户必须设置一些方法来以root 身份完成它。即设置帮助应用程序、安装无密码密钥、修改 LDAP 树或各种其他方式。由于缺乏更好的术语,这有点“恶心”。
对于通常没有权限提升功能的用户,没有办法使这项工作。
您的程序需要以适当的权限运行。经典技术之一是使文件为 root 拥有并设置 setuid 位。当您的程序运行时,它将成为 root 并且能够修改 /etc/hosts。
也就是说,setuid 代码是有风险的。代码中的错误可能会导致程序做一些糟糕的事情,以至于您的系统变得无法使用。恶意用户可以使用某些错误来以 root 身份运行任意程序并接管您的系统。
您仍然必须具有编辑文件的正确权限。
要更改文件,请以读/写/附加模式(即"a"
使用模式fopen()
)打开文件并将新文本写入文件末尾。
我假设您在命令提示符下,您可以在其中发出该 sudo 命令..
如果您像您声称的那样拥有访问权限,那么任何可以将一行文本添加到现有文本文件(或创建它,如果不是,这不太可能)的编程语言都将起作用。您可能不得不赋予该程序一些额外的权利,但这是一个不同的主题!
摘要:你懂什么语言?=> 使用它!