我在 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。