如何使用任何编程语言编辑/更新主机(etc / hosts)文件

时间:2009-10-29 07:10:02

标签: unix hosts

动态地我想编辑/更新主机(etc / hosts)文件以添加域。

要编辑主机(etc / hosts)文件,需要Admin特权。使用Linux我可以通过此命令

执行此操作

sudo gedit / etc / hosts

但我试图使用编程语言来做到这一点。

我该怎么做?

4 个答案:

答案 0 :(得分:2)

您最好的选择是使用SSH之类的东西并以root身份连接到计算机(或系统()中的sudo),修改文件然后断开连接。这样做的另一个好处是可以方便地提示用户输入密码。

要在没有提示的情况下执行此操作,用户必须设置一些方法来完成 as root。即setuid'ing帮助应用程序,安装无密码密钥,修改LDAP树或其他各种方法。由于缺乏一个更好的术语,这有点'icky'。

对于通常没有权限提升功能的用户,无法使用此功能。

答案 1 :(得分:2)

您的程序需要以适当的权限运行。其中一种经典技术是使root拥有该文件并设置setuid位。当你的程序运行时,它将成为root用户,并且能够修改/ etc / hosts。

也就是说,setuid代码存在风险。代码中的错误可能导致程序执行非常糟糕的操作,导致系统无法使用。恶意用户可以使用某些错误以root身份运行任意程序并接管您的系统。

答案 2 :(得分:1)

您仍然必须拥有编辑文件的正确权限。

要更改文件,请使用"a"以读/写/追加模式打开文件(即模式fopen())并将新文本写入文件末尾。

答案 3 :(得分:1)

我假设您处于命令提示符,您可以在其中发出sudo命令..

如果您拥有访问权限,正如您声称的那样,那么任何可以向现有文本文件添加一行文本的编程语言(或者在不可能的情况下创建它的情况下)都可以使用。您可能会为该程序提供一些额外的权利,但这是一个不同的主题!

总结:您知道哪种语言? =>用那个!