在 Linux 中 useradd 是個很基本的命令,可是使用起來卻很不直觀。以致於在 Ubuntu 中竟然添加了一個 adduser 命令來簡化添加用戶的操做。本文主要描述筆者在學習使用 useradd 命令時的一些測試結果。 |
說明:本文中的全部試驗都是在 Ubuntu14.04 上完成。linux
功能shell
在Linux中 useradd 命令用來建立或更新用戶信息。bash
useradd 命令屬於比較難用的命令 (low level utility for adding users),因此 Debian 系的發行版中建議管理員使用 adduser 命令。其實 adduser 命令只是一個調用了 useradd 命令的腳本文件。ide
本文將詳細分析羣組和家目錄相關的選項。而且以實例的方式介紹經常使用的 useradd 命令寫法。學習
語法和基本選項測試
注意:本文並非一個完整的文檔,因此僅列出部分經常使用的選項進行說明。spa
useradd [option] username
[option]:
-d< 登入目錄> 指定用戶登入時的目錄。
-g< 羣組> 初始羣組。
-G< 羣組> 非初始羣組。
-m 自動建立用戶的家目錄。
-M 不要建立用戶的家目錄。
-N 不要建立以用戶名稱爲名的羣組。
-s 指定用戶登入後所使用的shell。orm
細說用戶組
ci
首先咱們要搞清楚,什麼是初始羣組?簡單來講在 /etc/passwd 文件中,每行的第四個字段指定的就是用戶的初始羣組。用戶登陸後當即就擁有了初始羣組中的權限。文檔
下面咱們經過不一樣的命令來查看羣組選項的用法:
$ sudo useradd tester1
沒有使用任何羣組相關的參數,默認在建立用戶 tester1 的同時會建立一個同名的羣組。用戶 tester1 的初始羣組就是這個新建的羣組。
$ sudo useradd tester2 -N
此次咱們使用了 -N 選項,即不要生成與用戶同名的羣組。查看下 /etc/passwd 文件,發現 tester2 用戶的初始羣組ID是100。這個100是哪來的?有ID爲100的羣組嗎?其實100做爲 -N 的默認值是寫在配置文件中的。無論有沒有ID爲100的羣組,都是這個值。固然咱們也能夠經過修改配置文件來改變這個默認值!
$ sudo useradd tester3 -g sudo
sudo 是一個很是有權勢的羣組,我決定把 tester3 加入到這個羣組。好,如今去查看一下 /etc/passwd 和 /etc/group 文件,看看有沒有新的羣組被建立? tester3 的初始羣組又是誰?此次沒有建立與 tester3 同名的羣組。用戶 tester3 的初始羣組變成了 sudo。
$ sudo useradd tester4 -G sudo
和上一條命令相比咱們只是把小寫的g替換成了大寫的G。但結果可相差太多了,請您必定要好好的檢查 /etc/passwd 和 /etc/group 文件。由於此次不只建立了羣組 tester4,它仍是用戶 tester4 的初始羣組。和tester1 的惟一不一樣是 tester4 被加入了 sudo 羣組。
在實際的使用中,tester3 和 tester4 的場景都是比較常見的,須要根據實際狀況進行區分。
細說家目錄
Useradd 命令對用戶家目錄的處理讓人困惑,下面咱們將經過實驗來了解家目錄相關的不一樣選項的使用方法:
$ sudo useradd tester1
讓咱們從新看看建立用戶 tester1 這條命令。它不會爲用戶 tester1 建立名爲 tester1 的目錄做爲家目錄,可是咱們打開 /etc/passwd 文件,發現 tester1 的記錄中竟然包含了家目錄 /home/tester1。
tester1:x:1005:1005::/home/tester1:
這讓人難以想象,但這條命令確實是這麼實現的。
$ sudo useradd -m tester5
若要在建立用戶的同時建立用戶的家目錄,必須指定 -m 選項。
$ sudo useradd -d /home/abc tester6
咱們但願本身指定家目錄,此時不生成目錄 abc
$ sudo useradd -d /home/abcd -m tester7
此時生成目錄 abcd,而且目錄下默認存在文件
常見用例
Case 1: 建立一個帶有家目錄而且能夠登陸 bash 的用戶
$ sudo useradd -m -s /bin/bash tester1
Case 2: 指定建立用戶家目錄的路徑
$ sudo useradd -m -d /home/xxx tester2
/home/xxx目錄會被建立。
Case 3: 建立一個沒有家目錄且不能登陸的用戶
$ sudo useradd -s /sbin/nologin tester3
Case 4: 建立時把用戶加入不一樣的用戶組
$ sudo useradd -m -G xxx,sudo tester4
注意過個組名使用逗號分隔,不能有空格。