2015-09-04 20 views
2

我正在编写一个需要启动/停止其他服务的linux上的python管理守护进程。遵循最小权限原则,我想通常以普通用户权限运行,但当需要启动/停止其他服务时,我希望它成为root用户。基本上我想做的是从命令行执行的命令。我不能直接从守护进程执行sudo,因为它没有tty。我不想以超级用户身份运行守护程序,因为它不需要以root身份运行。有没有办法从python做到这一点,而不需要使用sudo?来自python守护进程的“sudo”操作

预先感谢您。

Ranga。

+0

只为该守护程序创建一个新用户,并为守护程序用户提供sudo权限而不需要密码?请注意,'sudo'提供了控制哪些命令可以被使用的不同方法。 – Bakuriu

+0

尝试过但它不起作用。我无法从守护进程执行sudo命令,因为sudo需要登录shell才能运行。 – LostInTheFrequencyDomain

+1

我不认为sudo应该在这里帮助,因为如果你的应用程序可以无条件地sudo没有密码,它基本上是以root权限运行的。通常这样做的方式是以root身份启动守护进程,但将其分割并产生一个具有较少特权的新进程,这些进程执行大部分工作,并只传递需要父进程的根权限的请求。父进程的代码可以通过严格的限制保持在最低限度,从而最大限度地减少攻击面。看到https://en.wikipedia.org/wiki/Privilege_separation – haraldkl

回答

0

在这种情况下,我有一个瓶子后端,需要做一些特权。我把它分解成两个后端 - 一个没有特权的和另一个小特权片段,而不是使用sudo。

也可以在pty中运行sudo,但我决定不采用这种方法,因为它确实存在安全漏洞。