嗨,我有一个修改应用程序配置文件的Python脚本。要应用这个,我需要重新启动应用程序。为此,我调用一个init.d文件。但是,当我执行此操作时,我需要成为root用户,否则应用程序无法将其绑定到端口上。另外我不想执行所有我的python脚本的根权限。我如何使用root权限执行重新启动,然后将其删除。python更改权限以重新启动外部应用程序
我设置的用户权限在与开头:
if __name__ == "__main__":
uid = pwd.getpwnam('ubuntu')[2]
os.setuid(uid)
app.run(host='0.0.0.0', port=5001, debug=True)
,并在我的脚本结束时,我需要执行:
commands.getoutput('/etc/init.d/webapplication restart')
web应用的端口上绑定80
如果我用这个配置执行我的脚本,web应用程序不能启动并返回一条消息,“无法在80上绑定套接字”。
有什么想法?有一个干净的解决方案,在一个Python脚本下的Debian服务器上只执行一个具有root权限的外部命令?
Thansk提前。 P:我试图使用像我的主要功能一样的方法,我用“root”替换了用户“ubuntu”,但它不起作用。
谁想要执行你的文件的用户是在isudoers的列表?如果你的用户在sudoers列表中,你可以改变一些东西。但是,您需要root权限才能更改/修改Init Services。 您是否尝试将您的用户添加到根组? – ManuParra 2013-03-02 23:17:14
相关:[有没有办法让非root进程绑定到Linux上的“特权”端口(<1024)?](http://stackoverflow.com/q/413807/4279) – jfs 2013-03-03 00:33:04