以其他用户身份运行python脚本
在Linux机器上,我想以另一个用户的身份运行Python脚本 <>我已经在C++中编写了一个调用脚本的包装程序,因为我已经意识到运行脚本的所有权是由Python解释器的所有权决定的。之后,我将C++程序改为不同的用户,运行C++程序。以其他用户身份运行python脚本,python,linux,Python,Linux,在Linux机器上,我想以另一个用户的身份运行Python脚本 我已经在C++中编写了一个调用脚本的包装程序,因为我已经意识到运行脚本的所有权是由Python解释器的所有权决定的。之后,我将C++程序改为不同的用户,运行C++程序。 此设置似乎不起作用。有什么想法吗?使用命令sudo 为了以用户身份运行程序,系统必须“验证”该用户 显然,root可以作为任何用户运行任何程序,并且任何用户都可以使用密码将su发送给另一个用户 程序sudo可以配置为允许一组用户作为特定用户sudo特定命令 例如,您
此设置似乎不起作用。有什么想法吗?使用命令
sudo
为了以用户身份运行程序,系统必须“验证”该用户
显然,root
可以作为任何用户运行任何程序,并且任何用户都可以使用密码将su
发送给另一个用户
程序sudo
可以配置为允许一组用户作为特定用户sudo
特定命令
例如,您可以创建一个组
scriptUsers
和一个用户scriptRun
。然后,配置sudo
,让scriptUsers
中的任何用户成为scriptRun
,只运行您的脚本。让这些用户能够sudo su$dedicated_username
并在您的系统上定制权限,以便$dedicated_user
拥有足够的权限,但不会过多,访问。您可以使用os.setuid()设置用户,也可以使用pwd获取uid。
像这样:
显然,这只有在用户或可执行文件具有这样做的权限时才起作用。我不知道该怎么设置。显然,如果你是root,它是有效的。我认为您可能需要在Python可执行文件上设置setuid标志,这将留下一个巨大的安全漏洞。如果您设置的用户也是一个专用的受限用户,除了您需要做的任何事情之外,不能做任何事情,那么这可能是允许的
基于用户、设置指导等的Unix安全性不是很好,也不实用,很容易留下很大的安全漏洞。一个更安全的选择实际上是做这个客户机-服务器类型化,所以你有一个恶魔做任何事情,客户机与之对话。然后,demon可以以比用户更高的安全性运行,但是用户在运行脚本时必须提供名称和密码,或者使用一些公钥/私钥或类似的东西来标识自己。不能使用sudo,因为脚本需要被其他人使用。您的其他用户是否没有运行
python
的权限?这不是运行python的问题。脚本需要执行需要特定权限的操作。我不想给所有用户这些权限。脚本的行为有点像一个受控制的权限授予者,但首先脚本本身需要权限……听起来好像您想要使用位。请记住,这不会更改所有环境变量。ie~/
仍将扩展到/home/old\u user/
,这可能会在以后的道路上造成一些麻烦。@johannix我也遇到了确切的问题。你找到解决方法了吗?我在一个从Ubuntu init脚本运行的脚本中使用了这段代码,它不需要python可执行文件上的setuid位。如果你是root或sudo脚本,它不需要setuid位。
>>> import pwd, os
>>> uid = pwd.getpwnam('root')[2]
>>> os.setuid(uid)