useradd [選項] LOGIN(登錄名)
useradd –D
useradd –D [選項]
創建一個新用戶或更新默認新用戶信息。useradd和adduser命令相同,adduser是useradd的軟連接。如果使用時不帶-D選項,useradd命令使用命令行上指定的值和系統的默認值創建一個新的用戶。根據命令行選項,useradd命令也會更新系統文件和創建新用戶的主目錄並復制初始文件。默認上也會為用戶創建組(查看-g,-N,-U和USERGROUPS_ENAB)。
(1).用戶的分類
超級用戶:root,擁有對系統的最高管理權限,UID默認為0。
虛擬用戶:又叫系統用戶或偽用戶,具有一定特權,與系統或程序服務相關,但沒有真正的使用者。一般不會用來登錄系統,它主要用於維持某個訪問的正常運行,如ftp,apache等。
普通用戶:是一種受限制的用戶,一般新建的用戶都是普通用戶。默認只能執行/bin、/usr/bin、/usr/local/bin以及自身主目錄里的命令。
在CentOS7中系統用戶UID為1~999,普通用戶UID為1000+;以前的CentOS6中系統用戶UID為1~499,普通用戶UID為500+
注意:UID即每個用戶的身份標識,雖然可以修改/etc/passwd(命令設置的UID不允許重復),但盡量保持唯一性,類似於每個人的身份證號碼
(2).常用選項
-d,--home-dir HOME_DIR 創建新用戶時,用HOME_DIR作為用戶主目錄。默認情況是將用戶名附加到BASE_DIR(默認/home/)並將其用作主目錄名稱。
-m,--create-home 其實這是一個臨時開關,表示如果不存在用戶主目錄,則生成用戶主目錄(/home/[用戶名]),骨架目錄中的文件和目錄(可以使用-k選項指定)將會被復制到主目錄。默認上,如果沒有指定此選項,並且/etc/login.defs(CREATE_HOME)的系統設置沒有啟用,則不會創建主目錄。創建用戶主目錄必須存在且具有適當的SELinux環境和權限。否則無法創建或訪問用戶的主目錄。
-M,--no-create-home 和-m選項一樣是一個臨時開關,即使/etc/login.defs(CREATE_HOME)的系統設置是yes,也不創建用戶的主目錄。
-g,--gid GROUP 用戶初始登錄組的組名或號碼。組名必須已存在,組號碼必須指代已存在的組。如果沒有指定,useradd的行為將會依賴於/etc/login.defs文件中的USERGROUPS_ENAB參數。如果此參數設置為yes(或在命令行上指定了-U/--user-group),將會為用戶創建一個組,組名和登錄名相同。如果選項設置為no(或在命令行上指定-N/--no-user-group),useradd會把新用戶的主組設置為/etc/default/useradd中GROUP變量指定的值,再或者默認100。
-G,--groups GROUP1[,GROUP2,…[GROUPN]] 用戶還屬於的附加組列表。每個組都用逗號隔開,中間沒有空格。這里的組受到-g選項給定的組同樣的限制。默認上,用戶只屬於初始組。(一個用戶只允許有一個主組,可以有多個附加組)
-s,--shell SHELL 用戶登錄shell名。默認為留空,讓系統根據/etc/default/useradd中的SHELL變量選擇默認的登錄shell,默認為空字符串。有時需要禁止某些用戶執行登錄動作,例如用來執行系統服務的用戶,這時將shell設置為/sbin/nologin就可以禁止用戶登錄。(Shell類型詳見:查看所有shell類型)
(3).簡單了解的選項
-b,--base-dir BASE_DIR 如果未指定-d HOME_DIR,系統使用默認基目錄(BASE目錄)。此時,BASE_DIR與賬戶名稱聯系起來定義主目錄(HOME目錄)。這時的BASE_DIR必須存在,否則無法創建主目錄。如果選項沒有指定,useradd將使用/etc/default/useradd中的HOMR變量,過默認的/home。
-c,--comment COMMENT 通常是關於登錄的簡短描述,當前用於用戶全名,可以是任何字符串。
-D,--defaults 顯示或更改默認的useradd配置。
-e,--expiredate EXPIRE_DATE 用戶賬戶將被禁用的日期,以YYYY-MM-DD格式指定。如果沒有指定,useradd將使用/etc/default/useradd中的EXPIRE變量指定的默認過期時間,或者一個空字符串(永不過期)。
-f,--inactive INACTIVE 密碼過期后,賬戶被徹底禁用前的天數。0表示立即禁用,-1表示禁用這個功能。如果未指定,useradd將使用/etc/default/useradd中的INACTIVE指定的默認禁用周期,或默認為-1。
-k,--skel SKEL_DIR 骨架目錄,包含使用useradd創建用戶時,要復制到用戶主目錄中的文件和目錄。這個選項只有在指定-m(或--create-home)選項時才有效。如果此項沒有設置,骨架目錄使用/etc/default/useradd中的SKELeton的變量或默認為/etc/skel。如果可以,也復制ACL和擴展屬性。
-K,--key KEY=VALUE 覆蓋/etc/login.defs默認值(UID_MIN,UID_MAX,UMASK,PASS_MAX_DAYS及其他)。例如:-K PASS_MAX_DAYS=-1可以用於創建一個密碼不會過期的系統賬戶,即使系統賬戶沒有密碼。你還可以指定多個-K選項,如:-K UID_MIN=100 –K UID_MAX=499。
-l,--no-log-init 不要將用戶添加到登錄和登錄失敗數據庫。默認上,最近登錄和登錄失敗中用戶的條目會被重置,以避免重新使用先前刪除的用戶的條目。
-N,--no-user-group 不要創建同名組,而是將用戶添加到-g選項指定的組,或根據/etc/default/useradd中的GROUP變量。如果沒有指定-g,-N和-U選項,默認行為由/etc/login.defs中的USERGROUPS_ENAB變量指定。
-o,--non-unique 允許使用重復的UID創建用戶賬戶。此選項只有和-u選項組合使用才有效。
-p,--password PASSWORD 加密了的密碼,就像crypt(3)的返回值。默認為禁用密碼。注意:不推薦使用這個選項,因為加密過的密碼會被用戶通過列出這個過程而看到。你應該確保密碼符合系統的密碼政策
-r,--system 創建一個系統賬戶。將在/etc/shadow中創建沒有陳舊信息的系統用戶,並且在選擇/etc/login.defs中定義的SYS_UID_MIN到SYS_UID_MAX范圍中的數字標識,而不是UID_MIN到UID_MAX(以及它們的GID對應的創建組)。注意:useradd不會為這種用戶或篡改建主目錄,無論/etc/login.defs(CREATE_HOME)中的默認設置是怎樣。如果香味要創建的系統賬戶創建主目錄,需要指定-m選項。
-R,--root CHROOT_DIR 在CHROOT_DIR目錄中應用更改,並使用CHROOT_DIR目錄中的配置文件。
-u,--uid UID 用戶ID的數字值。此值必須為唯一的,除非使用了-o選項。此值必須非負,默認使用大於等於UID_MIN,且大於任何其他用戶ID最小值。
-U,--user-group 創建一個和用戶同名的組,並將用戶添加到組中。如果沒有指定-g,-N和-UID_MIN選項,默認行為有/etc/login.defs中的USERGROUPS_ENAB變量指定。
-Z,--selinux-user SEUSER 用戶登錄的SELinux用戶。默認為留空,這會造成系統選擇默認的SELinux用戶。
注意1:只帶-D選項使用時,useradd將顯示當前的默認值。-D和其他選項配合使用時,useradd將為指定的選項更新默認值。有效的更新默認值選項有-b,-e,-f,-g,-s。
注意2:系統管理源負責將默認的用戶文件放在/etc/skel/目錄中(或者命令行上、/etc/default/useradd中指定的任何其他目錄)。
注意3:你可能不能向NISsan組或LDAP組添加用戶。這只能在相應服務器上進行。相似的,如果用戶名已經存在於外部用戶數據庫中,比如NIS或LDAP,useradd將拒絕創建用戶賬戶的請求。
注意4:用戶名不能超過32個字節長。
(4).配置文件
在/etc/login.defs中有如下配置變量,可以用來更改此工具的行為:
CREATE_HOME(boolean) 指示是否應該為新用戶默認創建主目錄。此設置並不應用到系統用戶,並且可以使用命令行覆蓋。
GID_MAX(number),GID_MIN(number) useradd,groupadd或newusers創建的常規組的組ID范圍。GID_MIN默認值1000(CentOS6為500),GID_MAX默認值60000。
MAIL_DIR(string)郵箱目錄。修改或刪除用戶賬戶時需要處理郵箱,如果沒有指定,將使用編譯時指定的默認值。
MAIL_FILE(string) 定義用戶郵箱文件的位置(相對於主目錄)。
注意:MAIL_DIR和MAIL_FILE變量由useradd,usermod和userdel用於創建、移動或刪除用戶郵箱。如果MAIL_CHECK_ENAB設置為yes,它們也被用於定義MAIL環境變量。
MAX_MEMBERS_PER_GROUP(number) 每個組條目的最大成員數。達到最大值時,在/etc/group開始一個新條目(行)(使用同樣的名稱,同樣的密碼,同樣的GID)。默認值是0,意味着組中的成員數沒有限制。此功能(分割組)允許限制組文件中的行長度。這對於確保NIS組的行比長於1024字符。如果要強制這個限制,可以使用25。
注意:分割組可能不受所有工具的支持(甚至在Shadow工具集中)。如果沒有必要你不應該使用這個變量。
PASS_MAX_DAYS(number) 一個密碼可以使用的最大天數。如果密碼比這個舊,將會強迫更改密碼。如果不指定,就假定為-1,這會禁用此限制。
PASS_MIN_DAYS(number) 兩次更改密碼時間最小間隔。將會拒絕任何早於此的更改密碼的嘗試。如果不指定就假定為-1,將會禁用此限制。
PASS_WARN_AGE(number) 密碼過期之前鬼畜警告的天數。0表示在過期當天警告,負值表示不警告。如果沒有指定,不會給出警告。
SYS_GID_MAX(number),SYS_GID_MIN(number) useradd、groupadd或newusers創建的系統組的組ID范圍。SYS_GID_MIN默認101(CentOS6為201),SYS_GID_MAX默認GID_MIN-1。
SYS_UID_MAX(number),SYS_UID_MIN(number) useradd或newusers創建的系統用戶的用戶ID的范圍。SYS_UID_MIN默認101(CentOS6為201),SYS_UID_MAX默認UID_MIN-1。
UID_MAX(number),UID_MIN(number) useradd或newusers創建的普通用戶的用戶ID的范圍。UID_MIN默認1000(CentOS6為500),UID_MAX默認60000。
UMASK(number) 文件模式創建掩碼初始化為此值。如果沒有指定,掩碼初始化為022。Useradd和newusers使用此掩碼設置它們創建的用戶主目錄的模式。也被login用於指定用戶的初始umask。注意,此掩碼可以被用戶的GECOS行覆蓋(當設置了QUOTAS_ENAB時),也可以被帶K指示符的limits(5)定義的限制值覆蓋。
USERGROUPS_ENAB(boolean) 如果uid和gid相同,用戶名和主用戶名也相同,使非root組的組掩碼位和屬主位相同(如:022->002,077->007)。如果設置為yes,組中也沒有成員了,userdel將移除此用戶組,useradd創建用戶時,也會創建一個同名的默認組。
(5).用戶信息存放文件
/etc/passwd 用戶基本信息
/etc/shadow 用戶安全信息(包含密碼)
/etc/group 用戶組信息
/etc/gshadow 用戶組安全信息
/etc/default/useradd 用戶創建的默認值
/etc/skel/ 用戶默認骨架目錄(創建新用戶時,默認復制目錄下所有文件)
/etc/login.defs Shadow密碼套件配置
(6).退出值(返回值)
0 成功 1 無法更新命令文件 2 無效的命令語法 3 給了選項一個無效的參數 4 UID已經使用(且沒有-o) 6 指定的組不存在 9 用戶名已被使用 10 無法更新組文件 12 無法創建主目錄 14 無法更新SELinux用戶映射
(7).實例
1)添加用戶
[root@xuexi ~]# useradd tt [root@xuexi ~]# tail -1 /etc/passwd tt:x:1001:1001::/home/tt:/bin/bash //用戶名:密碼占位符:UID:GID:用戶描述:用戶主目錄(即~):登錄后的shell [root@xuexi ~]# tail -1 /etc/group tt:x:1001: //UID=GID
說明:此命令會自動創建tt組,並成為tt用戶的默認主組,同時默認登錄shell為bash。
2)建立用戶且指定UID
[root@xuexi ~]# useradd caojh -u 1044 [root@xuexi ~]# id caojh uid=1044(caojh) gid=1044(caojh) 組=1044(caojh) [root@xuexi ~]# tail -1 /etc/passwd caojh:x:1044:1044::/home/caojh:/bin/bash
3)添加用戶並指定主目錄
root@xuexi ~]# useradd -d /home/myd t3 [root@xuexi ~]# tail -1 /etc/passwd t3:x:1045:1045::/home/myd:/bin/bash //可以看到主目錄為/home/myd
4)添加用戶並加入指定用戶組(主組和附加組)
[root@xuexi ~]# useradd -g tt t1 //指定用戶主組 [root@xuexi ~]# id t1 uid=1046(t1) gid=1001(tt) 組=1001(tt) [root@xuexi ~]# useradd -G tt,root t2 //指定用戶附加組 [root@xuexi ~]# id t2 uid=1047(t2) gid=1047(t2) 組=1047(t2),0(root),1001(tt)
(8).擴展
userdel [選項] LOGIN
userdel刪除用戶賬戶和相關文件
-r,--remove 刪除主目錄和郵件池(/var/mail)
[root@xuexi ~]# ls /home/ caojh myd t1 t2 tt xf [root@xuexi ~]# userdel -r tt //tt組包含其他用戶 userdel:組“tt”沒有移除,因為它包含其它成員。 //tt組刪除失敗,但用戶刪除成功 [root@xuexi ~]# userdel -r t1 [root@xuexi ~]# ls /home/ caojh myd t2 xf