在Ubuntu服务器上,我已经注意到不止一次,在用户添加到用户没有组权限之前,我重新启动系统。 例如:
用户'哈德森'需要权限阅读目录'root:shadow / etc / shadow'所以我添加哈德森阴影组。 哈德森还是看不懂。 所以,我'sudo关机-h -r现在',当系统再次出现用户哈德森可以读取。
是否需要重新引导,或者在将用户添加到组之后是否有更好的方式来获取权限?
我正在寻找一个解决scheme,碰到这个post,然后find一个!
我以为我会提供一个解决scheme,让其他人可以受益。 1995年login和注销是如此。
取自:
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
检查显示用户在组中。 并从该组快速执行所需的特权。
没有必要杀你的窗户,login和注销! 希望能帮助别人!
附加信息 (基于jytou的有用评论):“[这个]解决scheme只适用于当前打开的shell,如果你打开另外一个shell,你需要使用相同的命令来考虑这些改变。
将用户添加到新组时,用户必须注销并重新login才能生效。 虽然重启会完成,但不应该要求重启。
将用户添加到组不会影响当前login的用户。
在守护进程的情况下,您需要重新启动它才能应用新的组。
此外,使用守护进程中的选项重新启动守护进程将不会工作,因为这将inheritance当前环境。
让它工作的最简单的方法是完全停止守护进程,并重新启动,如..
/etc/init.d/foo stop ; /etc/init.d/foo start
这里还有一个不同的故障模式。
如果pipe理员更新了/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
因为它要求input密码,而我没有密码,只有SSH公钥authentication。
解决办法是让pipe理员恢复/etc/groups
的手动编辑,然后用sudo gpasswd -a tripleee adm
再次sudo gpasswd -a tripleee adm
; 或者,使用grpconv
来合并更改(我从https://serverfault.com/a/389719/98333获取 )
这是更简单的,你可以通过键入以下内容来检查当前的访问级别:
id
重新加载您刚刚需要的组:
su - $USER
之后再次检查访问级别:
id
你会看到新的组现在活跃。