Linux 中不兼容的组权限 - 这是一个错误吗?

Linux 中不兼容的组权限 - 这是一个错误吗?

可能的重复:
如何在无需重新启动的情况下应用新添加的用户组的更改?

我使用的是 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.然后您可以再次访问当前的组集。

相关内容