主目录未创建
我试图了解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
。 这是一个更高级别的实用程序。
而且,查看-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
选项不会创建目录/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),则此function尤其有用。
使用-m
而不是-d
,因此将为您创建目录:
sudo useradd -m linda
此外,如果linda
是普通用户,您可能希望她使用/bin/bash
作为默认shell
:
sudo useradd -m linda -s /bin/bash
在/etc/login.defs
添加以下条目并保存:
CREATE_HOME yes
现在,尝试创建用户帐户。 它将创建主目录。
使用adduser
。
DESCRIPTION adduser and addgroup add users and groups to the system according to command line options and configuration information in /etc/adduser.conf. They are friendlier front ends to the low level tools like useradd, groupadd and usermod programs, by default choosing Debian policy conformant UID and GID values, creating a home directory with skeletal configuration, running a custom script, and other fea‐ tures. adduser and addgroup can be run in one of five modes:
useradd
你必须自己添加所有选项。 包括权限和其他一些东西。 adduser
基于合理的默认值执行此操作(并且还单独添加主目录)。
如果你需要使用adduser,你可能需要-b选项和-d选项!
如果在将linda添加为用户之前/home/linda
不存在,则还必须添加--create-home
。
sudo useradd --create-home linda
您没有创建主目录的最可能原因是因为您在/etc/login.defs
没有CREATE_HOME yes
。
您可以通过遵循@OmPS或@RaduRădeanu建议的内容来解决此问题。
但是,通过使用以下命令之一,将来有很多方法可以解决这个问题:
-
sudo adduser linda
结果Adding user 'linda' Adding new group 'linda' (1001) ... Adding new user 'linda' (1001) with group 'linda' ... Creating home directory '/home/linda' ... Copying files from '/etc/skel' ... ****Password confirmation**** ****Name prompt****
如果未指定
--home
选项,则从/etc/adduser.conf
中选择adduser的默认值。 请注意,它还复制/etc/skel
内容。 -
使用adduser与
--home
sudo adduser --home /home/linda
与上一个选项相同,但如果用户主目录与您指定的用户名不同,则可能需要此选项。
-
指定
useradd
命令的基目录:sudo useradd -b /home
-
使用login.defs:修改
/etc/login.defs
并在执行sudo useradd
之前添加以下行:CREATE_HOME yes
注意:如果你man login.defs
,它目前说
以前由影子密码套件提供的大部分function现在由PAM处理。 因此,/ etc / login.defs不再被passwd(1)使用,或者较少被login(1)和su(1)使用。 请改为参考相应的PAM配置文件。
-
使用pam_mkhomedir PAM模块:从
man pam_mkhomedir
页面,man pam_mkhomedir
添加到/etc/pam.d/login
:session required pam_mkhomedir.so skel=/etc/skel