1. 程式人生 > >用戶與用戶組之用戶篇

用戶與用戶組之用戶篇

過期 刪除用戶 用戶賬號 eat ... -c gid 系統文件 color

用戶與用戶組

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

用戶組內容見 用戶與用戶組之用戶組篇

用戶與用戶組之用戶篇