1.基礎知識 Linux作為一種多用戶的操作系統(伺服器系統),允許多個用戶同時登陸到系統上,並響應每個用戶的請求。 任何需要使用操作系統的用戶,都需要一個系統賬號,賬號分為: 管理員賬號與普通用戶賬號。 在Linux中,操作系統 根據UID來判斷用!根據UID來判斷用戶! 而不是用戶名! 只要id ...
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組就能獲得用戶許可權!