用戶與用戶組之用戶篇
用戶與用戶組
1.Linux 系統中有三種角色:所有者(用戶),用戶組與其他人,一張圖可以說明用戶與用戶組的關系。
如圖,某公司相當於一個用戶組,該用戶組下有A,B兩個用戶,用戶擁有各自的私密空間和公用空間,不是該用戶組下的就是其他人,其他人無法訪問用戶組下的內容。
2.GID 與 UID
UID 可以理解為 user ID,也就是 用戶ID,GID 可以理解為 group ID,也就是 用戶組ID,這兩個 ID 值非常重要,一般不建議更改,比如 Linux 中會根據 UID 和 GID 來判斷一個文件屬於哪個用戶和用戶組,如果隨意改動 UID 和 GID,導致無法找到用戶下的文件或者對文件沒有了權限,會很麻煩。
用戶ID 的範圍不同,在 Linux 中代表的特性也不同,在學習對用戶組操作前,先了解一下不同 UID 的範圍對應的不同特性。
查看用戶的 UID 和 GID id username ,如
[root@localhost ~]# id sherlock
uid=505(sherlock) gid=505(holmes) 組=505(holmes)
也可以查看 /etc/passwd 文件,其中第一個值代表賬號名稱,第三個值代表 UID,第四個值代表GID,如 sherlock 的 UID 為505,GID 為506
[root@localhost ~]# grep ‘sherlock‘/etc/passwd
sherlock:x:505:505::/home/sherlock:/bin/bash
3.用戶組和用戶常用的相關系統文件
/etc/passwd - 使用者賬號咨詢
/etc/shadow - 使用者賬號咨詢加密
/etc/group - 用戶組信息
用戶
1. useradd,具體的 useradd 用法可以查看幫助手冊(man useradd)
-u 後面接UID,指定某個UID給該用戶 -r 創建一個系統賬號,UID小於500 -d 指定某個目錄成為主文件夾,默認使用home下的login名稱對應的目錄為用戶的主文件夾 -g 初始用戶組,默認的用戶組數字為1 -G 後面接組名,代表將用戶加入某些組,組與組之間用 ”,” 號隔開-m 如果沒有用戶目錄則自動創建(一般賬號) -M 不創建用戶目錄(系統賬號) -c 設置賬號 /etc/passwd的說明 -e 賬號的失效日期,後面接”YYYY-MM-DD” -f 密碼失效日期,0為立即失效,-1為永不失效,默認為-1 -s 後面接shell,默認為/bin/bash -n 取消將用戶加入設置的默認用戶組(組名與用戶名相同),如果取消,用戶會加入默認的100(users) 用戶組下
- 新增用戶 useradd username
[root@localhost ~]# useradd sherlock [root@localhost ~]# id sherlock uid=505(sherlock) gid=506(sherlock) 組=506(sherlock)
#默認將 /home/sherlock 作為用戶的主文件夾 [root@localhost ~]# ll -d /home/sherlock drwx------ 4 sherlock sherlock 4096 2月 1 15:02 /home/sherlock
# passwd/shadow/group 添加了這個用戶和默認設置的用戶組信息 [root@localhost ~]# grep sherlock /etc/passwd /etc/shadow /etc/group /etc/passwd:sherlock:x:505:506::/home/sherlock:/bin/bash /etc/shadow:sherlock:!!:17928:0:99999:7::: /etc/group:sherlock:x:506:
- 設置特定的 UID 給新用戶(一般不用)
[root@localhost ~]# useradd -u 700 sherlock
- 新增用戶時設置用戶的初始用戶組(註意:設置的用戶組必須已經存在)
[root@localhost ~]# useradd sherlock -g holmes [root@localhost ~]# id sherlock uid=505(sherlock) gid=505(holmes) 組=505(holmes)
- 新增用戶時將用戶加入某個用戶組(註意:加入的用戶組必須已經存在)
[root@localhost ~]# useradd sherlock -G demo [root@localhost ~]# id sherlock uid=505(sherlock) gid=507(sherlock) 組=507(sherlock),506(demo)
- 新增用戶時設置說明
[root@localhost ~]# useradd sherlock -g holmes -c "I am sherlock holmes" [root@localhost ~]# grep sherlock /etc/passwd sherlock:x:505:505:I am sherlock holmes:/home/sherlock:/bin/bash
- 新增系統賬號
[sherlock@localhost home]$ useradd -r sherlock
- 查看 useradd 的默認值
[root@localhost ~]# useradd -D GROUP=100 #默認用戶組,如果使用useradd -n username 就會默認加入這個用戶組 HOME=/home #默認主文件目錄 INACTIVE=-1 #密碼失效日,/etc/shadow 第7列 EXPIRE= #賬號失效日,/etc/shadow 第8列 SHELL=/bin/bash #默認的shell SKEL=/etc/skel #用戶主文件夾的內容數據參考目錄 CREATE_MAIL_SPOOL=yes #是否自動創建用戶的郵箱
2.passwd 密碼設置
用法:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
-l 將 /etc/shadow 第二列最前面加上!,使得密碼失效 -u 與 -l 相反 -S 列出密碼的相關參數 -n 不可更改密碼的天數 -x 必須要更改密碼的天數 -w 密碼過期前的警告天數 -i 密碼失效的日期
- 設置用戶密碼
[root@localhost ~]# passwd sherlock 更改用戶 sherlock 的密碼 。 新的 密碼: 重新輸入新的 密碼: passwd: 所有的身份驗證令牌已經成功更新。
- 查看用戶的密碼參數
[root@localhost ~]# passwd -S sherlock sherlock PS 2019-02-01 0 99999 7 -1 (密碼已設置,使用 SHA512 加密。) #用戶名 PS 密碼創建日期 最小天數 更改天數 警告天數 密碼是否會失效(0-立即失效,-1-永不失效)
- 修改用戶的需要更改密碼的天數和失效天數
[root@localhost ~]# passwd -x 30 -i 60 sherlock 調整用戶密碼老化數據sherlock。 passwd: 操作成功 [root@localhost ~]# passwd -S sherlock sherlock PS 2019-02-01 0 30 7 60 (密碼已設置,使用 SHA512 加密。) #用戶名 PS 密碼創建日期 最小天數 在30天後需要更改密碼 警告天數 密碼60天後會失效
3.chage 修改密碼參數
用法:chage [options] [LOGIN]
-l 列出賬號的詳細密碼信息 -d 最後一次更改密碼的日期 -E 賬號失效日 -I 密碼失效日期 -m 密碼最短保留天數 -M 密碼需要修改天數 -W 密碼過期前的警告日期
- 顯示密碼的詳細參數信息
[root@localhost ~]# chage -l sherlock Last password change : Feb 01, 2019 Password expires : Mar 03, 2019 Password inactive : May 02, 2019 Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 30 Number of days of warning before password expires : 7
- 強制用戶首次登錄時必須更改密碼,可以在創建用戶時加入 [root@localhost ~]# chage -d 0 username ,效果如下:
[root@localhost ~]# chage -d 0 sherlock [sherlock@localhost ~]$ chage -l sherlock Last password change : password must be changed Password expires : password must be changed Password inactive : password must be changed Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 30 Number of days of warning before password expires : 7
4.usermod 修改用戶賬號數據
用法:
usermod [-c comment] [-d home_dir [ -m]]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group[,...]]
[-l login_name] [-s shell]
[-u uid [ -o]] login
-u 後面接UID,指定某個UID給該用戶 -r 創建一個系統賬號,UID小於500 -d 指定某個目錄成為主文件夾,默認使用home下的login名稱對應的目錄為用戶的主文件夾 -g 初始用戶組,默認的用戶組數字為1 -G 後面接組名,代表將用戶加入某些組,組與組之間用 ”,” 號隔開 -m 如果沒有用戶目錄則自動創建(一般賬號) -M 不創建用戶目錄(系統賬號) -c 設置賬號 /etc/passwd的說明 -e 賬號的失效日期,後面接”YYYY-MM-DD” -f 密碼失效日期,0為立即失效,-1為永不失效,默認為-1 -s 後面接shell,默認為/bin/bash -n 取消將用戶加入設置的默認用戶組(組名與用戶名相同),如果取消,用戶會加入默認的100(users) 用戶組下
- 修改賬號的說明 usermod -c “說明內容” username
[root@localhost ~]# grep sherlock /etc/passwd sherlock:x:505:505:I am sherlock holmes:/home/sherlock:/bin/bash [root@localhost ~]# usermod -c "I am soooo cool" sherlock [root@localhost ~]# grep sherlock /etc/passwd sherlock:x:505:505:I am soooo cool:/home/sherlock:/bin/bash
- 修改賬號的主目錄,需要註意,修改賬號主目錄後,需要把環境配置文件移到新目錄下,否則切換到該用戶時會造成 -bash-4.1$ 模式,具體操作如下
[root@localhost ~]# usermod -d /home/demo sherlock [root@localhost ~]# cp -a /etc/skel/. /home/demo
如果觸發了 -bash-4.1$ 模式,將 /etc/skel/. 的內容拷貝到用戶新的主目錄下 主目錄下的環境變量有:
5.userdel 刪除用戶
此命令會刪除用戶的所有數據,加上 -r 參數代表連用戶的主文件夾一起刪除
[sherlock@localhost ~]$ userdel -r sherlock
用戶組內容見 用戶與用戶組之用戶組篇
用戶與用戶組之用戶篇