1. 程式人生 > >Linux中用戶與用戶組管理

Linux中用戶與用戶組管理

登錄shell 系統文件 用戶密碼 系統管理 組密碼 ant 無法使用 font web

1.基礎知識

Linux作為一種多用戶的操作系統(服務器系統),允許多個用戶同時登陸到系統上,並響應每個用戶的請求。

任何需要使用操作系統的用戶,都需要一個系統賬號,賬號分為:管理員賬號與普通用戶賬號。

在Linux中,操作系統根據UID來判斷用!根據UID來判斷用戶! 而不是用戶名!只要id為0就是管理員,哪怕有多個id為0 的賬號

系統在新建賬號時,會根據賬號類型,自動分配遞增賬號的UID與GID (用戶身份編號,組編號),也可自行分配。通常情況下,應當保證UID與GID唯一且不重復。

1.1 組的類別

在Linux中,每個用戶必須有一個主組。當創建賬號時,系統會自動創建一個同名組作為該賬戶的主組。用戶必須屬於一個且只有一個主組。用戶可以屬於零個或者多個附加組。

1.2 用戶與組的配置文件

在Linux中,萬物皆文件,所以用戶與組也以配置文件的形式保存在系統中,以下為用戶和組的主要配置文件詳解:

  • /etc/passwd:用戶及其屬性信息(名稱、 UID、主組ID等)
  • /etc/group:組及其屬性信息
  • /etc/shadow:用戶密碼及其相關屬性
  • /etc/gshadow:組密碼及其相關屬性

passwd文件格式如下圖:

技術分享圖片

依次含義為:

  • 登錄用戶名
  • 密碼
  • UID
  • GID
  • 全名或註釋
  • 用戶主目錄
  • 用戶默認使用shell

group文件格式如下圖:

技術分享圖片

依次含義為:

  • 群組名稱
  • 群組密碼(通常不需要設定,密碼被記錄在/etc/gshadow)
  • GID:群組ID
  • 附加組(以,來分割,該賬戶沒有附加組所以為空)

shadow文件格式如下圖:

技術分享圖片

依次含義為:

  • 登錄用戶名
  • 密碼(通常使用shad512加密)
  • 從1970年1月1日起計算到現在為止密碼最近一次被更改的時間
  • 密碼再過幾天就可以被修改(0表示隨時可改)
  • 密碼幾天後必須變更(99999表示永不過期)
  • 密碼過期前多久提示用戶
  • 密碼過期多久後賬戶將被鎖定
  • 多少天後賬戶將失效(從1970-1-1算起)

gshadow文件格式如下圖:

技術分享圖片

依次含義為:

  • 群組名稱
  • 群組密碼
  • 組管理員列表
  • 當前用戶的附加組

2.用戶賬號管理

在Linux,管理員在默認情況下為root賬戶,UID=0。普通用戶UID默認範圍為1-65535。在centos 6中,新建用戶,默認系統用戶的UID範圍為1-499。普通用戶為500+。在centos 7中,系統用戶範圍為1-999。普通用戶為1000+。對系統的操作權限由用戶決定。

通常對用戶賬號的操作分為添加,修改,刪除。

2.1 添加賬戶

通過:useradd命令,來添加用戶語法如下:

useradd [opentions] login

參數說明:

  • -u UID 自定義UID (默認系統遞增)
  • -o 配合-u 選項,不檢查UID的唯一性(不建議)
  • -g GID:指明用戶所屬基本組,可為組名,也可以GID
  • -c comment 指定一段註釋性描述。
  • -d 目錄 指定用戶主目錄,如果此目錄不存在,則同時使用-m選項,可以創建主目錄。
  • -g 用戶組 指定用戶所屬的用戶組。
  • -G 用戶組,用戶組 指定用戶所屬的附加組。
  • -s Shell文件 指定用戶的登錄Shell。
  • -u 用戶號 指定用戶的用戶號,如果同時有-o選項,則可以重復使用其他用戶的標識號。

實例1

# useradd –d /usr/ddz ddz

創建了一個用戶ddz,並將他的家目錄設置到/user/ddz

實例2

# useradd -s /sbin/bash -g root –G mage,wang ddz

此命令新建了一個用戶ddz,設置該用戶使用的shell為/sbin/bash,設置他的主組屬於group用戶組,設置附加組為mage和wang。(當設置組時,要保證組已經存在,否則請先創建該組)

小技巧:

  • 增加用戶賬號就是在/etc/passwd文件中為新用戶增加一條記錄,同時系統會自動更新其他系統文件如/etc/shadow, /etc/group等。
  • 通常情況創建賬戶,賬戶ID會按照最大的值遞增,但是遞增的值必須在最大範圍內。
  • 在部署軟件時,通常會需要使用賬戶,所以需要指定UID,來部署所有的賬號都用同一個UID,來方便管理。
  • newusers [passwd格式文件] 用於批量創建賬戶,只需要每一列賬戶信息格式,按照passwd中書寫,之後上傳到Linux中替換即可。
  • chpasswd 批量修改用戶口令。將文件格式寫為:user:passwd 。每行一個,之後倒入linux即可。
  • 創建賬戶的默認值設定位於: /etc/default/useradd文件中,該文件記錄了創建用戶賬戶時的默認信息,可通過修改該文件來修改創建賬戶時的信息。

2.2 刪除帳號

如果一個用戶的賬號不再使用,可以從系統中刪除。刪除用戶賬號就是要將/etc/passwd等系統文件中的該用戶記錄刪除,必要時還刪除用戶的主目錄。

通常在運維工作中,一般使用讓賬號失效,果然修改賬戶名的方式,來便捷的操作賬號。

刪除一個已有的用戶賬號使用userdel命令,其格式如下:

userdel 選項 用戶名

常用的選項是 -r,它的作用是把用戶的主目錄一起刪除。

例如:

# userdel -r sam

此命令刪除用戶sam在系統文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的記錄,同時刪除用戶的主目錄。

刪除賬號需要該賬戶沒有人在使用,才能刪除成功。請使用命令刪除,不要去手動改文件。

2.3 修改帳號

修改用戶賬號就是根據實際情況更改用戶的有關屬性,如用戶號、主目錄、用戶組、登錄Shell等。

修改已有用戶的信息使用usermod命令,其格式如下:

usermod 選項 用戶名

常用的選項包括-c, -d, -m, -g, -G, -s, -u以及-o等,這些選項的意義與useradd命令中的選項一樣,可以為用戶指定新的資源值。

另外,有些系統可以使用選項:-l 新用戶名

這個選項指定一個新的賬號,即將原來的用戶名改為新的用戶名。

例如:

# usermod -s /bin/ksh -d /home/z –g developer sam

此命令將用戶sam的登錄Shell修改為ksh,主目錄改為/home/z,用戶組改為developer。

2.4 查詢賬號口令

id [opentions] [User]

相關參數:

  • -u:顯示UID
  • -g:顯示GID
  • -G:顯示用戶所屬的組ID
  • -n:顯示名稱

2.5 用戶口令的管理

用戶管理的一項重要內容是用戶口令的管理。用戶賬號剛創建時沒有口令,但是被系統鎖定,無法使用(在passwd文件中,密碼列顯示為!!或者!表示用戶被鎖定,是無法登陸的),必須為其指定口令後才可以使用,即使是指定空口令。

指定和修改用戶口令的Shell命令是passwd。超級用戶可以為自己和其他用戶指定口令,普通用戶只能用它修改自己的口令。命令的格式為:

passwd 選項 用戶名

可使用的選項:

  • -l 鎖定口令,即禁用賬號。
  • -u 口令解鎖。
  • -d 使賬號無口令。
  • -f 強迫用戶下次登錄時修改口令。

如果默認用戶名,則修改當前用戶的口令。

例如,假設當前用戶是sam,則下面的命令修改該用戶自己的口令:

$ passwd 
Old password:****** 
New password:******* 
Re-enter new password:*******

如果是超級用戶,可以用下列形式指定任何用戶的口令:

# passwd sam 
New password:******* 
Re-enter new password:*******

普通用戶修改自己的口令時,passwd命令會先詢問原口令,驗證後再要求用戶輸入兩遍新口令,如果兩次輸入的口令一致,則將這個口令指定給用戶;而超級用戶為用戶指定口令時,就不需要知道原口令。

為了系統安全起見,用戶應該選擇比較復雜的口令,例如最好使用8位長的口令,口令中包含有大寫、小寫字母和數字,並且應該與姓名、生日等不相同。

為用戶指定空口令時,執行下列形式的命令:

# passwd -d sam

此命令將用戶sam的口令刪除,這樣用戶sam下一次登錄時,系統就不再詢問口令。

passwd命令還可以用-l(lock)選項鎖定某一用戶,使其不能登錄,例如:

# passwd -l sam

利用組來簡化授權操作,當對整個組授權時,整個組下的賬號權限都會進行修改

其他 : 用戶相關的其他指令

chfn [USER] 修改用戶的備註文檔

chsh [Shell] 修改用戶的指定shell

3.用戶組

3.用戶組的管理

每個用戶都有一個用戶組,系統可以對一個用戶組中的所有用戶進行集中管理。不同Linux 系統對用戶組的規定有所不同,如Linux下的用戶屬於與它同名的用戶組,這個用戶組在創建用戶時同時創建。

用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group文件的更新。

3.1增加組

1、增加一個新的用戶組使用groupadd命令。其格式如下:

groupadd 選項 用戶組

可以使用的選項有:

  • -g GID 指定新用戶組的組標識號(GID)。
  • -o 一般與-g選項同時使用,表示新用戶組的GID可以與系統已有用戶組的GID相同。
  • -r 創建系統組

實例1:

# groupadd group1

此命令向系統中增加了一個新組group1,新組的組標識號是在當前已有的最大組標識號的基礎上加1。

實例2:

# groupadd -g 101 group2

此命令向系統中增加了一個新組group2,同時指定新組的組標識號是101。

3.2 刪除組

2、如果要刪除一個已有的用戶組,使用groupdel命令,其格式如下:

groupdel 用戶組

例如:

# groupdel group1

此命令從系統中刪除組group1。要想刪除組,要確保該組不是主組,才能把這個組刪掉。

3.3 修改組

3、修改用戶組的屬性使用groupmod命令。其語法如下:

groupmod 選項 用戶組

常用的選項有:

  • -g GID 為用戶組指定新的組標識號。
  • -o 與-g選項同時使用,用戶組的新GID可以與系統已有用戶組的GID相同。
  • -n新用戶組 將用戶組的名字改為新名字

實例1:

# groupmod -g 102 group2

此命令將組group2的組標識號修改為102。

實例2:

# groupmod –g 10000 -n group3 group2

此命令將組group2的標識號改為10000,組名修改為group3。

3.4 切換組(臨時切換主組)

4、如果一個用戶同時屬於多個用戶組,那麽用戶可以在用戶組之間切換,以便具有其他用戶組的權限。

用戶可以在登錄後,使用命令newgrp切換到其他用戶組,這個命令的參數就是目的用戶組。例如:

$ newgrp root

這條命令將當前用戶切換到root用戶組,前提條件是root用戶組確實是該用戶的主組或附加組。類似於用戶賬號的管理,用戶組的管理也可以通過集成的系統管理工具來完成。

3.5 更改查看組成員

5 、可以通過以下命令,來更改和查看組中的成員

 #groupmems [opentions] [action]

參數如下:

  • -g 更改為指定組(只有root可以使用)
  • -a 指定用戶加入組
  • -d 從組中刪除該用戶
  • -p 從組中清楚所有成員
  • -l 顯示組成員列表

實例1

$groupmems -l -g root

此命令表示查看root組中存在的成員。

實例2

$groupmems -a Father -g root

此命令表示將Father用戶加入root組中。

小技巧:

  • 一個用戶可以加入不同的組,但是有且只有一個主組。
  • 一個用戶的權限為他所屬的多個組的累加權限 。假設user賬戶附加組group1 = write group2 = read ,那麽user就擁有 write + read權限。
  • 組和用戶的關系是多對多 一個用戶可以有多個組,一個組也可以有多個用戶。
  • 在windows中,只有管理員才允許對用戶組進行操作,但在Linux中,只要有組的口令,就可以讓賬號進入組。
  • root組的權限與普通組權限大致相同!!賬號並不是加入root組就能獲得用戶權限!

Linux中用戶與用戶組管理