关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

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

发布时间:2023/11/16 13:14:51
香港云服务器

本文简要介绍了如何在Linux和类Unix服务器系统中使用mkhomedir_helper命令为现有用户创建主目录。

你已经知道,我们可以在Linux和Unix类系统中使用adduser命令创建一个新用户,对吗?是的,没错! 当我们添加一个新用户时,默认情况下会自动创建相应用户的主目录。

在Linux服务器中还有另一个创建用户的命令。它就是useradd。当我在Alpine Linux中使用useradd命令创建了几个用户后,我发现没有创建用户的$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模块会在会话开始时创建一个用户的主目录,如果它不存在的话。首先,这个模块会创建主目录,然后用指定的skel目录的内容填充。umask的默认值是0022,path-to-skel的默认值是/etc/skel。

我举一个例子来解释如何在mkhomedir_helper命令的帮助下为现有用户创建主目录。

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

$ useradd a5idc

给用户设置密码。

$ passwd a5idc

现在切换到新用户。

$ su - a5idc

你会遇到以下错误信息。

su: warning: cannot change directory to /home/a5idc: No such file or directory

正如你在上面的输出中所看到的,用户a5idc的home目录不存在,因此出现了这个错误。

让我们通过查看/home目录来验证。

$ ls -l /home/

total 0

drwx------ 1 vagrant vagrant 72 Dec 15 13:19 vagrant

嗯,确实没有用户a5idc的主目录。

所以让我们用mkhomedir_helper命令为现有的用户(即本例中的a5idc)创建主目录。

要做到这一点,首先要从用户a5idc注销,如果你已经登录了。

$ exit

然后运行以下命令为名为a5idc的用户创建主目录。

$ sudo mkhomedir_helper a5idc

请注意,你必须以root用户或不同的sudo用户运行上述命令。

现在切换到用户 a5idc。

$ su - a5idc

这次你不会收到任何警告信息,因为名为 a5idc 的用户的主目录已经用 mkhomedir_helper 命令创建了。

更多细节请参考man页面。

$ man mkhomedir_helper

你现在知道如何在服务器中创建用户后创建主目录了。当你在使用useradd命令创建用户时忘了包含-m选项时,这将会很有用的。

与useradd相比,你可以使用adduser命令,它将自动创建用户的主目录,而不需要任何选项。