一、用戶與組的概念
1、Linux多用戶,多任務的特性
Linux是多用戶多任務操作系統,多用戶多任務就是可在系統上建多個用戶,多個用戶可同一時間同一個系統互不影執行的響各自不同的任務。例如linux服務器上有root、www、ftp,四個用戶。同一時間內,root用戶在查看系統日志,管理維護系統,www用戶在修改自己的網頁程序,ftp用戶在上傳文件,每個用戶互不干擾的進行著自己的工作,各用戶間不能越權訪問,如www用戶不能執行ftp用戶的相關操作,ftp用戶也不能修改www用戶的網頁程序。不同用戶具有不同的權限, linux通過這種權限的劃分與管理,實現了多用戶多任務的運行機制。
2、linux下用戶分類
(1)超級用戶:擁有對系統的最高管理權限,默認是root。
(2)普通用戶:只能對自己目錄下的文件進行訪問和修改,具有登錄系統的權限。
(3)虛擬用戶:也叫“偽”用戶,這類用戶最大的特點是不能登錄系統,例如bin、adm、nobody用戶等。
3、用戶和組的概念
用戶組是具有相同特征用戶的邏輯集合,需要讓多個用戶具有相同的權限時,如查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問授權,若有10個用戶,就需要授權10次,此方法不顯然太合理;另一種方法是建立一個組,讓這個組具有查看、修改此文件的權限,然后將所有需要訪問此文件的用戶放入這個組中,那么所有用戶就具有了和組一樣的權限,這就是用戶組。
4、用戶和組的關系:
用戶和用戶組的對應關系如圖所示:
(1)一對一:即一個用戶可以存在一個組中,也可以是組中的唯一成員。
(2)一對多:即一個用戶可以存在多個用戶組中。
(3)多對一:多個用戶可以存在一個組中,這些用戶具有和組相同的權限。
(4)多對多:多個用戶可以存在多個組中。
5、UID、GID
計算機只能識別二進制的0和1,故算機不能對用戶名與用戶組名稱進行直接的區分,而是通過系統中每個用戶與用戶組的單獨的數字ID進行標識。
標識用戶的ID號為UID(UserID)
標識用戶組的ID號為GID(GroupID)
CentOS系統默認使用16位二進制數字來標識UID和GID=0-65536(默認使用前60000)
CentOS6和7中不同ID范圍:
用戶類型 |
CentOS 6中UID |
CentOS 7中UID |
CentOS 6 GID |
CentOS 7 GID |
管理員用戶 |
0 |
0 |
0 |
0 |
系統用戶 |
1-499 |
1-999 |
1-499 |
1-999 |
登錄用戶 |
500-60000 |
1000-60000 |
500-60000 |
1000-60000 |
二.用戶配置文件概述
1.用戶和組相關的配置文件
(1)/etc/passwd文件
系統用戶配置文件。文件記錄了Linux系統中每個用戶的基本屬性,所有用戶可讀。每行記錄一個用戶,每行記錄又被冒號分割,其格式和含義如下:
[root@localhost ~]# more /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
每個字段的詳細含義:
用戶名:是代表用戶賬號的字符串。
口令:存放著加密后的用戶口令加密后的用戶口令存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一個特殊的字符,用“x”表示。
用戶標識號:就是用戶的UID,每個用戶都有一個UID,并且是唯一的,通常UID號的取值范圍是0~65535,0是超級用戶root的標識號,1~99由系統保留,作為管理賬號。在Linux系統中,普通用戶UID默認從500開始。
組標識號:就是組的GID,與用戶的UID類似,這個字段記錄了用戶所屬的用戶組。
注釋性描述:字段是對用戶的描述信息,比如住址、電話、姓名等等。
主目錄:用戶登錄到系統之后默認所處的目錄,也叫做用戶的主目錄、家目錄等等。
默認shell:就是用戶登錄系統后默認的shell類型。
(2)/etc/shadow文件
用戶影子文件:linux將用戶的密碼從/etc/passwd中分離出來,放到了/etc/shadow,該文件只有root用戶有讀權限,保證了用戶密碼的安全性。文件內容的格式例如:
[root@localhost ~]# more /etc/shadow root:$1$Uvip.QJI$GteCsLrSSfpnMs.VCOvbs/:14169:0:99999:7::: bin:*:13934:0:99999:7:::
每個字段的詳細含義:
用戶名:與/etc/passwd文件中的用戶名是相同的。
加密口令:存放的是加密后的用戶口令字串。
最后一次修改時間:從某個時間起,到用戶最近一次修改口令的間隔天數。
最小時間間隔:兩次修改密碼之間的最小時間間隔。
最大時間間隔:兩次修改密碼之間的最大時間間隔。
警告時間:從系統開始警告用戶到密碼正式失效之間的天數。
不活動時間:用戶口令作廢多少天后,系統會禁用此用戶。
失效時間:該用戶的帳號生存期,超過這個設定時間,帳號失效,用戶就無法登錄系統了。若該字段為空,帳號永久可用。
保留字段:linux的保留字段,目前為空。
(3)/etc/group文件
用戶組配置文件,用戶組的所有信息都存放在此文件中。
[root@localhost ~]# more /etc/group root:x:0:root bin:x:1:root,bin,daemon
每個字段的含義:
組名:用戶組的名稱,由字母或數字構成,組名不能重復。
口令:存放用戶組加密后的口令字串,密碼默認設置在/etc/gshadow文件中,在這里用“x”代替,linux系統默認用戶組都沒有口令。
組標識號:GID,與/etc/passwd中的組標識號對應。
組內用戶列表: 顯示該組的所有用戶,多個用戶之間用逗號分隔。
2./etc/login.defs文件
用來定義創建一個用戶時的默認設置,比如指定用戶的UID和GID的范圍,用戶的過期時間、是否創建用戶主目錄等等。簡單介紹如下:
MAIL_DIR /var/spool/mail
當創建用戶時,同時在目錄/var/spool/mail中創建一個用戶mail文件
PASS_MAX_DAYS 99999
#指定密碼保持有效的最大天數
PASS_MIN_DAYS 0
表示自從上次密碼修改以來多少天后用戶才被允許修改口令
PASS_MIN_LEN 5
指定密碼的最小長度
PASS_WARN_AGE 7
表示在口令到期前多少天系統開始通知用戶口令即將到期
UID_MIN 500
指定最小UID為500 ,也就是說添加用戶時,用戶的UID 從500開始
UID_MAX 60000
指定最大UID為60000
GID_MIN 500
指定最小GID為500,也就是添加組時,組的GID從500開始。
GID_MAX 60000
指定最大GID為60000
CREATE_HOME yes
此項是指定是否創建用戶主目錄,yes為創建,no為不創建。
3./etc/default/useradd文件
useradd命令不加任何參數創建一個用戶后,用戶默認的主目錄一般位于/home下,默認的shell是/bin/bash,是由該文件內容決定的。
[root@localhost ~]# more /etc/default/useradd # useradd defaults file
GROUP=100
HOME=/home #將新建用戶的主目錄放在/home目錄下
INACTIVE=-1 #是否啟用帳號過期禁用,-1表示不啟用
EXPIRE= #帳號過期日期,不設置表示不啟用
SHELL=/bin/bash #指定新建用戶的默認shell類型
SKEL=/etc/skel #指定用戶主目錄默認文件的來源,新建用戶主目錄下的文件都是從該目錄下復制而來的
CREATE_MAIL_SPOOL=no
/etc/default/useradd定義新建用戶的默認屬性,比如用戶主目錄、shell類型等。更改此文件,可改變創建新用戶的默認屬性值。
更改此文件有兩種方法,一種是通過文本編輯器,另一種是通過useradd命令。這里介紹第二種方法:
Useradd命令加“-D”參數后,就可以修改配置文件/etc/default/useradd,使用的一般格式為:
useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
每個選項含義如下:
l -g default_group
新建用戶的起始組名或者GID,組名必須為已經存在的用戶組名稱,GID也必須是已經存在的用戶組GID。與/etc/default/useradd文件中“GROUP”行對應。
l -b default_home
指定新建用戶主目錄的上級目錄,所有新建用戶都會在此目錄下創建自己的主目錄。與/etc/default/useradd文件中HOME行對應。
l -s default_shell
指定新建用戶默認的shell,與/etc/default/useradd文件中“SHELL”行對應。
l -f default_inactive
指定用戶帳號過期多長時間后就永久停用,與/etc/default/useradd文件中“INACTIVE”行對應。
l -e default_expire_date
指定用戶帳號的過期時間。與/etc/default/useradd文件中“EXPIRE”行對應。
例子:
useradd –D不加任何參數時,顯示/etc/default/useradd文件的當前設置
[root@localhost ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash
SKEL=/etc/skel
如果要修改添加用戶時的默認shell為/bin/csh:
[root@localhost ~]# useradd -D -s /bin/csh [root@localhost ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/csh SKEL=/etc/skel
4./etc/skel目錄
該目錄定義了新建用戶在主目錄下默認的配置文件,更改此目錄的內容可以改變新建用戶默認主目錄的配置文件信息。
三、用戶管理
<1>用戶文件
文件 |
內容 |
/etc/passwd |
用戶名,空密碼,UID,GID,注釋信息,家目錄,登陸shell |
/etc/shadow |
用戶名,加密密碼,各密碼時間設置 |
/etc/group |
組名,空組密碼,GID,組中用戶 |
/etc/gshadow |
組名,加密密碼,組管理員列表,組中用戶 |
可執行vipw直接打開/etc/passwd文件,vigr直接打開/etc/group文件
可執行pwck和grpck分別檢查/etc/passwd文件和/etc/group文件。
▲/etc/shadow中密碼設置如下圖
finger USER:查看用戶的詳細信息
可創建文件touch /etc/nologin使得用戶下次無法登陸系統
<2>用戶分類(CentOS 7)
UID |
用戶 |
功能 |
0 |
超級管理員 |
管理計算機的全部權限 |
1-999 |
系統用戶 |
執行某些服務,不用做登陸系統 |
1000-60000 |
普通用戶 |
管理計算機的部分權限 |
<3>用戶創建
▲語法格式
useradd [options] LOGIN
▲常用選項
1 |
-u USERNAME:指定用戶UID |
2 |
-g GROUPNAME:指定用戶主組(基本組),也可以是GID |
3 |
-G GROUPNAME..:指定用戶的附加組 |
4 |
-c "COMMENT":指明用戶的注釋信息 |
5 |
-d HOMEDIR:指明用戶的家目錄 |
6 |
-s SHELL:指定用戶的登陸shell |
7 |
-r:添加系統用戶 |
8 |
-o: 忽略UID添加用戶 |
注:系統用戶默認無家目錄和郵箱,登陸系統顯示無環境變量。如果要讓其擁有環境變量,可創建其家目錄并復制/etc/skel/下文件到其家目錄中。
用戶郵箱地址:/etc/spool/mail/USERNAME
[root@centos7/home/rr]#cp /etc/skel/.[^.]* /home/rr/ -rv [root@centos7 ~]# useradd conver -r [root@centos7 ~]# su conver bash-4.2$ su Password: [root@centos7 ~]# cd /home/ [root@centos7 home]# mkdir conver [root@centos7 home]# cd conver/ [root@centos7 conver]# cp /etc/skel/.[^.]* ./ -r [root@centos7 conver]# su conver [conver@centos7 ~]$ su root Password: [root@centos7 conver]# [root@centos7 conver]# usermod conver -s /bin/nologin [root@centos7 conver]# su conver su: failed to execute /bin/nologin: No such file or directory
<4>用戶屬性修改
▲語法格式
usermod [options] LOGIN
▲常用選項
1 |
-aG GROUPNAME:為用戶添加附加組 |
2 |
-md HOMEDIR:移動家目錄 |
3 |
-l NEWNAME:指定新名字 |
4 |
-L,–lock:鎖定用戶 |
5 |
-U,–ulock:解鎖用戶 |
6 |
-e YYYY-MM-DD USERNAME:指定用戶密碼過期日期 |
7 |
-f INACTIVE USERNAME: 設定非活動期限 |
[root@centos7 ~]# getent shadow user user:$6$1pOy1/nZEpZrwMwa$IBG2aqz0RvHyWuIcOJ62cPWP9eRJga4CHFrbu/MQTHdlWNmw9TTfq673vDdq3XgV2TSNO.l88vjhDumU8aSoE0:17014:0:99999:7::: [root@centos7 ~]# usermod -L user [root@centos7 ~]# getent shadow user user:!$6$1pOy1/nZEpZrwMwa$IBG2aqz0RvHyWuIcOJ62cPWP9eRJga4CHFrbu/MQTHdlWNmw9TTfq673vDdq3XgV2TSNO.l88vjhDumU8aSoE0:17014:0:99999:7:::
注:可使用chsh -s SHELLTYPE USERNME指定用戶shell類型
*用戶配置文件屬性修改,用戶的默認屬性保存在2個文件中
文件 |
內容 |
/etc/login.defs |
用戶范圍,密碼期限設、加密算法等 |
/etc/default/useradd |
用戶登陸默認shell、默認家目錄等 |
useradd -D:查看/etc/default/useradd信息
useradd -D -s SHELLTYPE:修改默認shell
useradd -D -d HOMEDIR:修改默認家目錄
[root@centos7 ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/csh SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@centos7 ~]# useradd -D -s /bin/bash [root@centos7 ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@centos7 ~]# getent shadow user user:$6$FTA6U0nc$BGoO2MC7ziXOG871bsp.jbbg25lEtcF0BWt8sRNY66n.P9npsvvIOp1L1Vx9poVuWdPJaR.7/0RyvZxmwn8EB0:17015:0:99999:7::: [root@centos7 ~]# authconfig --passalgo=sha256 --update [root@centos7 ~]# passwd user Changing password for user user. New password: Retype new password: passwd: all authentication tokens updated successfully. [root@centos7 ~]# getent shadow user user:$5$3sxrgtHo$fD3Kiyus2N2NOQMijCdV6f6kII1bWbis4evht71ISOA:17015:0:99999:7::: <5>用戶刪除
語法格式
userdel [options] LOGIN
-r USERNAME:刪除用戶及其家目錄 |
<6>用戶查看
▲語法格式
id [OPTION]... [USER]
▲常用選項
1 |
-u USERNAME:顯示用戶的UID |
2 |
-g USERNAME:顯示用戶的GID |
3 |
-G USERNAME:顯示用戶所屬組的所有ID |
*也可使用finger命令查看
[root@centos7 ~]# id -u user 1000 [root@centos7 ~]# is -G user bash: is: command not found... [root@centos7 ~]# id -u user 1000 [root@centos7 ~]# id -G user 1000 4325 [root@centos7 ~]# id user uid=1000(user) gid=1000(user) groups=1000(user),4325(admins) [root@centos7 ~]# finger user Login: user Name: user Directory: /home/user Shell: /bin/bash On since Thu Oct 20 14:55 (CST) on :0 from :0 (messages off) On since Fri Oct 19 10:32 (CST) on pts/0 from :0
3、組管理
<1>創建組
▲語法格式
groupadd [options] group
▲常用選項
-g GID GROUPNAME:創建指定組號的組
<2>刪除組
▲語法格式
groupdel group
<3>改變組屬性
▲語法格式
groupmod [options] GROUP
▲常用選項
1 |
-n NEW_GROUPNAME:修改組名 |
2 |
-g GID GROUPNAME:新的組ID |
3 |
-A USERNAME.. GROUPNAME:設置組的的管理權限列表 |
[root@centos7 zhao]# groupadd team [root@centos7 zhao]# getent group team team:x:4451: [root@centos7 zhao]# groupmod -g 4452 team [root@centos7 zhao]# getent group team team:x:4452: [root@centos7 zhao]# groupmod -n team1 team [root@centos7 zhao]# getent group team1 team1:x:4452:
<4>更改和查看組成員
語法格式
groupmems [options] [-g GROUPNAME]
命令功能:查看組內成員
1 |
-a,–add USERNAME:指定用戶加入組 |
2 |
-g,–group groupname:更改為指定GID |
2 |
-d,–delete USERNAME:從組中刪除用戶 |
3 |
-l,–list:顯示組成員列表 |
[root@centos7 ~]# groupmems -a conver -g user [root@centos7 ~]# groupadd -g 4444 content [root@centos7 ~]# getent group content content:x:4444: [root@centos7 ~]# groupmod -n context -g 4445 content [root@centos7 ~]# groupmems -a aa -g context [root@centos7 ~]# groupmems -l -g context aa [root@centos7 ~]# groupmems -d aa -g context [root@centos7 ~]# groupmems -l -g context
語法格式
groups [OPTION]... [USERNAME]..
命令功能:查看成員所屬組
[root@centos7 ~]# getent group admins admins:x:4325:natasha,harry,user [root@centos7 ~]# groups user user : user admins
<5>組切換
語法格式
newgrp [GROUPNAME]
命令功能:切換當前用戶的屬組,只對當前shell有效
[user@centos7 ~]$ newgrp aa Password: [user@centos7 ~]$ touch 1 [user@centos7 ~]$ ll 1 -rw-r--r--. 1 user aa 0 oct 2 21:12 1
<6>組密碼管理
● 更改用戶密碼:
passwd GROOUPNAM
●
gpasswd [OPTION] GROUP
1 |
-a USERNAME:將用戶添加至組中 |
2 |
-d USERNAME:將用戶從組中刪除 |
3 |
-A USER… :設置管理組的用戶列表 |
4、用戶切換
su USERNAME |
su – USERNAME |
|
切換類型 |
非登陸式切換 |
登陸式切換 |
是否重讀配置文件 |
否 |
是 |
是否改變當前目錄 |
否 |
是 |
原創文章,作者:hanlln1,如若轉載,請注明出處:http://www.www58058.com/54311