因此,我尝试授予用户名 shutdown 为 root 权限。我创建了一个关机组并使用以下命令添加我的用户名:
groupadd shutdown
usermod -A shutdown annguyen
之后,我使用 su - 然后使用 visudo 以 root 身份登录。注释掉以下几行:
Defaults targetpw
ALL ALL=(ALL) ALL
我将讨论如果取消注释它们会发生什么情况。
然后我添加行 %shutdown ALL=(ALL) NOPASSWD:/sbin/shutdown
好的,这就是行为。
当我调用 xterm,然后输入时,sudo /sbin/shutdown -h 17:00
它返回user annguyen is not in the sudoer file. This incident will be reported
。我一次又一次地检查,我确信我处于关机组中,并且添加了允许该组使用关机的行。
但是,当我再次使用登录自己su annguyen
并重试时,sudo /sbin/shutdown ...
它成功了。但是,我实际上以自己的用户名登录了两次。我知道,因为当我输入 exit 时,它不会关闭 xterm,而是将我返回到父级 shell,也以我的身份登录。所以基本上,以 annguyen 身份登录的子 shell 可以调用 sudo shutdown,但以 annguyen 身份登录的父级 shell 则不能。这是为什么?
不确定我是否遗漏了什么。最终,我想要的是,如果我调用它,sudo /sbin/shutdown/
它会要求我输入 annguyen 的密码,而其他一切都是针对 root 的。
这可能吗?
谢谢,
越南电气公司
答案1
正如您在第一部分中发现的那样,您需要注销并登录才能将新组应用到您的用户。
对于第二部分:shutdown 组适用于不允许 sudo 为 root 的用户。如果您的用户 sudo 为 root,则加入 shutdown 组没有任何好处(与此命令相关)。
sudo“命令”会增加活动用户的权限,而“增加的级别”不是基于后面的命令,而是基于用户。如果您的用户被允许使用 sudo 来成为 root,则 sudo 将以 root 身份运行该命令,即使其他用户(在关机组中且不是 sudoers)也可以以关机组而非 root 身份运行此命令。