本文簡要介紹了如何在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命令,它將自動創建用戶的主目錄,而不需要任何選項。