动态地我想编辑/更新主机(etc / hosts)文件以添加域。
要编辑主机(etc / hosts)文件,需要Admin特权。使用Linux我可以通过此命令
执行此操作sudo gedit / etc / hosts
但我试图使用编程语言来做到这一点。
我该怎么做?
答案 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命令..
如果您拥有访问权限,正如您声称的那样,那么任何可以向现有文本文件添加一行文本的编程语言(或者在不可能的情况下创建它的情况下)都可以使用。您可能会为该程序提供一些额外的权利,但这是一个不同的主题!
总结:您知道哪种语言? =>用那个!