用戶與組管理
如何成為Linux用戶?
在Linux系統中,要想從系統中獲取資源、對系統進行管理和控制,就需要向系統申請一個賬號,從而實現特定用途,當申請到賬號后,要對它設置口令,這樣用戶賬號就申請成功了,然后可以登陸系統,當用戶登陸系統時,需要通過系統的認證,認證成功后才給予授權,在用戶的使用過程中還會對用戶進行審計。
為什么要設置用戶組?
是為了方便對不同類用戶進行分組統一管理,例如:把一個公司的員工按職能的不同劃分為不同的部門從而實現不同部門進行不同的管理方式是一個道理。
Linux中的用戶類別:
管理員用戶 root UID :0 又稱為超級用戶,擁有至高無上的權利,可以對Linux系統進行任何操作,甚至可以刪除系統。
普通用戶:系統用戶 UID : 1-499(Centos6版本中),1-999(Centos7版本中)系統用戶是維護特定的一些服務運行,對守 護進程獲取資源進行權限分配的賬號
登陸用戶 UID :500-60000 (Centos6版本中),1000-60000(Centos7版本中)登陸用戶就是可以登陸到系統 中,完成一些權限內的操作,從而獲取所須資源的用戶。
Linux是如何認識用戶名的呢?
其實系統是通過UID來標識一個用戶的,當你輸入用戶名登陸時,其中進行了名稱轉換,把用戶名轉換為了Linux能夠識別的UID號,名稱轉換信息保存在/etc/passwd文件中
UID:UID是每個用戶身份標識,就像人的身份證一樣
Linux中的組類別:
按用戶類型分:
管理員組:root GID :0
普通用戶組:系統用戶組 GID : 1-499(Centos6版本中),1-999(Centos7版本中)
登陸用戶組 GID :500-60000 (Centos6版本中),1000-60000(Centos7版本中)
按所屬的主從關系來分:
基本組
附加組
按私有公有分:
私有組:組名同用戶名,并且只包含一個用戶
公共組:組內包含了多個用戶
GID :每個組的身份標識
同樣,GID也是Linux認識這個組的標識,通過/etc/group文件中保存的信息進行組名與UID的解析
與用戶相關的文件:
/etc/passwd文件:保存著用戶賬號的信息
解釋文件內容:
第一列:登陸的用戶名
第二列:密碼占位符
第三列:UID
第四列:GID(所在組的)
第五列:注釋描述信息
第六列:用戶家目錄
第七列:用戶默認使用的shell
[root@myhost ~]# getent passwd zhangsan
zhangsan:x:501:501::/home/zhangsan:/bin/bash
/etc/shadow:保存用戶的密碼信息
解釋文件內容:
第一列:登陸的用戶名
第二列:用戶的密碼(一般用sha512加密)
第三列:從1970年1月1日起到密碼最近一次被修改的時間
第四列:密碼的最小有效時間
第五列:密碼的最大有效時間(99999表示永不過期)
第六列:密碼過期前幾天提醒
第七列:密碼的非活動期限
第八列:從1970年1月1日起,多少天后賬號失效
[root@myhost ~]# getent shadow zhangsan
zhangsan:$6$y5uABHzk$5RFHTYLHA4cL.WfSW2Gd4tjOoefwJ4DNrvLzE8.shDViZqBe/JcZbLoN672LqEnl48F484pxg/AWFPZhwWM.Y/:17018:0:30:7:5:17383:
與組相關的文件:
/etc/group文件:保存組的信息
解釋文件內容:
第一列:組名稱
第二列:組密碼占位符
第三列:組的ID
第四列:以當前組為附加組的用戶列表
[root@myhost ~]# getent group mage
mage:x:504:lisi,wangwu,zhangsan
/etc/gshadow文件:保存組的密碼信息
解釋文件內容:
第一列:組名稱
第二列:組密碼
第三列:組管理員列表(組管理員可以更改組密碼和族成員)
第四列:以當前組為附加組的用戶名列表(分隔符為逗號)
[root@myhost ~]# getent gshadow mage
mage:$6$5Blhu/UHz8UNGvz$9qj158ot4uvGDngNKUrzFyKB246zqSIK7Eo0JhKaUp1SubjI0of1NfGsRUVySB8xuG32hxwtayvlGG.pKWu1w1:lisi:lisi,wangwu,zhangsan
用戶管理命令:
useradd命令: 創建用戶
格式: useradd 選項 用戶名
常用選項:
-u:指定UID
-o:配合-u選項,不檢查UID的唯一性
-c:"描述信息"
-d:指定家目錄,指定的家目錄可以不存在,但上層目錄必須存在
-g:指定基本組或基本組GID
-G:指定附加組或GID
-M:不創建家目錄
-r:創建系統用戶
-s:指定登陸的shell
-D:查看useradd默認配置文件,可與其他選項陪和,對默認配置進行更改
-N:不創建私用組主組,使用users組做主組
示例:
創建一個hehe用戶,UID為3000 家目錄為/testdir/hehe 附加組為root組 填寫描述信息為 ni hao
usermod命令:修改用戶的屬性信息
用法格式: usermod 選項 用戶名
選項:
-u:修改UID
-c:修改"描述信息"
-d:修改家目錄
-g:修改基本組
-G:修改附加組,原來的附加組會被覆蓋
-a:與-G一同使用,用于為用戶追加新的附加組
-m:只能與-d選項一同使用,用于將原來的目錄移動為新的家目錄
-s:修改登陸的shell
-l:修改登錄名
-e:設置用戶賬號的失效時間,XXXX-XX-XX
-L:鎖定用戶賬號密碼,禁止登陸(在密碼字符前加!)
-U:解鎖用戶密碼
示例:修改hehe用戶的UID為5000 再把hehe用戶添加附加組bin 設置用戶賬號在2016年10月1日失效
[root@localhost ~]# usermod -u 5000 -aG bin -e 2016-10-01 hehe
[root@localhost ~]# tail -1 /etc/passwd
hehe:x:5000:3000:nihao:/testdir/hehe:/bin/bash
[root@localhost ~]# groups hehe
hehe : hehe root bin
[root@localhost ~]# tail -1 /etc/shadow
hehe:!!:17017:0:99999:7::17075:
passwd命令:用于設置用戶密碼,鎖定和解鎖用戶密碼
格式:passwd 用戶名
選項:
-d:清除用戶密碼,使之可無密碼登錄
-l:鎖定用戶密碼
-u:解鎖用戶密碼
-S:查看用戶密碼鎖定情況
-i:非活動期限
--stdin :從標準輸入接收用戶密碼(在腳本的時候用的比較多)
[root@localhost ~]# passwd hehe
Changing password for user hehe.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd -l hehe
Locking password for user hehe.
passwd: Success
[root@localhost ~]# passwd -S hehe
hehe LK 2016-08-04 0 99999 7 -1 (Password locked.)
[root@localhost ~]# passwd -u hehe
Unlocking password for user hehe.
passwd: Success
[root@localhost ~]# passwd -S hehe
hehe PS 2016-08-04 0 99999 7 -1 (Password set, SHA512 crypt.
userdel 命令:刪除用戶
格式: userdel [選項] 用戶名
選項: -r:刪除用戶同時刪除家目錄
[root@localhost ~]# tail -2 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
hehe:x:5000:3000:nihao:/testdir/hehe:/bin/bash
[root@localhost ~]# userdel -r hehe
[root@localhost ~]# tail -2 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
組管理命令:
groupadd命令:添加新組
格式:groupadd [選項] 組名
選項:
-g:指定GID,默認是上一個組的GID+1
-r:創建系統用戶
示例:創建一個組,組名為zhang GID為5000;
[root@myhost ~]# groupadd -g 5000 zhang
[root@myhost ~]# tail -1 /etc/group
zhang:x:5000:
groupmod命令:修改組信息
格式: groupmod [選項] 組名
選項:
-g:修改組的GID
-n:修改組名
示例:把zhang組的GID改為3000,組名改為lisi
[root@myhost ~]# groupmod -g 3000 -n lisi zhang
[root@myhost ~]# tail -1 /etc/group
lisi:x:3000:
groupdel命令:刪除組
格式: groupdel 組名
gpasswd命令:向組中添加、刪除用戶,給組設置密碼
格式1:gpasswd [選項] 用戶名 組名 \\添加、刪除組成員
選項:
-a:向組中添加用戶
-d:把組中的用戶移除出去
-M:刷新組列表(意思是可同是添加多個用戶,但原來組里的用戶將被移除)
示例:
[root@myhost ~]# useradd zhangsan
[root@myhost ~]# useradd lisi
[root@myhost ~]# useradd wangwu
[root@myhost ~]# groupadd mage
[root@myhost ~]# gpasswd -a lisi mage
Adding user lisi to group mage
[root@myhost ~]# groupmems -l -g mage
lisi
[root@myhost ~]# gpasswd -M zhangsan,wangwu mage
[root@myhost ~]# groupmems -l -g mage
zhangsan wangwu
[root@myhost ~]# gpasswd -d zhangsan mage
Removing user zhangsan from group mage
[root@myhost ~]# groupmems -l -g mage
wangwu
格式2:gpasswd 組名 //給組添加密碼
給組添加密碼的作用是,防止其他人切換到此組。
其他一些常用命令:
chage命令:修改用戶密碼
格式:chage [選項] 用戶名
選項:
-d:修改用戶最近一次修改密碼的時間
修改為0的時候提醒用戶下次登陸修改密碼
-E:設置賬號的有效期
-w:修改密碼過期警告時間
-m:修改密碼最小的有效期
-M:設置密碼的最大有效期
-I:修改用戶的非活動期限
示例:把zhangsan用戶的賬號有效期設置為1年,修改最大密碼期限為1個月,修改其飛活動期限為5天
[root@myhost ~]# passwd zhangsan
Changing password for user zhangsan.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@myhost ~]# chage -E 2017-08-05 -M 30 -I 5 zhangsan
[root@myhost ~]# tail -3 /etc/shadow
zhangsan:$6$y5uABHzk$5RFHTYLHA4cL.WfSW2Gd4tjOoefwJ4DNrvLzE8.shDViZqBe/JcZbLoN672LqEnl48F484pxg/AWFPZhwWM.Y/:17018:0:30:7:5:17383:
lisi:!!:17018:0:99999:7:::
wangwu:!!:17018:0:99999:7:::
groupmems命令:查看哪些用戶的附加組為此組
groupmems [選項] [選項] 組名
選項:
-g:指定組
-l:查看組成員
-d:刪除指定的組成員
-p:清空組成員
-a:添加組成員
示例:
[root@myhost ~]# gpasswd -M zhangsan,lisi,wangwu mage
[root@myhost ~]# groupmems -l -g mage
zhangsan lisi wangwu
[root@myhost ~]# groupmems -d zhangsan -g mage
[root@myhost ~]# groupmems -l -g mage
lisi wangwu
[root@myhost ~]# groupmems -a zhangsan -g mage
[root@myhost ~]# groupmems -l -g mage
lisi wangwu zhangsan
id命令:顯示用戶的真實有效的ID
格式: id [選項] 用戶名
選項:
-u:僅顯示有效的UID
-g:僅顯示用戶的基本組GID
-G:顯示用戶的所用組GID
-n:顯示名稱而非ID
示例:
[root@myhost ~]# id wangwu
uid=503(wangwu) gid=503(wangwu) groups=503(wangwu),504(mage)
[root@myhost ~]# id -u wangwu
503
[root@myhost ~]# id -g wangwu
503
[root@myhost ~]# id -G wangwu
503 504
[root@myhost ~]# id -ng wangwu
wangwu
[root@myhost ~]# id -nG wangwu
wangwu mage
su命令:切換用戶
格式1: su - 用戶名
登陸式切換,會通過讀取目標用戶的配置文件俺來重新初始化(用戶環境也變化)
格式2: su 用戶名
非登錄式切換,不會讀取目標用戶的配置文件進行初始化 (用戶環境不變)
-c “命令”:su結合-c命令后面加上要執行的命令,可以實現不切換用戶的身份即可運行此處制定的命令
格式:su - 用戶 -c "命令"
注意:管理員可無密碼切換至其他任何用戶
chfn命令:給用戶添加描述信息
chsh -s /bin/bash 用戶名: 給指定用戶更改shell環境
getent 文件名 用戶名:查看指定用戶的指定文件的信息
newgrp命令:臨時全換到組(需要組密碼)
格式:newgrp 組名 用戶名
authconfig --passalgo=sha256 --update // 更改密碼的加密算法
newusers命令:批量添加用戶
格式:newusers 用戶名列表文件
chpasswd命令:批量添加密碼
格式:cat 密碼文件 | chpasswd
注意:批量添加用戶以后默認家目錄里沒有任何文件,需要從/etc/skel/中復制過去
默認不創建mail文件,給添加額用戶發送一個郵件就自動創建了mail文件。
快捷命令:
vipw = vi /etc/passwd
vigr = vi /etc/group
pwck:檢查修改的passwd 文件
grpk:檢查修改了得group文件