1. 程式人生 > >Linux用戶管理詳解

Linux用戶管理詳解

linux用戶管理 用戶管理常用命令 用戶管理常用的文件

Linux用戶管理詳解

1Linux中用戶和組的標識

說明:Linux系統是基於用戶身份對系統的資源進行管理的操作系統

1)用戶帳號:UIDUser Identity,用戶標識號)

2)超級用戶在任何Linux系統中UID=0

3)系統用戶在不同版本Linux中的UID範圍:UID:1-499UID:1-999

4)普通用戶在不同版本Linux中的UID範圍:UID:500-65535UID:1000-65535

5)組帳號:GIDGroup Identify,組標識號)

組可以分為:初始組(私有組)和附加組(公共組)

6)組的GID範圍和上面的普通用戶UID範圍相同,每創建一個普通用戶,默認會生成一個和用戶名相同的用戶組且

UIDGID也相同

2、用戶和組相關文件

1)用戶信息文件 /etc/passwd

[root@localhost ~]# vim /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

…………………………………

省略若幹

2)用戶信息文件/etc/passwd詳細介紹

用戶信息文件內容全部是以冒號進行分割的,詳細介紹如下:

第一列:用戶名

第二列:密碼占位符

第三列:用戶 ID UID

0 :超級用戶的 UID,只要 UID 0 就是超級用戶。

1-499:系統用戶的範圍,此範圍的用戶不能用於登錄系統,只能用於軟件服

務運行使用,其中 1-99 是系統保留的賬戶,系統自動創建。100-499 是預留給用戶創建系統用戶的。

500-65535:普通用戶 UID。建立的普通用戶 UID 500 開始,最大到 65535

這些用戶足夠使用了,但是如果不夠也不用害怕,2.6.x 內核以後的 Linux 系統用戶 UID 已經可以支持

232次方這麽多了。

第四列:組 IDGID),添加用戶時,如果不指定用戶的初始組,則會自動創建和用戶名相同的組。

第五列:用戶描述信息

第六列:用戶家目錄,例如超級級管理員 root 的家目錄為/root/ ;普通用戶的家目錄 /home/***

第七列:登錄 shell 類型 /bin/bash 能登錄系統;/sbin/nologin不能登錄系統

3)用戶密碼文件/etc/shadow

[root@localhost ~]# vim /etc/shadow

root:$6$OmNu6a62J4t2sFEP$7FzLpbcwSs4TKRAtC9KOgTWvmX/dSphwBJnWOtLjG.sHgn4iMrEmL.T.dlC9am66i3xC4s4Mu5ENpxBEcTe6y1::0:99999:7:::

bin:*:17110:0:99999:7:::

daemon:*:17110:0:99999:7:::

adm:*:17110:0:99999:7:::

lp:*:17110:0:99999:7:::

sync:*:17110:0:99999:7:::

shutdown:*:17110:0:99999:7:::

…………………………………省略若幹

4)用戶密碼文件/etc/shadow文件詳細介紹

用戶密碼文件/etc/shadow文件內容也是以冒號分割的,詳細介紹如下:

第一列:用戶名

第二列:加密密碼我們也可以在密碼前人為的加入“!”或“*”改變加密值讓密碼暫時失效,使這個用戶無法登陸,達到暫時禁止用戶登錄的效果。註意所有偽用戶的密碼都是“!!”或“*”,代表沒有密碼是不能登錄的。當然我新創建的用戶如果不設定密碼,它的密碼項也是“!!”,代表這個用戶沒有密碼,不能登錄。

第三列:密碼最近更改時間的時間戳( 1970 1 1 日作為標準時間)

時間戳轉換日期方法:

[root@localhost ~]# date -d "1970-01-01 17110 days"

2016 11 05 星期六 00:00:00 CST

日期轉換時間戳方法:

[root@localhost ~]# echo $(($(date --date="2017-11-21" +%s)/86400+1))

17491

第四列:密碼最短有效期

第五例:密碼最長有效期

第六列:密碼到期前的警告天數

第七列:密碼過期後的寬限天數

第八列:密碼失效時間,這裏同樣要寫時間戳,也就是用 1970 1 1日進行時間換算。如果超過了失效時間,就算密碼沒有過期,用戶也就失效無法使用了

第九列:保留

5)組信息文件/etc/group

[root@localhost ~]# vim /etc/group

root:x:0:

bin:x:1:

daemon:x:2:

sys:x:3:

adm:x:4:

tty:x:5:

disk:x:6:

lp:x:7:

…………………………………省略若幹

6)組信息文件/etc/group文件詳細介紹

組信息文件/etc/group文件內容也是以冒號分割的,詳細介紹如下:

第一列: 組名

第二列: 組密碼占位符

第三列: ID 號(GID

第四列: 組內成員列表

7)組密碼文件/etc/gshadow

[root@localhost ~]# vim /etc/gshadow

root:::

bin:::

daemon:::

sys:::

adm:::

tty:::

…………………………………省略若幹

8)組密碼文件/etc/gshadow文件詳細介紹

組密碼文件/etc/gshadow文件內容也是以冒號分割的,詳細介紹如下:

第一列:用戶組

第二列:用戶組密碼,這個段可以是空的或!,如果是空的或有!,表示沒有密碼

第三列:用戶組管理者,這個字段也可為空,如果有多個用戶組管理者,用逗號分割

第四列:組成員,如果有多個成員,用逗號分割

9)用戶的基本目錄

1、用戶的家目錄

超級用戶家目錄是 ’/root’

普通用戶家目錄是 ’/home/xxx’

2、用戶郵箱目錄 ‘/var/spool/mail/xxx’

3、用戶模板目錄 ‘/etc/skel/’

3、用戶和組相關命令

1)添加用戶命令useradd

格式:useradd [選項] 用戶名

選項如下:

-u UID 指定 UID 創建用戶

-g 組名 指定初始組,盡量不要手動指定

-G 組名 指定附加組,將用戶加入到所指定組內。

-c 說明 添加描述信息

-d 目錄 手動指定家目錄,目錄不需要事先創建

-s shell類型 指定用戶是否能登錄系統

-M 創建時不生成用戶家目錄

1

useradd -M –s /sbin/nologin zhangsan

創建 zhangsan 用戶,不創建用戶家目錄,並且不能登錄系統

2

先執行“groupadd a1“,預先創建好需要的組

useradd –u 521 –g a1 –G root –d /home/b1 –c “test user” –s /bin/bash abc

-u 指定UID521-g指定初始組是a1-G指定了附加組為 root組;-d指定了家目錄叫/home/b1-c添加了“test user”作為描述信息;-s指定了登錄 shell類型為/bin/bash,允許登陸系統。

2useradd 創建用戶時默認規則及相關文件介紹

useradd 創建用戶時默認參考兩個配置文件,分別是/etc/default/useradd/etc/login.defs

1/etc/default/useradd文件介紹

[root@localhost ~]# vim /etc/default/useradd

# useradd defaults file

GROUP=100

新創建用戶時默認初始組的 GID 號(公共組)現在使用的是私有組機制(根據創建用戶名稱創建組)

HOME=/home 新創建用戶的家目錄的默認位置

INACTIVE=-1 密碼過期後寬限天數(過期停權),-1代表永不過期,0代表立即失效

EXPIRE= 密碼失效時間,此處寫時間戳,到期後立刻失效,不填寫表示用戶密碼永不過期。

SHELL=/bin/bash 此選項是創建用戶時默認的 shell 類型,/bin/bash 表示可以登錄系統

SKEL=/etc/skel 此選項是創建用戶時使用的模板目錄,/etc/skel 中的文件在用戶創建時

都會被復制到用戶家目錄下。

CREATE_MAIL_SPOOL=yes 此選項是是否給新用戶創建郵件緩沖(即新郵箱)

2/etc/login.defs文件介紹

[root@localhost ~]# vim /etc/login.defs

MAIL_DIR /var/spool/mail 指定新用戶的默認郵箱位置

PASS_MAX_DAYS 99999 這行指定的是密碼的有效期

PASS_MIN_DAYS 0 這行指定的是兩次密碼的修改間隔時間

PASS_MIN_LEN 5 密碼的最小長度,現在驗證已經被 PAM 模塊取代

PASS_WARN_AGE 7 這行代表密碼修改到期前的警告天數

UID_MIN 1000 創建普通用戶的時候默認的起始 UID

UID_MAX 60000 創建普通用戶,不用 -u 指定時,默認最大的 UID

# System accounts

SYS_UID_MIN 201 創建系統用戶時默認的最小UID

SYS_UID_MAX 999 創建系統用戶時默認的最大UID

GID_MIN 1000 創建組的時候默認的起始 GID

GID_MAX 60000 創建組的時候默認的最大的 GID

# System accounts

SYS_GID_MIN 201 默認最小系統GID

SYS_GID_MAX 999 默認最大系統GID

CREATE_HOME yes 創建用戶時是否創建用戶家目錄 默認 yes 創建

UMASK 077 建立的用戶家目錄的默認權限

USERGROUPS_ENAB yes 使用命令 userdel 刪除用戶時,是否刪除用戶的初始組

ENCRYPT_METHOD SHA512 指定 Linux 用戶的密碼使用 SHA512 散列模式加密

3)添加和修改密碼命令passwd

格式:passwd [選項] 用戶名

選項:

-l 用戶名 鎖定用戶的密碼,使之無法登錄到系統

-u 用戶名 解鎖用戶密碼

-S(大) 用戶名 查看用戶帳號的狀態(是否被鎖定)

第一次對一個用戶使用時是為此用戶創建密碼,第二次使用時是修改密碼。

例:root身份執行 passwd

[root@localhost ~]# passwd root root用戶修改自己的密碼

更改用戶 root 的密碼

新的 密碼:

無效的密碼: 密碼少於 8 個字符

重新輸入新的 密碼:

passwd:所有的身份驗證令牌已經成功更新。

[root@localhost ~]# passwd a1 root用戶修改普通用戶a1的密碼

更改用戶 a1 的密碼

新的 密碼:

無效的密碼: 密碼少於 8 個字符

重新輸入新的 密碼:

passwd:所有的身份驗證令牌已經成功更新。

註:root可以修改任意用戶密碼,普通用戶只能修改自己的密碼,當普通用戶沒有密碼時,自己是修改不了自己的密碼的!

非交互式密碼設置:

--stdin 使用 echo|實現密碼非交互式創建

例:為普通用戶a1創建或修改密碼

[root@localhost ~]# echo '123456'|passwd --stdin a1

更改用戶 a1 的密碼

passwd:所有的身份驗證令牌已經成功更新。

4)用戶信息修改命令usermod(必須是已存在的用戶)

格式:usermod [選項] 用戶名

選項:

-u UID 修改用戶的指定 UID

-g 組名 修改用戶的指定初始組(盡量不修改)

-G 組名 修改用戶的附加組(不管之前設置了多少附加組,都替換掉)

-c 說明 修改用戶的描述信息

-d 目錄 結合-m 選項直接對源家目錄進行改名實現修改家目錄

例:usermod –m –d /home/u4 user4(用戶user的原家目錄是/home/user4

-s shell類型 修改用戶的登錄 shell 類型

-L(大)用戶名 鎖定用戶的密碼

-U(大)用戶名 解鎖用戶密碼

-l 新用戶名 舊用戶名 修改用戶名

5)刪除用戶命令userdel

格式:userdel [選項] 用戶名

選項

-r 刪除用戶時,連帶家目錄一起刪除

6)添加組命令groupadd

格式:groupadd 組名

7)刪除組命令groupdel

格式:groupdel 組名

註意:被刪除的組盡量是空組

8)向組內添加成員命令gpasswd

格式:gpasswd [選項] 用戶名 組名

選項:

-a 向指定組內添加一個成員

-d 把指定用戶從組內刪除

-M 定義組內成員列表,用戶之間用,分隔 (覆蓋式)

9)其他相關命令

1. id 用戶名

顯示用戶的 UID、初始組、附加組列表

2. su 用戶名

切換用戶身份

su - 用戶名

連帶環境變量一起切換

3. newgrp 組名

修改用戶的有效組,切換到普通用戶之後,執行命令

有效組定義:用戶創建文件或目錄時使用哪個組作為文件的所屬組,就是有效組。

註:初始組、附加組:是用戶和組之間的關系

有效組:用戶和文件之間的關系


Linux用戶管理詳解