将用户添加到适当的组后如何允许立即运行 su

use*_*035 8 permissions su

我有su具有以下权限的可执行文件:

bash-4.2# ls -la /bin/su
-rws--s--- 1 root wheel 59930 Sep 14  2012 ./su
Run Code Online (Sandbox Code Playgroud)

当我以用户身份而不是wheel组登录并尝试运行时su,出现错误,这是正确的:

bash-4.2$ su
bash: /bin/su: Permission denied
Run Code Online (Sandbox Code Playgroud)

之后,我将此用户添加到wheelroot

bash-4.2# usermod -a -G wheel user
Run Code Online (Sandbox Code Playgroud)

但是对于同一个终端会话,我仍然无法运行su

bash-4.2$ su
bash: /bin/su: Permission denied
Run Code Online (Sandbox Code Playgroud)

对于新会话,我可以运行su. su将用户添加到适当的组后,如何允许立即运行?

Jos*_* R. 9

只需让用户运行

newgrp wheel
Run Code Online (Sandbox Code Playgroud)

这将启动一个新的 shell,组 ID 更改为wheel. 如果你想启动一个新的 shell 并杀死前一个,请使用

exec newgrp wheel
Run Code Online (Sandbox Code Playgroud)

反而。

这是因为内核仍然具有与当前正在运行的进程相关联的先前组集。

  • 请注意,这个答案是不准确的,因为`newgrp wheel`的效果不是让“将用户添加到轮组”生效,效果是__用户的主要GID改变了__,这是根本不同的——例如新创建的文件将具有新的 GID。 (3认同)