我有一个python脚本,它将调用系统调用来休眠系统(Ubuntu-Server)。我试试
#!/usr/bin/env python
import os
os.system('pm-hibernate')
如果我在没有sudo权限的情况下运行它,我会得到正确的错误:
This utility may only be run by the root user.
但是当用sudo-rights调用这个脚本时,没有任何事情发生。 如何从python中调用hibernate-command?
答案 0 :(得分:1)
使用sudo运行它:
#!/usr/bin/env python
from subprocess import check_call
check_call(['sudo', '/usr/sbin/pm-hibernate'])
并将运行此脚本的用户配置为允许在没有密码的情况下运行pm-hibernate
,例如,创建/etc/sudoer.d/pm-hibernate
文件并在其中写入%admin ALL = NOPASSWD: /usr/sbin/pm-hibernate
(sudo visudo -f /etc/sudoers.d/pm-hibernate
)。
确保/etc/sudoers
导入/etc/sudoers.d
目录(sudo visudo
)和/etc/sudoer.d/pm-hibernate
文件具有0440
权限:
$ sudo chmod 0440 /etc/sudoer.d/pm-hibernate
另见sudo less /etc/sudoers.d/README
。
该命令允许admin
组的所有成员在没有密码的情况下运行sudo pm-hibernate
。运行groups
,查看您所属的群组。