在 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)