可能的重复:
如何在无需重新启动的情况下应用新添加的用户组的更改?
我使用的是 Ubuntu 11.04。我正在创建另一个用户并将现有用户放置在其他用户的组中,希望在其他用户的主目录中写入。
# uname -a
Linux vini 2.6.38-11-generic #50-Ubuntu SMP Mon Sep 12 21:18:14 UTC
2011 i686 athlon i386 GNU/Linux
# whoami
sachin
# su root
# useradd -m -U foo // create user foo
# usermod -a -G foo sachin // add user `sachin' to group `foo'
# chmod 770 /home/foo/
# exit
# whoami
sachin
# cd /home/foo/
bash: cd: /home/foo/: Permission denied
# groups sachin
sachin : sachin foo
这太奇怪了。尽管用户 sachin 在组 foo 中,并且 /home/foo/ 的组位设置为 rwx,但 sachin 无法 chdir 到 /home/foo/。我无法理解这一点。
但是,如果在退出步骤中,我从 root 切换到 sachin 用户,则会发生以下情况:
# uname -a
Linux vini 2.6.38-11-generic #50-Ubuntu SMP Mon Sep 12 21:18:14 UTC
2011 i686 athlon i386 GNU/Linux
# whoami
sachin
# su root
# useradd -m -U foo // create user foo
# usermod -a -G foo sachin // add user `sachin' to group `foo'
# chmod 770 /home/foo/
# su sachin
# whoami
sachin
# cd /home/foo/
# ls
examples.desktop
现在,这里发生的一切都是完全无法理解的。 su sachin 这一步是否继承了 root 用户的一些权限?
建议的解决方案是使用newgrp
,它会更新组和其他用户信息。因此,如果我这样做newgrp - sachin
,那么我就可以访问新创建的用户的目录,但如果我再创建一个用户并按照相同的步骤操作,sachin
则无法访问最新用户的目录。
这种行为确实让人非常莫名其妙。
任何解释将不胜感激。
答案1
您当前的登录 shell 进程保留其之前的组配置。特别是,比较输出
groups sachin
和
groups
。注销和登录后,差异就消失了。
如果由于我不清楚的原因而无法重新登录,则必须级联这些newgrp
内容。在内部,newgrp
除了在新的进程层中“重新登录”之外什么也不做。如果您注销,则必须在运行 newgrp 内容时经常按 Ctrl-D。
或者,您可以终止内层newgrp
并在usermod
.然后您可以再次访问当前的组集。