Unix 如何使用任何编程语言编辑/更新主机(etc/hosts)文件
动态地我想编辑/更新主机(etc/hosts)文件以添加域 要编辑主机(etc/hosts)文件,需要管理员权限。使用Linux,我可以通过以下命令完成此操作 sudogedit/etc/hosts 但我正试图通过使用编程语言来做到这一点Unix 如何使用任何编程语言编辑/更新主机(etc/hosts)文件,unix,hosts,Unix,Hosts,动态地我想编辑/更新主机(etc/hosts)文件以添加域 要编辑主机(etc/hosts)文件,需要管理员权限。使用Linux,我可以通过以下命令完成此操作 sudogedit/etc/hosts 但我正试图通过使用编程语言来做到这一点 如何操作?最好使用SSH之类的工具,以root(或system()中的sudo)身份连接到计算机,修改文件,然后断开连接。这样做的另一个好处是可以方便地提示用户输入密码 要在没有提示的情况下执行此操作,用户必须设置一些方法以根用户身份完成此操作。例如,设置助手
如何操作?最好使用SSH之类的工具,以root(或system()中的sudo)身份连接到计算机,修改文件,然后断开连接。这样做的另一个好处是可以方便地提示用户输入密码 要在没有提示的情况下执行此操作,用户必须设置一些方法以根用户身份完成此操作。例如,设置助手应用程序的UID、安装无密码密钥、修改LDAP树或其他各种方式。这有点“讨厌”,因为没有更好的术语
对于通常不具备权限提升功能的用户,无法执行此操作。您仍然必须拥有编辑文件的正确权限
要更改文件,请以读/写/附加模式(即使用
fopen()
)打开文件(即模式“a”
),并将新文本写入文件末尾。您的程序需要以适当的权限运行。经典技术之一是使文件归root所有并设置setuid位。当您的程序运行时,它将成为root,并且能够修改/etc/hosts
也就是说,setuid代码是有风险的。代码中的错误可能会导致程序执行一些非常糟糕的操作,从而导致系统无法使用。恶意用户可以使用某些bug以root用户身份运行任意程序并接管您的系统。我假设您在命令提示符处,您可以在那里发出sudo命令 如果您拥有访问权限,就像您声称的那样,那么任何可以向现有文本文件添加一行文本的编程语言(或者不可能创建一行文本)都可以工作。你可以给那个程序一些额外的权利,但那是另一个主题
小结:你懂什么语言?=>用那个 此文件由更新的操作系统和安全/防病毒软件高度“保护”,仅供参考:)复制:@Randolph Potter:我也问过这个问题,