在 Linux 中为现有用户创建主目录

本简要指南解释了如何在 Linux 和类 Unix 操作系统中为现有用户创建主目录,使用 mkhomedir_helper 命令。

介绍

如您所知,我们可以在 Linux 和类 Unix 系统中使用 adduser 命令,对吧? 是的,这是正确的! 当我们添加新用户时,默认情况下会自动创建相应用户的主目录。

在 Linux 中还有另一个创建用户的命令。 它被称为 useradd.

在我使用创建了一些用户之后 useradd 在 Alpine Linux 中使用命令,我注意到没有为用户创建 $HOME 目录。 我以前不知道。

读完后 useradd 命令的手册页,我开始意识到我应该包括 -m (或者 --create-home) 使用 $HOME 目录创建新用户的选项,如下所示:

$ sudo useradd -m user_name

或者,

$ sudo useradd --create-home user_name

但是,我忘记了包含这个选项,并继续创建了一些新用户。 如果您像我一样,请不要删除现有用户并重新创建它们 -m 选项。

您可以使用以下命令轻松地为 Linux 中的现有用户创建主目录 mkhomedir_helper 命令,而不删除和重新创建用户。

在 Linux 中为现有用户创建主目录

mkhomedir_helper 是一个帮助程序 pam_mkhomedir 模块。 这 pam_mkhomedir 如果会话开始时 PAM 模块不存在,则 PAM 模块将创建用户的主目录。

首先,该模块创建主目录,然后用指定的 skel 目录的内容填充它们。 默认值为 umask0022 path-to-skel 的默认值为 /etc/skel.

请允许我向您展示一个 example 解释如何在帮助下为现有用户创建主目录 mkhomedir_helper 命令。

首先,让我们创建一个名为的新用户 ostechnix 使用 useradd 命令:

$ useradd ostechnix

给用户设置密码:

$ passwd ostechnix

现在切换到新用户:

$ su - ostechnix

您将遇到以下错误消息:

su: warning: cannot change directory to /home/ostechnix: No such file or directory
警告:无法将目录更改为 /home/ostechnix:没有这样的文件或目录

正如您在上面的输出中看到的,用户 ostechnix 的主目录不存在,因此出现此错误。

让我们通过调查来验证它 /home 目录:

$ ls -l /home/
total 0
drwx------ 1 vagrant vagrant 72 Dec 15 13:19 vagrant

好吧,确实没有用户 ostechnix 的主目录。

因此,让我们为现有用户(即我们的例子中的 ostechnix)创建主目录 mkhomedir_helper 命令。

为此,如果您已经登录,首先从用户 ostechnix 注销:

$ exit

并运行以下命令为名为的用户创建主目录 ostechnix

$ sudo mkhomedir_helper ostechnix

请注意,您必须将上述命令运行为 root 用户或不同 sudo 用户。

现在切换到用户 ostechnix:

$ su - ostechnix

这次您不会收到任何警告消息,因为名为 ostechnix 的用户的主目录已创建 mkhomedir_helper 命令。

[[email protected] ~]$ pwd
/home/ostechnix
在 Linux 中使用 mkhomedir_helper 命令为现有用户创建主目录

有关更多详细信息,请参阅手册页:

$ man mkhomedir_helper

您现在知道如何在创建用户后创建主目录。 当您忘记包含时,这可能很有用 -m 创建用户时的选项 useradd 命令。

而不是使用 useradd, 您可以使用 adduser 命令将自动创建用户的主目录,无需任何选项。

相关阅读:

  • 如何在 Linux 中将主目录移动到新分区或磁盘
  • 在 Alpine Linux 中为用户添加、删除和授予 Sudo 权限
  • 在 Arch Linux 中添加、删除和授予用户 Sudo 权限
  • 添加、删除和授予用户 Sudo 权限 Fedora
  • 在 CentOS 中添加、删除和授予用户 Sudo 权限
  • 在 Ubuntu 中添加、删除和授予用户 Sudo 权限

来自 FreeCliparts 的精选图片 关注.