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无法将目录切换到 /home/foo/。我无法理解这一点。

但是,如果在这exit一步,我sachin从 root 切换到用户,就会发生以下情况:

# 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

如能得到任何解释我将非常感激。

答案1

注销然后重新登录,它将起作用或者您可以使用新的终端(不是 gnome-terminal,而是 tty-devices)。

这似乎是一个错误,因为这个注销和登录的要求完全没有必要。

答案2

/home 的权限是什么?您也需要 +x 权限。

此外,您需要使用它su - sachin来获取新用户的完整环境。

请注意,目前的手册页useradd显示:

   useradd is a low level utility for adding users. On Debian,
   administrators should usually use adduser(8) instead.

如果您使用桌面/GUI 版本,使用该users-admin工具通常会让事情变得更轻松。

具有活动 shell 的用户不会在此会话中继承新组(假设您按照示例中的方式或通过脚本执行此操作)——您需要为该用户提供一个新的 shell 来测试组成员身份。(除非您是 root 用户。)这是 Unix 的长期行为——因此您通常会为用户启动一个新的 shell 进程,例如,通过打开一个新终端(生成一个新的 shell,默认情况下读取您的环境),或者通过在同一终端中为用户生成一个新的 shell。

相关内容