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

标签 python linux

在 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/

相关文章:

Linux IPC选择?

python - 在索引和值 "for i, v in enumerate(listVar):"上是否有 C++/C++11 类似于 python 迭代?

linux - 使用grep函数后如何删除文件

c - 如何使用exec函数启动登录shell(csh)?

python - 如何透明拦截stdin/out/err

c - 交叉编译问题

linux - 在 Debian 9 上启用核心转储

python - 如何将 Tinder data.json 转换为 CSV

python - 如何对单个包使用 python 日志记录

python - 在列表中添加列表(高级功能)