未创建主目录

tch*_*rty 114 command-line bash users home-directory

我正在尝试了解 Ubuntu 上的系统管理。所以,作为一个例子,我创建一个虚拟用户使用

sudo useradd -d /home/linda linda
Run Code Online (Sandbox Code Playgroud)

passwd创建密码。我检查是否已使用输入cat /etc/passwd

linda:x:1004:1004::/home/linda:/bin/sh
Run Code Online (Sandbox Code Playgroud)

然而,当我su - linda,我得到

No directory, logging in with HOME=/
Run Code Online (Sandbox Code Playgroud)

事实上,还没有创建主目录。我错过了什么?

谢谢。

gni*_*urf 125

man useradd 状态:

useradd is a low level utility for adding users. On Debian,
administrators should usually use adduser(8) instead.
Run Code Online (Sandbox Code Playgroud)

请注意 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.
Run Code Online (Sandbox Code Playgroud)

The directory will not be created if it is missing.

一般远离useraddadduser改用。

  • 在 OP 的辩护中,当我阅读“On Debian”时,我认为它是指 Debian,而不是 Ubuntu 发行版。我知道 Ubuntu 是建立在 Debian 上的,但我认为正在区分。 (2认同)

小智 42

您可以通过创建主目录来解决此问题。

mkdir /home/linda
chown linda:linda /home/linda
Run Code Online (Sandbox Code Playgroud)

尝试再次登录,这应该可以工作。


Rad*_*anu 21

与根据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
Run Code Online (Sandbox Code Playgroud)

另请参阅:如何在创建帐户后创建用户主文件夹?


小智 11

看看/etc/defaults/useradd是否要更改默认值。用:

useradd -m -d /home/joe -s /bin/bash.

  • 根据 useradd 手册页,这就是 -m 标志的用途:```-m, --create-home 如果用户的主目录不存在,则创建它。骨架目录(可以用 -k 选项定义)中包含的文件和目录将被复制到主目录。useradd 将创建主目录,除非 /etc/login.defs 中的 CREATE_HOME 设置为 no。```@astrojuanlu (3认同)

p11*_*00i 7

使用-m代替-d,因此将为您创建目录:

sudo useradd -m linda

另外,如果linda是普通用户,您可能希望她使用/bin/bash默认值shell

sudo useradd -m linda -s /bin/bash


小智 5

您还可以修改/etc/pam.d/common-session以使其在第一次登录时创建用户的主目录。将以下行添加到该文件中。

...
session required pam_mkhomedir.so
Run Code Online (Sandbox Code Playgroud)

如果您的系统位于您的机器外部(例如通过 LDAP)管理用户的网络上,这将特别有用。