我正在使用 Ubuntu Desktop 16.04,我想知道是否可以让用户运行具有(需要)比用户更高权限级别的脚本,如果可以,如何操作。
一般来说,我希望有一个用户只能启动特定的脚本(需要管理员权限才能运行)并将 PC 置于睡眠模式(pm-sleep-hybrid)。
有没有办法实现第一个目标,甚至后者?
答案1
你是指这样的事情吗?
sudo pm-sleep-hybrid
然后您只需要先将该用户添加到 sudoers 组。
例如
sudo vi /etc/group
然后在提到用户 sudo 的行末尾附加用户 ID:
sudo:x:27:my_special_user
但是该用户在调用脚本时必须输入密码......
答案2
注意:以下答案引用的工具可能会损害您的系统。
“/etc/sudoers 文件控制谁可以在哪些机器上以哪些用户身份运行哪些命令,还可以控制特殊事项,例如是否需要密码才能执行特定命令。该文件由别名(基本上是变量)和用户规范(控制谁可以运行什么)组成。” Sudoers - 社区帮助 wiki
您可以修改此文件以允许用户或组以其他用户身份运行命令。此文件中的错误可能会对系统造成很大损害。
如果脚本被授权由 sudoers 文件运行,然后由非特权用户编辑。新脚本可以有效运行任何特权命令。因此,最好只允许将精确的命令添加到 sudoers 文件中。
首先通过运行安全地编辑文件sudo visudo
如果你想允许 bob(一个没有特权的用户)从控制台关闭系统而无需密码。
为此,您需要添加一些 cmnd 别名,如下所示:
Cmnd_Alias SHUTDOWN_CMDS = /sbin/poweroff, /sbin/halt, /sbin/reboot
您还需要添加用户规范(在文件末尾的“%admin ALL = (ALL) ALL”行之后使其生效 - 详情见上文):
bob ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS