首頁 > 軟體

Linux使用者和組管理

2020-06-16 17:06:04

使用者和組管理

目錄

1.使用者和使用者組介紹
2.使用者管理
3.組管理
4.使用者和組相關檔案操作

1.使用者和組介紹

在linux中,使用者分為管理員和普通使用者;管理員為root,普通使用者又分為系統使用者和登入使用者;系統使用者是對linux的守護行程進行資源分配的使用者,而登入使用者就是我們平常登入linux所使用的,都是登入使用者自己定義的名字。
實際上,在linux系統中,系統所識別你是什麼使用者可不是依靠所謂的使用者名稱來實現的,而是依靠UID來實現的,所謂的使用者名稱是為了讓我們更方便記憶。UID就是linux系統識別你是什麼型別的使用者的唯一識別符號。root的使用者的uid=0,普通使用者的uid為1-65535;其中,在CentOS6系統裡系統使用者為為1-499,登入使用者為500以後;而在centos7上,系統使用者是1-999,登入使用者為1000以後。
組的情況和使用者基本一樣,也有管理員組和普通組,系統組和登入使用者組,且系統識別組也是通過組id的,稱為GID,GID的分配方法也是和使用者一樣。但也有些不同地方,組名和使用者名稱相同且僅僅保護使用者自身的組稱為私有組;一個使用者可以附加到其他組內,這個組稱為這個使用者的附加組,也就是說,一個使用者可以屬於零個或多個組。

2.使用者管理命令

與使用者管理的相關的命令有以下這些,這裡會選擇常用的選項來詳細說下:

useradd;usermod;userdel;id;passwd;chage;chfn;chsh;finger;chpasswd;newusers

1.useradd

useradd:用於建立新使用者或更新預設的新使用者資訊
用法:useradd [選項] username
-u UID:指明新使用者的ID
-g GID:指明使用者所屬主組,可以使用組名,也可以使用GID。
-o:允許使用相同的uid 來建立使用者,常與-u配合
-d home_dir:用於所指定的路徑為家目錄
-c comment:用於指明使用者的注釋資訊
-s shell:指明使用者預設shell程式
-G group1[,group2, ...]:指明使用者附加組,組必要事先存在
-r:建立系統使用者,系統賬號一般用於服務。
-N:不建立以使用者名稱命名的私有組,而是用users組作為主組
-D [s,b,g]:輸出或更改新增使用者時的預設設定

對於新建立的使用者,一個使用者的預設設定是根據/etc/default/useradd檔案來設定的,選項-D就是用來修改這個檔案的,你也可以直接修改這個檔案裡的內容。
上面提到選項-u-g是決定使用者和組id的,你也可以去檔案/etc/login.defs中來修改uid和gid可選範圍。當然/etc/login.defs檔案中還有些其他如郵件地址等設定,你也可以根據需求進行修改。
建立一個新的使用者,一般是更改4個檔案,分別:是/etc/passwd用於存放使用者資訊;/etc/shadow用於存放密碼資訊;/home用於存放使用者家目錄檔案;/var/spool/mail用於存放使用者的郵件。

2.usermod

usermod:用於修改使用者屬性資訊
用法:usermod [選項] username
-u UID:指定使用者的新的UID
-g GID:指定使用者所屬新的主組,可以使用組名,也可以使用GID
-G group1[,group2, ...]:指定使用者新附加組,組必要事先存在。
-s shell:指定使用者新的預設shell程式
-c comment:指定使用者的新的註釋資訊
-d home_dir:指定的路徑為新家目錄
-l loginname:指定使用者登入時新的使用者名稱
-L:鎖定使用者
-U:解鎖被鎖定的使用者,與-L相反
-e YY-MM-DD:指定使用者賬號過期日期
-f inactive:設定非活動期限

使用選項-G時需要注意,它會把原來的組給覆蓋掉,但你也可以保留原有的組,就需要用-a配合。
使用-d時,若要建立新的家目錄並移動原有家資料,則要配合使用-m選項。usermod -c用來修改或新增註釋資訊,和後面提到的chfn作用一樣。usermod -e用來指定使用者賬號過期日期的,和後面提到的chage作用一樣。
對於分別用來鎖定和解鎖的-L-U,實際上是對/etc/shadow檔案的修改,鎖定是在檔案中加密碼的那一欄增加了個“!”,解鎖就是去掉了那個“!”。

3.userdel

userdel:用於刪除使用者賬號和相關使用者相關檔案
用法:userdel [選項] username
-r:移除使用者家目錄和郵件
-f:強制執行刪除

刪除使用者時需要注意一點,就是正在使用的使用者是不能刪除的,強制執行刪除的話會有各種問題,所以建議不要使用強制刪除,並且強制刪除不一定能夠刪除掉。

4.id

id:檢視使用者相關ID資訊
用法:id [選項] [username]
-G:顯示所有組的id
-g:僅顯示有效的組id
-u:僅顯示有效的使用者id
-n:顯示名稱,需配合ugG

5.passwd

passwd:設定使用者密碼
用法:passwd [選項] username
-l:鎖定使用者
-u:解鎖被鎖定的使用者,與-l相反
-e:強制使用者下次登入時修改密碼
-n mindays:指定最短使用期限
-x maxdays:指定最長使用期限
-w warndays:指定提前多少天開始警告
-i inactivedays:指定非活動期限
--stdin:從標準輸入接收使用者密碼

選項-l實際上是在/etc/passwd中有關密碼那一欄上增加了兩個“!!”,解鎖的-u選項就是把增加的“!!”給去掉。大家可能發現usermod中鎖定和解鎖和passwd 的不同,是否可以用usermod來解開passwd命令的鎖定,答案是可以的,passwd也可解開usermod的鎖定,這樣開來增加幾個“!”,好像沒什麼區別。
選項--stdin的用法一般是echo "Password|passwd -stdin Usernamepasswd -e的作用和chage -d 0`一樣,可以相互代替。

6.chage

chage:修改使用者密碼滿期資訊
用法:chage [選項] username
-d lastday:設定期滿最後時間
-E expiraday:設定期滿日期
-I:設定期滿後非活動日期
-l,--list:顯示使用者期滿資訊
-m:設定min_day
-M:設定max_day
-W:設定warn_day

一般來說,有關密碼期滿設定,都是設定一個固定設定,就不會再更改了。這個命令的作用就是用來修改/etc/shadow 檔案中的設定的,你也可以直接修改這個檔案,但不建議,用命令修改會更加保險。

7.chfn

chfn:修改個人使用者註釋資訊
用法:chfn [選項] [username]
-f:更改使用者全名
-o:修改office room number
-p:修改office phone number
-h:修改home phone number

chfn用來新增註釋資訊,作用和useradd -c以及usermod -c相同,但畢竟chfn是專門用來針對個人資訊的,功能更加全面。這個命令是修改的是/etc/passwd檔案。

8.chsh

chsh:更改使用者登入shell
用法:chsh [選項] [username]
-s:指定登入shell
-l,--list:列出/etc/shells的shell內容

chsh指定shell與useradd -susermod -s有相同的作用,但還是那句話塑業有專攻,它也是修改的/etc/passwd檔案。

9.finger

finger:檢視使用者資訊
用法:finger [-lsmp] [username...] [user@host...]

[-lsmp]都是可以用的選項,man中解釋太長了,這裡就用例子看下:

10.newusers

newusers:批次建立使用者
用法:newusers [選項] [檔案]
-r:建立系統賬號
[檔案]:檔案的格式是/etc/passwd的格式:pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell

11.chpasswd

chpasswd:批次建立使用者密碼
用法 :cat 檔案 |chpasswd
檔案的格式:user_name:password,且每行一個使用者密碼。

上述命令中有些選項沒有提到,這裡只說了下經常用到的,對其他選項有興趣的可以檢視man幫助。

3.組管理

與組管理相關的命令如下,基本上和使用者管理命令差不多,這裡也是說下常用的選項內容:

groupadd、groupmod、groupdel、gpasswd、newgrp、goupmems、groups

1.groupadd

groupadd:建立新組
用法:groupadd [選項] group
-g GID:指明gid給新使用者
-K KEY=VALUE:修改/etc/login.defs中的預設設定
-o:忽略gid的唯一性來建立組
-p password:給新使用者新增密碼
-r:建立系統賬戶

2.groupmod

groupmod:修改組的定義資訊
用法:groupmod [選項] group
-g GID:修改為新的gid
-n groupname:修改為新的組名
-o:忽略gid的唯一性來修改組
-p password:修改組的密碼

3.groupdel

groupdel:刪除組
用法:groupdel [hR] group

4.gpasswd

gpasswd:管理/etc/group和/etc/gshadow
用法:gpasswd [選項] group
-a user:新增使用者到組
-d user:從組中刪除使用者
-r:刪除組的密碼
-R:限制組中的使用者
-M user ...:設定組中使用者列表,也就是新增多個用到組
-A admin:設定組的管理員,組的管理員許可權放在/etc/gshadow

5.newgrp

newgrp:臨時切換主組
用法:newgrp [-] group

切換組時,如果使用者本不屬於此組,則會需要密碼

6.groupmems

groupmems:管理使用者組成員,也就是附加組成員
用法:groupmems [選項] [操作]
[選項]:-g groupname:指定所要修改的除root使用者組外的組名
[操作]:
-a username·:新增使用者到組-d username:從組中刪除用-p:從組中清除所有成員-l`:顯示所有組成員

groupmems命令實際上也就是修改/etc/groups

7.groups

groups:顯示組中使用者,或存在一個使用者的組
用法:groups [username]

上述命令可以看出其和使用者管理命令很相似,實際上命令的執行都是通過修改組態檔來實現的,上述命令主要修改的是:/etc/group用來存放組的資訊,也即就是組中使用者的列表等;/etc/gshadow用來存放組的密碼資訊。

說到與使用者和組相關的檔案,那來看看有關對這些檔案操作命令

4.使用者和組相關檔案操作

操作使用者和組相關組態檔的命令有以下這些:

vipw、vigr、pwck、grpck、getent

1.vipw和vigr

vipw,vigr:用於編輯password,group,shadow-password和shadow-group檔案
用法:vipw [選項] 、vigr [選項]

vipw編輯的是/etc/passwd檔案,vigr編輯的是/etc/group檔案。我這裡雖說寫了出來,但不建議大家用,畢竟是通過直接修改組態檔,檔案間的相互關係會出現問題,即使你看起來編輯成功了,但可能出現各種問題,所以特別不建議大家用。

2.pwck和grpck

pwckgrpck:用於檢查password檔案和group檔案的完整性
用法:pwck [選項] [passwd [shadow] ]grpck [選項] [group [gshadow] ]
-q:僅報告錯誤
-r:僅顯示錯誤和告警但不修改檔案
-s:按照UID進行排序分類

可以看出來pwck是檢查/etc/passwd/etc/shadow檔案的,grpck是檢查/etc/group/etc/gshadow檔案的。

3.getent

getent:檢視資料相關資訊
用法:getent datebase [key...]

datebase包含shadow,passwd,group,gshadow...這是開啟了相應的/etc/下的組態檔。

你可能發現有好多命令選項有相同的用法,這裡就做個總結:

新增使用者到組:
useadd -g 主組 -G 附加組... user (建立)
usermod -g mg -G ag... user (修改)
gpasswd -a user ag(新增)
gpasswd -M user... ag (設定)
gpasswd -A user mg (設定) (設定管理員使用者)
goupmems -g 組 -a user (新增)
刪除組中使用者:
gpasswd -d user ag
goupmems -g 組 -d user
給組設定管理員:
gpasswd -A user 主組
指定個人資訊:
useradd -c
usermod -c
chfn
指定shell:
useradd -s
usermod -s
chsh -s

以上就是我對使用者和組管理的相關認識,這裡就不再舉例,大家可以多加嘗試。有什麼寫的不對地方,歡迎提出,謝謝~

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-10/147271.htm


IT145.com E-mail:sddin#qq.com