我有一个Python脚本,我希望以sudo python script.py
运行,因为有许多Pygame命令需要sudo权限。
但是,脚本中只有一个shell命令(使用os.system('...')
),如果以sudo身份运行则不起作用,但在命令行中作为脚本之外的标准用户可以正常工作。
是否有一种简单的方法可以“解除”这一命令?如果做不到这一点,我可以使用python script.py
运行脚本并对所有行除了相关的行之外具有sudo权限吗?
答案 0 :(得分:2)
可以使用sudo删除权限:
sudo -u unprivileged-user command ...
...但不意味着您可以恢复到特权升级前的确切状态;补充组可能不对,安全标签可能不正确等等。总之,这是一种破坏性操作。
最佳做法是避免需要升级权限 - 通过直接为用户提供特定任务所需的访问权限。这个特定情况听起来像你需要帧缓冲访问;没有root就很容易提供。
如果您的脚本确实需要升级其某些权限,那么最佳实践方法是将您的应用程序拆分为两个独立的进程 - 执行特权的进程工作,以及做其他事情的人 - 并在他们之间使用套接字或管道通信。这是一项很多工作 - 在大多数情况下,更多工作比配置事情更多,因此您根本不需要权限提升。