在Linux机器上,我想以另一个用户身份运行Python脚本.
我已经在C++中创建了一个调用脚本的包装程序,因为我已经意识到运行脚本的所有权取决于python解释器的所有权.之后,我将C++程序更改为其他用户并运行C++程序.
此设置似乎不起作用.有任何想法吗?
Len*_*bro 12
您可以使用os.setuid()设置用户,并且可以使用pwd获取uid.像这样:
>>> import pwd, os
>>> uid = pwd.getpwnam('root')[2]
>>> os.setuid(uid)
Run Code Online (Sandbox Code Playgroud)
显然,这仅在用户或可执行文件具有这样做的权限时才有效.究竟如何设置我不知道.显然,如果你是root用户,它会起作用.我想你可能需要Python可执行文件的setuid标志,这会留下一个WHOPPING安全漏洞.如果您设置的用户也是一个专门的受限用户,除了您需要做的任何事情之外什么都不能做,这是可能的.
基于用户和设置和东西的Unix安全性不是很好或不实用,并且很容易留下很大的安全漏洞.一个更安全的选择实际上是做这个客户端 - 服务器类型,所以你有一个恶魔做任何事情,客户端与它进行对话.然后,恶魔可以以比用户更高的安全性运行,但是用户在运行脚本时必须提供名称和密码,或者使用某些公钥/私钥或某些人来识别自己.
Ste*_*ven -1
使用命令sudo.
为了以用户身份运行程序,系统必须“验证”该用户。
显然,root可以以任何用户身份运行任何程序,并且任何用户都可以su向另一个用户提供密码。
该程序sudo可以配置为允许一组用户作为sudo特定用户执行特定命令。
例如,您可以创建一个组scriptUsers和一个用户scriptRun。然后,配置sudo为让任何用户scriptUsers只能scriptRun运行您的脚本。
| 归档时间: |
|
| 查看次数: |
22399 次 |
| 最近记录: |