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