本文簡要介紹了如何在Linux和類unix服務(wù)器系統(tǒng)中使用mkhomedir_helper命令為現(xiàn)有用戶創(chuàng)建主目錄。
你已經(jīng)知道,我們可以在Linux和Unix類系統(tǒng)中使用adduser命令創(chuàng)建一個新用戶,對嗎?是的,沒錯! 當我們添加一個新用戶時,默認情況下會自動創(chuàng)建相應(yīng)用戶的主目錄。
在Linux服務(wù)器中還有另一個創(chuàng)建用戶的命令。它就是useradd。當我在Alpine Linux中使用useradd命令創(chuàng)建了幾個用戶后,我發(fā)現(xiàn)沒有創(chuàng)建用戶的$HOME目錄。我之前并不知道。在閱讀了 useradd 命令的手冊后,我意識到我應(yīng)該加入 -m (或 –create-home) 選項來創(chuàng)建帶有 $HOME 目錄的新用戶,如下所示。
$ sudo useradd -m user_name
或者
$ sudo useradd –create-home user_name
但是,我忘了加入這個選項,于是繼續(xù)創(chuàng)建了一些新用戶。如果你和我一樣,不要刪除現(xiàn)有的用戶,而是用-m選項重新創(chuàng)建他們。在Linux服務(wù)器中,你可以很容易地使用mkhomedir_helper命令為現(xiàn)有用戶創(chuàng)建主目錄,而不需要刪除和重新創(chuàng)建用戶。
在Linux服務(wù)器中為現(xiàn)有用戶創(chuàng)建主目錄
mkhomedir_helper 是 pam_mkhomedir 模塊的輔助程序。pam_mkhomedir PAM模塊會在會話開始時創(chuàng)建一個用戶的主目錄,如果它不存在的話。首先,這個模塊會創(chuàng)建主目錄,然后用指定的skel目錄的內(nèi)容填充。umask的默認值是0022,path-to-skel的默認值是/etc/skel。
我舉一個例子來解釋如何在mkhomedir_helper命令的幫助下為現(xiàn)有用戶創(chuàng)建主目錄。
首先,讓我們使用useradd命令創(chuàng)建一個名為a5idc的新用戶。
$ useradd a5idc
給用戶設(shè)置密碼。
$ passwd a5idc
現(xiàn)在切換到新用戶。
$ su – a5idc
你會遇到以下錯誤信息。
su: warning: cannot change Directory to /home/a5idc: No such file or Directory
正如你在上面的輸出中所看到的,用戶a5idc的home目錄不存在,因此出現(xiàn)了這個錯誤。
讓我們通過查看/home目錄來驗證。
$ ls -l /home/
total 0
drwx—— 1 vagrant vagrant 72 Dec 15 13:19 vagrant
嗯,確實沒有用戶a5idc的主目錄。
所以讓我們用mkhomedir_helper命令為現(xiàn)有的用戶(即本例中的a5idc)創(chuàng)建主目錄。
要做到這一點,首先要從用戶a5idc注銷,如果你已經(jīng)登錄了。
$ exit
然后運行以下命令為名為a5idc的用戶創(chuàng)建主目錄。
$ sudo mkhomedir_helper a5idc
請注意,你必須以root用戶或不同的sudo用戶運行上述命令。
現(xiàn)在切換到用戶 a5idc。
$ su – a5idc
這次你不會收到任何警告信息,因為名為 a5idc 的用戶的主目錄已經(jīng)用 mkhomedir_helper 命令創(chuàng)建了。
更多細節(jié)請參考man頁面。
$ man mkhomedir_helper
你現(xiàn)在知道如何在服務(wù)器中創(chuàng)建用戶后創(chuàng)建主目錄了。當你在使用useradd命令創(chuàng)建用戶時忘了包含-m選項時,這將會很有用的。
與useradd相比,你可以使用adduser命令,它將自動創(chuàng)建用戶的主目錄,而不需要任何選項。