Centos與Ubuntu下的useradd與adduser比較
其實當時看到網上很多的文章都說這兩個命令其實效果是完全一樣的,但是我在Ubuntu10.04上嘗試的時候發現并不一樣。那時候還吐槽過網上的文章亂作呢。現在,經過自己的實驗之后發現,原來不同版本的Linux系統,對這兩個命令的解釋不完全一樣。我是在Centos下與在Ubuntu下進行比較的。 首先可以看一下在Centos下,我們進入/usr/sbin目錄下,用命令
- [cpp]
- [root@localhostsbin]#ll|grepuseradd
可以看到如下的結果:
觀察上面結果中的***條和第三條,我們可以發現,原來adduser是鏈接到了useradd的,于是,在Centos里面,useradd和adduser的作用是完全一樣的。都是在創建了用戶之后,會在/etc/passwd文件中加一條新建用戶的記錄,然后在/home目錄下創建新用戶的主目錄,并把/etc/skel目錄中的文件復制到這個主目錄下面。 注意:這種方法創建的新用戶,在設置密碼之前是不能登陸到系統上的,你需要在root權限下使用“passwd 用戶名”的方法為指定的用戶設置密碼。下次才能以該用戶名和密碼登陸到系統中。 接著來看一下Ubuntu系統下,還是先進入到/usr/sbin目錄下,用命令:
- [cpp]
- [root@localhostsbin]#ll|grepuseradd
可以看到如下的結果:
可以看得出來,在Ubuntu下,useradd和adduser是分別獨立的命令,并沒有鏈接的關系。我嘗試這用useradd這個命令創建一個新用戶(并沒有加useradd的任何參數)。結果跟之前的博文(文章鏈接在本文開始處)是一樣的,在/home下還是沒有新用戶的主目錄。但是這次我還查看了一個文件,就是/etc/passwd這個文件。我打開之后發現在/etc/passwd中確實增加了我新創建的用戶的信息,但是,該用戶的登陸Shell跟其他用戶不一樣,是“/bin/sh”,其他用戶的登陸Shell是/bin/bash。如下圖所示:
我們可以通過在root權限下修改此文件,使得example的登陸Shell為/bin/bash,然后還需要用mkdir命令為該用戶創建一個用戶目錄,即/home/example,并將/etc/skel目錄下的文件復制到該用戶目錄下,設置密碼之后,新建用戶就能想普通用戶一樣登陸系統了。
注意:上面的情況是沒有使用useradd的任何指定參數,才需要手動做額外的工作。如果在用useradd的時候加一個參數“-m”,并設置好密碼,那么該用戶就能正常登陸系統了(具體的看我之前的博文,鏈接在本文的開頭處)。還有就是,貌似useradd創建的用戶默認的登陸Shell都是/bin/sh,可以在root權限下修改成/bin/bash,或者在使用useradd的時候用參數“-s”指定。
現在來看看Ubuntu10.04下的adduser,還是在/usr/sbin里面,使用下面命令查看結果得到:
- [cpp]
- [root@localhostsbin]#ll|grepadduser
觀察上面的結果發現,adduser和addgroup也是同一個命令。而對于adduser這個命令,我之前的博文(鏈接在本文開頭處)也詳細的講過了。在這里就不再介紹了。在Ubuntu下,adduser這個命令創建的用戶默認的登陸Shell是/bin/bash,與useradd不同。
綜合上面的兩種版本,發現useradd和adduser這一組命令,也是根據系統版本而不同的。其他版本的Linux系統還沒有做過測試,期望能有更多的發現。