useradd 命令和 adduser 命令都可以用來添加用戶,那二者的區別是什么?
adduser 和useradd 命令的區別
useradd 命令是內置的 Linux 命令,在任何 Linux 系統中都可用。然而,使用這種低級別的工具創建用戶是比較繁瑣的,因為默認情況下,它不會創建主目錄和用戶密碼。
adduser 不是標準的 Linux 命令,它本質上是一個 perl 腳本,在后臺調用 useradd 命令。這個高級實用程序在 Linux 中創建用戶的時候效率更高,它提供了創建主目錄、設置密碼以及其他一些參數的選項。
下面我們來詳細看一下。
useradd 命令
我們在《使用 useradd 命令在 Linux 中添加新用戶》中介紹過useradd的用法,大家感興趣的可以看一下。現在我們再來看下其 useradd 的默認用法,你使用過如下命令嗎?
這個命令默認不是創建一個完整的用戶,即使為其設置了密碼,但還需要使用其他選項。它會在 /etc/passwd 文件中添加以下內容:
我們在《Linux 中查看所有用戶的三種方法》提到過 /etc/passwd 文件(如果不清楚的話大家可以再看一下)。這樣看起來,用戶似乎是創建成功了,但實際用的話,會發現某些地方不對勁。
首先,在 /etc/passwd 文件中,該新建用戶的第二個字段中包含 "x",這意味著在 /etc/shadow 中,密碼是一個占位符,由于還沒有設置密碼,所以這個用戶將無法登錄。
第二個問題,該用戶沒有主目錄,即 /home/test 不存在。即使設置了密碼,如果用戶登錄的話,也會發生錯誤。因為 Linux 可能會阻止沒有主目錄的用戶登錄。最有可能的情況是,用戶即使可以登錄系統,也只是在文本模式下,但是不允許其創建他的主目錄。
第三個問題,其登錄的默認 shell 是 sh,而不是bash,bash 是大多數 Linux 發行版上的默認 shell。
以上問題,可以在 /etc/login.defs 中修改。
adduser 命令
adduser 命令在某些 Linux 發行版上不可用,在某些 Linux 中,它是 useradd 的一個軟連接,在另外一些 Linux 系統中,它是一個 perl 腳本。
adduser 命令是一個交互式高級實用程序,它以 useradd 為后臺,且自動配置 /etc/login.defs。在基于 Debian 的系統中,man 手冊中都會建議使用它而不是 useradd 命令。 使用 adduser 命令創建用戶,它會引導你輸入一系列的參數,如下圖:
輸入參數,回車,之后系統會創建一個完整的用戶賬戶,包含主目錄。如此,新用戶就可以正常登錄了。 要使用 useradd 實現相同的功能,其命令類似于:
上述命令中的 -c 選項可以刪掉,其后面用逗號分割的內容是要添加到 /etc/passwd 中的內容。即便如此,useradd 命令還是比 adduser 額外多了兩個選項需要輸入。 adduser 命令有一個可用的選項列表,如下是我們列出的一些最常用的(有關更多的信息,大家可參考幫助信息或者 man 手冊)。
- system:添加系統用戶。默認情況下,系統用戶位于 nogroup 組中。要將系統用戶添加到一個現有組中,需要使用 –gid 或 –ingroup 選項;
- home DIR:使用 DIR 作為主目錄而不是默認的目錄。如果需要,可以創建目錄,并復制系統框架文件;
- shell SHELL:使用 SHELL 來代替默認的;
- ingroup GROUP:將用戶的所屬組設置為 GROUP;
- add_extra_groups:將新用戶添加到配置文件中定義的額外組。
adduser 的配置文件可以允許我們設置一些創建用戶時所要使用的默認值,比如:
- 默認 shell
- 主目錄
- 所屬組
- 添加額外組
以上就是本次分享全部內容,歡迎討論。