如何在Python脚本中“取消sudo”一个命令?

时间:2014-02-17 13:56:13

标签: python linux shell sudo

我有一个Python脚本,我希望以sudo python script.py运行,因为有许多Pygame命令需要sudo权限。

但是,脚本中只有一个shell命令(使用os.system('...')),如果以sudo身份运行则不起作用,但在命令行中作为脚本之外的标准用户可以正常工作。

是否有一种简单的方法可以“解除”这一命令?如果做不到这一点,我可以使用python script.py运行脚本并对所有行除了相关的行之外具有sudo权限吗?

1 个答案:

答案 0 :(得分:2)

可以使用sudo删除权限:

sudo -u unprivileged-user command ...

...但意味着您可以恢复到特权升级前的确切状态;补充组可能不对,安全标签可能不正确等等。总之,这是一种破坏性操作。

最佳做法是避免需要升级权限 - 通过直接为用户提供特定任务所需的访问权限。这个特定情况听起来像你需要帧缓冲访问;没有root就很容易提供。

如果您的脚本确实需要升级其某些权限,那么最佳实践方法是将您的应用程序拆分为两个独立的进程 - 执行特权的进程工作,以及做其他事情的人 - 并在他们之间使用套接字或管道通信。这是一项很多工作 - 在大多数情况下,更多工作比配置事情更多,因此您根本不需要权限提升。