在 Linux 机器上,我想以另一个用户身份运行 Python 脚本。
我已经用 C++ 编写了一个调用脚本的包装程序,因为我已经意识到运行脚本的所有权是由 python 解释器的所有权决定的。之后,我将 C++ 程序更改为不同的用户并运行 C++ 程序。
此设置似乎不起作用。有什么想法吗?
最佳答案
可以通过os.setuid()设置用户,通过pwd获取uid。 像这样:
>>> import pwd, os
>>> uid = pwd.getpwnam('root')[2]
>>> os.setuid(uid)
显然,这仅在用户或可执行文件具有这样做的权限时才有效。具体如何设置我不知道。显然,如果你是 root,它就可以工作。我认为您可能需要在 Python 可执行文件上设置 setuid 标志,这会留下巨大的安全漏洞。如果您设置了 setuid 的用户也是一个专用的受限用户,除了您需要做的事情之外,他什么也做不了。
Unix 安全,基于用户和 setuiding 之类的东西,不是很好或实用,而且很容易留下大的安全漏洞。一个更安全的选择实际上是执行这种客户端-服务器类型的操作,因此您有一个可以执行所有操作的恶魔,客户端可以与之对话。然后恶魔可以以比用户更高的安全性运行,但用户在运行脚本时必须提供名称和密码,或者使用一些公钥/私钥等来标识自己。
关于python - 以另一个用户身份运行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1499268/