假设我有一个名为panos的用户,他的主目录位于/home/panos. 然后,我创建了另一个名为Tom 的用户:
adduser Tom
Run Code Online (Sandbox Code Playgroud)
它创建了一个拥有 home 目录的用户Tom:/home/Tom
问题是:如果我想创建一个新用户并将另一个用户的主目录作为主目录,该怎么办。例如,让我们创建用户Jerry并将他作为他的主目录传递给用户Panos的主目录:
adduser -d /home/panos Jerry
Run Code Online (Sandbox Code Playgroud)
但有一个错误说:
adduser: warning: the home directory already exists.
Not copying any file from skel directory into it.
Run Code Online (Sandbox Code Playgroud)
但是,如果您查看该/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
Run Code Online (Sandbox Code Playgroud)
看来它奏效了。但是当我尝试以 Jerry 的身份登录时:
[root@LinuxAcademy ~]# su Jerry
bash-4.1$ bash: /home/panos/.bashrc: Permission denied
bash-4.1$
Run Code Online (Sandbox Code Playgroud)
它会阻止我以 Jerry 的身份登录,并且还会更改我的提示(PS1)。
那么,我该怎么做呢?是否可以?
您确实使用已经存在的主目录创建了一个用户。
adduser: 警告: 主目录已经存在。
不将任何文件从 skel 目录复制到其中。
这不是错误,而是警告。通常,不创建主目录的原因是用户的主目录不应该存在。在这里,确实如此,这很可能是系统管理员出错(例如,错误的复制粘贴或有缺陷的脚本)。由于您确实打算使用现有的主目录,因此请忽略此警告。
[root@LinuxAcademy ~]# su Jerry
bash-4.1$ bash: /home/panos/.bashrc: Permission denied
bash-4.1$
Run Code Online (Sandbox Code Playgroud)
您确实以 Jerry 的身份登录。bash 4.1 以 Jerry 的身份运行。Jerry 没有读取他的~/.bashrc.的权限,要么是因为该文件.bashrc只能读取panos(并且可能是 Jerry 不属于的组),要么因为目录/home/panos本身x对 Jerry不可访问(权限)。所以 bash 告诉你它不能读取它的启动文件,它显示它的默认提示。
有多个用户具有相同的主目录是非常不寻常的(不包括主目录无关紧要的系统帐户)。您应该如何处理权限取决于您要通过此实现的目标。您可能确实希望至少允许所有这些用户读取他们的主目录。