以另一个用户身份运行python脚本

时间:2009-09-30 16:31:06

标签: python linux

在Linux机器上,我想以另一个用户身份运行Python脚本。

我已经在C ++中创建了一个调用脚本的包装器程序,因为我已经意识到运行脚本的所有权取决于python解释器的所有权。之后,我将C ++程序更改为其他用户并运行C ++程序。

此设置似乎不起作用。有什么想法吗?

3 个答案:

答案 0 :(得分:11)

您可以使用os.setuid()设置用户,并且可以使用pwd获取uid。 像这样:

>>> import pwd, os
>>> uid = pwd.getpwnam('root')[2]
>>> os.setuid(uid)

显然,这只有在用户或可执行文件具有此权限的情况下才有效。究竟如何设置我不知道。显然,如果你是root用户,它会起作用。我想你可能需要Python可执行文件的setuid标志,这会留下一个WHOPPING安全漏洞。如果你setuid的用户也是一个专门的受限制用户,除了你需要做的任何事情之外什么都不能做,这是可能的。

Unix安全性,基于用户和设置和东西,不是很好或不实用,并且很容易留下很大的安全漏洞。一个更安全的选择实际上是做这个客户端 - 服务器类型,所以你有一个恶魔做任何事情,客户端与它进行对话。然后,恶魔可以以比用户更高的安全性运行,但是用户在运行脚本时必须提供名称和密码,或者使用某些公钥/私钥或某些人识别自己。

答案 1 :(得分:1)

为这些用户提供sudo su $dedicated_username能力并定制系统权限,以便$dedicated_user具有足够但不过度的访问权限。

答案 2 :(得分:0)

使用命令sudo

为了以用户身份运行程序,系统必须“验证”该用户。

显然,root可以像任何用户一样运行任何程序,任何用户都可以su向另一个拥有密码的用户运行。

程序sudo可以配置为允许一组用户sudo作为特定用户的特定命令。

例如,您可以创建一个组scriptUsers和一个用户scriptRun。然后,配置sudo以允许scriptUsers中的任何用户成为scriptRun仅运行您的脚本。