DBA基礎課程-linux基礎入門:linux用戶和組管理
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢dba基礎課程-linux基礎入門:linux用戶和組管理
要登錄linux操作系統,我們必須要有一個用戶名和密碼。每一個用戶都由一個惟一的身份來標識,這個標識叫做用戶ID.系統中的每一個用戶也至少需要屬于一個"用戶分組".同樣,用戶分組也是由一個惟一的身份來標識的,該標識叫做用戶分組ID(GID).每位用戶的權限可以被定義為普遍用戶或者根用戶,普通用戶只能訪問其擁有的或者有權限執行的文件.根用戶能夠訪問系統全部的文件和程序,根用戶通常也被稱為"超級用戶"其權限是系統中最大的,可以執行任何操作.在本篇博客中,我們就一起來學習一下linux對用戶和組的管理。
一. 用戶和組文件
1. 用戶信息
linux操作系統的所有的用戶信息都保存在/etc/passwd文件,用于用戶登錄時校驗用戶登錄名.加密的口令數據項,用戶ID(UID),默認用戶分組ID(GID),用戶信息,用戶登錄子目錄和登錄后使用的shell.這個文件的每一行保存一個用戶的資料,而用戶資料的每一個數據項采用冒號":"分隔,具體文件內容如下:
字段1:用戶帳號的名稱
字段2:用戶密碼字串或者密碼占位符“x”
字段3:用戶帳號的UID號
字段4:所屬基本組帳號的GID號
字段5:用戶全名
字段6:宿主目錄
字段7:登錄Shell信息
2. 用戶密碼信息
inux用戶密碼信息主要保存在/etc/shadow文件中,這個文件也稱為用戶影子文件--shadow
LINUX使用不可逆的加密算法如DES來加密口令,所以黑客從密文是得不到明文的.文件的每行是8個冒號分割的9個域,如下:
username:passwd:lastchg:min:max:warn:inactive:expire:flag
解釋一下:
username:用戶登錄名
passwd:加密的用戶口令
lastchg:表示從1970年1月1日起到上次修改口令所經過的天數
min:表示兩次修改口令之間至少經過的天數
max:表示口令還會有效的最大天數,如果是99999則表示永不過期
warn:表示口令失效前多少天內系統向用戶發出警告
inactive:表示禁止登錄前用戶名還有效的天數
expire:表示用戶被禁止登錄的時間
flag:保留域,暫未使用
二.用戶管理(添加、修改和刪除用戶命令useradd/usermod/userdel )
1.useradd建立用戶
useradd不加任何參數創建用戶時,系統首先讀取添加用戶配置文件/etc/login.defs和/etc/default/useradd,根據這兩個配置文件中定義的規則添加用戶,然后會向/etc/passwd和/etc/group文件添加用戶和用戶組記錄,同時/etc/passwd和/etc/group對應的加密文件也會自動生成記錄,接著系統會自動在/etc/default/useradd文件設定的目錄下建立用戶主目錄,最后/etc/skel目錄中的所有文件到新用戶的主目錄中,這樣一個新的用戶就建立完成了。
示例:
添加一個用戶caoshenghuan,指定所屬的主用戶組為linuxgroup2,附加用戶組為linuxgroup,同時指定用戶的默認主目錄為/opt/caoshenghuan
[root@localhost ~]# useradd -g linuxgroup2 -G linuxgroup-d /opt/caoshenghuan caoshenghuan
[root@localhost ~]# more /etc/passwd|grep caoshenghuan
caoshenghuan:x:523:1030::/opt/caoshenghuan:/bin/bash
[root@localhost ~]# more /etc/group|grep caoshenghuan
linuxgroup:x:1020:caoshenghuan
2.useradd的使用語法
useradd語法的一般格式為:
useradd [-u uid [-o]] [-g group] [-G group,...]
[-d home] [-s shell] [-c comment]
[-f inactive] [-e expire ] name
各個選項具體含義如下:
? -u uid:即用戶標識號,此標識號必須唯一。
? -g group:指定新建用戶登錄時所屬的默認組,或者叫主組。此群組必須已經存在。
? -G group:指定新建用戶的附加組,此群組必須已經存在。附加組是相對與主組而言的,當一個用戶同時是多個組中的成員時,登錄時的默認組成為主組,而其它組稱為附加組。
? -d home:指定新建用戶的默認主目錄,如果不指定,系統會在/etc/default/useradd文件指定的目錄下創建用戶主目錄。
? -s shell:指定新建用戶使用的默認shell,如果不指定,系統以/etc/default/useradd文件中定義的shell作為新建用戶的默認shell。
? -c comment:對新建用戶的說明信息。
? -f inactive:指定帳號過期多長時間后永久停用。當值為0時帳號則立刻被停權。而當值為-1時則關閉此功能,預設值為-1
? -e expire:指定用戶的帳號過期時間,日期的指定格式為MM/DD/YY。
? name:指定需要創建的用戶名。
示例:
添加一個用戶bzu,指定UID為686,默認的shell為/bin/csh,讓其歸屬為用戶組linuxgroup和linuxgroup2,同時添加對此用戶的描述,
[root@localhost ~]# useradd -u 686 -s/bin/csh -G linuxgroup,linuxgroup2 -c "This is test user"bzu
[root@localhost ~]# more /etc/passwd|grep bzu
bzu:x:686:686:This is test user:/home/bzu:/bin/csh
[root@localhost ~]# more /etc/group|grep bzu
linuxgroup2:x:1030:bzu
linuxgroup:x:1020:caoshenghuan,bzu
bzu:x:686:
3.usermod的使用語法
usermod用來修改用戶的賬戶屬性信息,使用語法如下:
usermod [-u uid [-o]] [-g group] [-Ggroup,...]
[-d 主目錄 [-m]] [-s shell] [-c 注釋] [-l 新名稱]
[-f 失效日期] [-e 過期日期][-L|-U]Name
各個選項具體含義與上面一樣。
示例:
修改用戶bzu的主用戶組為新建的組test_group1,同時修改bzu的附加組為linuxgroup和root,最后修改bzu的默認登錄shell為/bin/bash
[root@localhost ~]# groupadd test_group1 #添加一個新的用戶組
[root@localhost ~]# more /etc/group|greptest_group1 #顯示新增用戶組的信息
test_group1:x:1031:
[root@localhost ~]# usermod -g test_group1 -G linuxgroup,root-s /bin/bash bzu
[root@localhost ~]# more /etc/passwd|grep bzu #從輸出可知,用戶的屬性已經更改
bzu:x:686:1031:This is test user:/home/bzu:/bin/bash
[root@localhost ~]# more /etc/group|grep bzu #從輸出可知,用戶組的屬性也同步更改
root:x:0:root,bzu
linuxgroup:x:1020:caoshenghuan,bzu
bzu:x:686:
4.userdel的使用語法
Userdel用來刪除一個用戶,若指定“-r”參數不但刪除用戶,同時刪除用戶的主目錄以及目錄下的所有文件。語法格式為:
userdel [-r][用戶帳號]
5.如何鎖定、解除用戶密碼
下面首先對bzu和caoshenghuan用戶設置密碼
[root@localhost ~]# passwd bzu
Changing password for user bzu.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd caoshenghuan
Changing password for user caoshenghuan.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updatedsuccessfully.
下面的操作是通過su命令切換到caoshenghuan用戶下,然后在caoshenghuan下再次切換到bzu用戶下,這里的切換用戶是為了說明一個問題:從超級用戶root切換到普通用戶下,是不需要輸入普通用戶密碼的,系統也不會去驗證密碼。但普通用戶之間切換是需要密碼驗證的。
[root@localhost ~]# su – caoshenghuan #通過su命令切換到caoshenghuan用戶下
[caoshenghuan@localhost ~]$whoami #用whoami命令查看當前用戶
caoshenghuan
[caoshenghuan@localhost ~]$ su - bzu #這里是從caoshenghuan用戶下切換到bzu用戶下,需要輸入密碼
Password:
[caoshenghuan@localhost ~]$whoami #成功切換到bzu用戶下
bzu
接下來,在root用戶下執行usermod鎖定bzu的密碼,測試bzu是否還能登錄,從下面可以看出,密碼鎖定后,出現登錄失敗。
[root@localhost ~]# usermod -L bzu #鎖定bzu用戶的密碼
[root@localhost ~]# su - caoshenghuan
[caoshenghuan@localhost ~]$ whoami
caoshenghuan
[caoshenghuan@localhost ~]$ su - bzu #這里輸入的密碼是正確的,但是提示密碼錯誤,因為密碼被鎖定了
Password:
su: incorrect password
[caoshenghuan@localhost ~]$ whoami
caoshenghuan
最后對bzu解除密碼鎖定,登錄正常。
[root@localhost ~]# usermod -U bzu #解除密碼鎖定
[root@localhost ~]# su – caoshenghuan
[caoshenghuan@localhost ~]$ whoami
caoshenghuan
[caoshenghuan@localhost ~]$ su - bzu
Password:
[bzu@localhost ~]$ whoami #密碼鎖定解除后,bzu用戶可以登錄系統
bzu
二. 用戶組管理(添加、切換、刪除groupadd/newgrp/groupdel)
1.groupadd命令
用來新建一個用戶組。語法格式為:
groupadd [-g -o] gid group
各個選項具體含義如下:
-g:指定新建用戶組的GID號,該GID號必須唯一,不能和其它用戶組的GID號重復。
-o:一般與-g選項同時使用,表示新用戶組的GID可以與系統已有用戶組的GID相同。
例如:
創建一個linuxgroup的用戶組和一個linuxgroup2用戶組,GID分別為1020和1030
[root@localhost ~]# groupadd -g 1020 linuxgroup
[root@localhost ~]# groupadd -g 1030 linuxgroup2
[root@localhost ~]# more /etc/group|grep linuxgroup
linuxgroup:x:1020:
[root@localhost ~]# more /etc/group|grep linuxgroup2
linuxgroup2:x:1030:
2.newgrp命令
如果一個用戶同時屬于多個用戶組,那么用戶可以在用戶組之間切換,以便具有其他用戶組的權限,newgrp主要用于在多個用戶組之間進行切換,語法格式為:
newgrp <用戶組>
例子:下面通過實例講述newgrp的用法:
首先建立了3個用戶組group1、group2和group3.
[root@localhost ~]# groupadd group1
[root@localhost ~]# groupadd group2
[root@localhost ~]# groupadd group3
下面創建了一個用戶user1,同時指定user1的主用戶組為group1,附加用戶組為group2和group3
[root@localhost ~]# useradd -g group1 -G group2,group3 user1
[root@localhost ~]# more /etc/group|grep user1
group2:x:501:user1
group3:x:502:user1
下面是對用戶user1設置密碼
[root@localhost ~]# passwd user1
Changing password for user user1.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
下面是切換到user1用戶下,通過newgrp切換用戶組進行的一系列操作,從中可以看出newgrp的作用。
[root@localhost ~]# su - user1
[user1@localhost ~]$ whoami
user1
[user1@localhost ~]$ mkdir user1_doc
[user1@localhost ~]$ newgrp group2
[user1@localhost ~]$ mkdir user2_doc
[user1@localhost ~]$ newgrp group3
[user1@localhost ~]$ mkdir user3_doc
[user1@localhost ~]$ ll
total 12
drwxr-xr-x 2 user1 group1 4096 Oct 24 01:18 user1_doc
drwxr-xr-x 2 user1 group2 4096 Oct 24 01:18 user2_doc
drwxr-xr-x 2 user1 group3 4096 Oct 24 01:19 user3_doc
[user1@localhost ~]$
3.groupdel命令
表示刪除用戶組,語法格式為:
groupdel [群組名稱]
當需要從系統上刪除用戶組時,可用groupdel指令來完成這項工作。如果該用戶組中仍包括某些用戶,則必須先刪除這些用戶后,然后才能刪除用戶組。
例如:刪除linuxgroup這個用戶組
[root@localhost ~]# groupdel linuxgroup
附:用戶和組其他相關命令
設置/更改用戶口令:
格式:passwd 用戶名
id命令
用途:查詢用戶身份標識
格式:id [用戶名]
users、w 、who命令
用途:查詢已登錄到主機的用戶信息
su命令
用途:切換用戶身份
格式:su - 用戶名