假设我有一个名为帕诺斯他的主目录位于/home/panos
.然后,我创建另一个名为汤姆:
adduser Tom
它创建一个用户汤姆谁有主目录:/home/Tom
问题是:如果我想创建一个新用户并将另一个用户的主目录作为他的主目录,该怎么办?例如,我们创建用户杰瑞并将他作为他的主目录传递给用户的主目录帕诺斯:
adduser -d /home/panos Jerry
但有一个错误说:
adduser: warning: the home directory already exists.
Not copying any file from skel directory into it.
但是,如果您查看该/etc/passwd
文件:
tail -n 3 /etc/passwd
anthony:x:501:501::/home/anthony:/bin/bash
panos:x:502:502::/home/panos:/bin/bash
Jerry:x:503:503::/home/panos:/bin/bash
看来它有效了。但是当我尝试以 Jerry 身份登录时:
[root@LinuxAcademy ~]# su Jerry
bash-4.1$ bash: /home/panos/.bashrc: Permission denied
bash-4.1$
它阻止我以 Jerry 身份登录,并且还更改了我的提示符(PS1)。
那么,我该怎么做呢?是否可以?
答案1
您确实创建了一个具有已存在主目录的用户。
adduser:警告:主目录已存在。
不将任何文件从 skel 目录复制到其中。
这不是错误,而是警告。通常,不创建主目录的原因是其主目录不应该存在的用户。在这里,它确实如此,这很可能是系统管理员的错误(例如错误的复制粘贴或有错误的脚本)。由于您确实想使用现有的主目录,因此请忽略此警告。
[root@LinuxAcademy ~]# su Jerry
bash-4.1$ bash: /home/panos/.bashrc: Permission denied
bash-4.1$
您确实以 Jerry 身份登录。 bash 4.1 以 Jerry 身份运行。 Jerry 没有读取他的 的权限~/.bashrc
,要么是因为该文件.bashrc
只能被 Jerry 不属于的组读取panos
(也许 Jerry 不属于的组),要么是因为Jerry/home/panos
无法访问该目录本身(x
权限)。因此 bash 告诉您它无法读取其启动文件,并显示默认提示符。
多个用户具有相同的主目录是非常不寻常的(不包括其主目录无关紧要的系统帐户)。您应该对权限做什么取决于您想要通过此实现的目标。您可能确实希望至少允许所有这些用户读取他们的主目录。
答案2
嗯,当然。它正在尝试读取并执行/home/panos/.bashrc
.该文件属于 user panos
,并且可能被设置为-rwx------
或类似的内容。所以Jerry
尝试阅读它但不能。Permission denied
,正如它所说。
有可能Jerry
实际上是已登录。尝试一下whoami
。
因此,将它们放在同一个组中并使其成为 group-rx,或使其成为 world-rx,或类似的东西。对主目录执行相同的操作(可执行,对于目录,意味着可搜索)。
答案3
$ mv /home/jerry /home/xxx
$ userdel -r jerry
$ rm -rf /var/spool/mail/jerry
$ useradd jerry
$ mv /home/xxx /home/jerry
jerry home 已经存在,所以你会提示像
bash-4.1$ bash
避免 mv 现有主目录新位置并再次创建用户