当前位置: 首页>>技术教程>>正文


主目录未创建

, , , ,

问题描述

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

现在,尝试创建用户帐户。它将创建主目录。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1158.html,未经允许,请勿转载。