将用户添加到新组后是否需要重新启动来刷新权限?

将用户添加到新组后是否需要重新启动来刷新权限?

在 ubuntu 服务器上,我多次注意到,将用户添加到组后,该用户没有组权限,直到我重新启动系统。例如:

用户“hudson”需要权限才能读取目录“root:shadow /etc/shadow”,因此我将 hudson 添加到 shadow 组。hudson 仍然无法读取。因此,我“sudo shutdown -h -r now”,当系统再次启动时,用户 hudson 就可以读取了。

将用户添加到组后,是否需要重新启动或是否有更好的方法来应用权限?

答案1

我正在寻找解决方案,偶然发现了这篇文章,然后找到了一个!

我本来想提供一个解决方案,让其他人也能从中受益。登录和退出是 1995 年的事情了。

取自:

https://arkaitzj.wordpress.com/2010/03/08/linux-add-user-to-a-group-without-logout/

因此,如果您需要获取cdrom刚刚将用户添加到的组的权限:

newgrp cdrom 

例如

因此步骤如下:

#adduser my_user cdrom

进而

$newgrp cdrom

我已确认它有效。

通过 CLI 进行简单$groups检查即可显示用户属于该组。并且使用该组所需的权限进行快速执行即可。

无需关闭 Windows 并登录和注销!希望这对其他人有所帮助!

附加信息(基于 jytou 的有益评论):“[此] 解决方案仅适用于当前打开的 shell。如果您打开了另一个 shell,则需要使用相同的命令来使更改生效。”

答案2

将用户添加到新组时,用户必须注销并重新登录才能生效。虽然重新启动可以完成此操作,但这不是必需的。

答案3

将用户添加到组不会影响当前登录的用户。

对于守护进程,您需要重新启动它才能应用新的组。

此外,使用守护进程本身的选项重新启动守护进程将不起作用,因为这将继承当前环境。

使其工作的最简单方法是完全停止守护进程并重新启动它,如下所示。

/etc/init.d/foo stop ; /etc/init.d/foo start

答案4

还有一种不同的故障模式也应该在这里解决。

如果管理员更新/etc/group但更新失败/etc/gshadow(在具有此设置的系统上),则注销并重新登录实际上不会将您分配给新组。

令人困惑的是,groups它会向你展示真实的、当前的情况,而id会错误地打印输出,表明你成为该团体的正式成员。

tripleee@vbvntv$ groups
tripleee

tripleee@vbvntv$ id
uid=1234(tripleee) gid=1234(tripleee) groups=1234(tripleee),4(adm)

tripleee@vbvntv$ ls -l /var/log/mail.log
-rw-r----- 1 root adm 15728 May 26 14:26 /var/log/mail.log

tripleee@vbvntv$ tail /var/log/mail.log
tail: cannot open `/var/log/mail.log' for reading: Permission denied

我无法使用,newgrp因为它要求输入密码,而我没有密码,只有 SSH 公钥认证。

解决方案是让管理员恢复手动编辑/etc/groups,然后使用 再次执行sudo gpasswd -a tripleee adm;或者,使用grpconv合并更改(我从https://serverfault.com/a/389719/98333

相关内容