问题描述
我试图了解Ubuntu上的系统管理。因此,作为一个例子,我使用创建一个虚拟用户
sudo useradd -d /home/linda linda
和passwd
一起创建密码。我检查是否已使用cat /etc/passwd
创建了一个条目
linda:x:1004:1004::/home/linda:/bin/sh
但是,当我su - linda
时,我明白了
No directory, logging in with HOME=/
实际上,没有创建主目录。我错过了什么?
谢谢。
最佳解决思路
man useradd
声明:
useradd is a low level utility for adding users. On Debian,
administrators should usually use adduser(8) instead.
请注意low level utility
要添加用户,请改用adduser
。这是一个更多的high-level实用程序。
此外,查看-d
选项:
-d, --home HOME_DIR
The new user will be created using HOME_DIR as the value for the
user's login directory. The default is to append the LOGIN name to
BASE_DIR and use that as the login directory name. The directory
HOME_DIR does not have to exist but will not be created if it is
missing.
The directory will not be created if it is missing.
一般不要使用useradd
,而是使用adduser
。
次佳解决思路
你可以通过创建家庭目录来解决这个问题。
mkdir /home/linda
chown linda:linda /home/linda
尝试再次登录,这应该工作。
第三种解决思路
根据man useradd
,如果缺少-d /home/linda
,-d /home/linda
选项将不会创建目录/home/linda
。因此,您必须手动创建它。为此,请在终端中运行以下命令:
sudo -i #to get root privileges
mkdir /home/linda #to create the directory /home/linda
cp -rT /etc/skel /home/linda #to populate /home/linda with default files and folders
chown -R linda:linda /home/linda #to change the owner of /home/linda to user linda
另请参见:如何在创建帐户后创建用户主文件夹?
第四种思路
如果要更改默认值,请查看/etc/defaults/useradd
。使用:
useradd -m -d /home/joe -s /bin/bash
。
第五种思路
您还可以修改/etc/pam.d/common-session
,以便在首次登录时创建用户的主目录。将以下行添加到该文件中。
...
session required pam_mkhomedir.so
如果您的系统位于用户在机器外部管理的网络(例如LDAP),则此功能尤其有用。
第六种思路
使用-m
而不是-d
,因此将为您创建目录:
sudo useradd -m linda
此外,如果linda
是普通用户,您可能希望她将/bin/bash
用作默认shell
:
sudo useradd -m linda -s /bin/bash
第七种思路
在/etc/login.defs
中添加以下条目并保存:
CREATE_HOME yes
现在,尝试创建用户帐户。它将创建主目录。
参考资料