本文简要介绍了如何在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命令为现有用户创建主目录,而不需要删除和重新创建用户。
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命令,它将自动创建用户的主目录,而不需要任何选项。