我正在开发一个Python应用程序,需要访问hosts文件来添加几行代码。一切都在我的测试文件上运行,但是当我告诉程序在/etc/hosts中修改我的hosts文件时,我得到了IOError 13。据我所知,我的应用程序没有根权限。
我的问题是,我如何绕过这个问题?有没有办法提示用户输入密码?如果我在Windows机器上运行应用程序,进程会有什么不同吗?
下面是有问题的代码:
f = open("/etc/hosts", "a")
f.write("Hello Hosts File!")
另外,我计划在最终产品中使用py2app和py2exe。他们能帮我处理根权限问题吗?
如果您在
sudoers
列表中,您可以使用sudo
启动progamm:sudo以root权限运行python解释器。 第一次这样做时,会要求您输入您的密码,稍后的电话不会询问您的最后一个
sudo
电话是不是不久前。在sudoers列表中(在大多数情况下,
/etc/sudoers
)表示管理员信任您。如果你打电话给sudo
,你不会被要求输入root
密码,而是你的密码。你必须证明正确的用户坐在终端。关于http://en.wikipedia.org/wiki/Sudo上
sudo
的详细信息如果要远程控制,可以使用
-S
命令行开关或使用http://www.noah.org/wiki/pexpect处理此问题的最简单方法是将更改写入临时文件,然后运行程序覆盖受保护的文件。就像这样:
当Python程序运行sudo时,sudo程序将提示用户输入密码。如果你想让它基于GUI,你可以运行一个GUI sudo,比如“gksu”。
在Windows上,hosts文件隐藏在\Windows下的几个子目录中。您可以使用相同的常规技巧,但Windows没有sudo命令。下面是对等价物的讨论:
https://superuser.com/questions/42537/is-there-any-sudo-command-for-windows
相关问题 更多 >
编程相关推荐