主目录未创建

我试图了解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