基於賬號的訪問控制
- 基於賬戶身份對資源訪問進行控制
- 賬戶類別:用戶賬戶、組賬戶
- 識別方式:UID、GID
- 用戶賬號
- 超級用戶root、系統用戶、普通用戶
- 組賬號(組賬號用來區分權限,不用於登錄)
- 基本組(私有組)
- 附加組(公共組)
賬號的存放類別
- 賬號數據的存放
- 存儲在本機磁盤中(本地賬戶)
- 存儲在網絡上的專門的服務器(網絡賬戶)
- 本地賬戶的數據文件
- /etc/paawd、/etc/shadow
- /etc/group、/etc/gshadow
- 解析用戶賬號文件
- /etc/passwd,保存用戶賬號的基本信息
- 每個用戶記錄一行,以:分割爲7個字段
– 1、用戶賬號的名稱
– 2、密碼字串或佔位符
– 3、用戶賬號的UID號
– 4、所屬基本組的GID號
– 5、用戶全名
– 6、宿主目錄
– 7、登錄shell程序的路徑
- 每個用戶記錄一行,以:分割爲7個字段
示例代碼:
#head -n 1 /etc/passwd(取出該文件中第一行的數據)
- /etc/shadow,保存密碼字串/有效期等信息
- 每個用戶記錄一行,以:分割爲9個字段
– 1、用戶賬號的名稱
– 2、加密後的密碼字符串
– 3、上次修改密碼的時間
– 4、密碼的最短有效天數,默認0
– 5、密碼的最長有效天數,默認99999
– 6、密碼過期前的警告天數,默認7
– 7、密碼過期後多少天警用此用戶賬號
– 8、賬號失效時間,默認值爲空
– 9、保留字段,未使用
示例代碼:
#head -n 1 /etc/shadow
添加用戶賬號
useradd 添加用戶
- useradd 命令
- 格式:useradd [選項]… 用戶名
- 常用命令選項
- -u:指定UID標記號
- -d:指定宿主目錄,缺省爲 /home/用戶名
- -e:指定賬號失效時間
- -g、-G:指定所屬的基本組、附加組
- -M:不爲用戶建立並初始化宿主目錄
- -s:指定用戶的登錄shell
示例:
添加一個名爲restart1025的用戶賬號
#useradd restart1025
#grep restart1025 /etc/passwd /etc/shadow
添加用戶stu01,宿主目錄設爲/opt/stu01
#useradd -d /opt/stu01 stu01
#ls -ld /opt/stu01/
添加用戶stu02,指定基本組爲users
#useradd -g users stu02
#grep stu02 /etc/passwd
添加用戶sys01,不建宿主目錄,不用於登錄
#useradd -M -s /sbin/nologin sys01
#grep sys01 /etc/passwd
#ls -ld /home/sys01
passwd 設置口令
- passwd命令
- 格式:passwd [選項]… 用戶名
- 常用命令選項
– -d:清空用戶的密碼,使之無需密碼即可登錄
– -l:鎖定用戶賬號
– -S:查看用戶賬號的狀態(是否被鎖定)
– -u:解鎖用戶賬號
– –stdin:從標準輸入(比如管道)取密碼
#passwd stu01(然後輸入兩次密碼)
#echo 123456 | passwd --stdin stu02(直接修改密碼)
通過 --stdin設置密碼,免除交互過程
用戶初始配置
useradd行爲設置
- 默認配置文件:/etc/default/useradd
- 對新創建的賬號起作用
- login.defs登錄定義文件:默認配置文件:/etc/login.defs
- 對新創建的賬號起作用
#grep -vE '^#|^$' /etc/login.defs(獲取該文件中不是以$和#開頭的行)
grep -E擴展自定義正則表達式
用戶初始配置文件
- 配置文件來源
- 新建用戶時,根據/etc/skel模板目錄複製
- 主要的初始配置文件
- ~/.bash_profile:每次登錄時執行
- ~/.bashrc:每次進入新的Bash環境時執行
- ~/.bash_logout:每次退出登錄時執行
- 全局配置文件:/etc/bashrc、/etc/profile
- 用戶初始文件會調用全局初始文件
#cat ~/.bashrc
~ 代表 /root 目錄
用戶的刪改查
usermod 修改用戶
- usermod命令
- 格式:usermod [選項]… 用戶名
- 常用命令選項
– -l:更改用戶賬號的登錄名稱
– -L:鎖定用戶賬戶
– -U:解鎖用戶賬戶
– -u、-d、-e、-g、-G、-s:與useradd相同
示例代碼:
將用戶stu01設爲2018-07-12過期
#usermod -e 2018-07-12 stu01
#grep -E "root|stu01" /etc/shadow
將用戶sys01的登錄shell改爲/bin/bash
#usermod -s /bin/bash sys01
#grep sys01 /etc/passwd
chage 密碼有效控制
- 管理工具chage命令
- 格式:chage [選項] 用戶名
- 常用命令選項
– -l:列出密碼有效期信息
– -E:指定賬號過期時間,YYYY-MM-DD
– -m:指定密碼的最小天數
– -M:指定密碼的最大天數
userdel 刪除用戶
- userdel 命令
- 格式:userdel [-r] 用戶名
- 添加 -r 選項,宿主目錄/用戶郵件也一併刪除
#ls -ld /home/stu02
#userdel -r stu02
#ls -ld /home/stu02
使用id查詢賬號
- id命令:Identity
- 格式:id [選項]… 用戶名
#id root
組賬號基本操作
解析組賬號文件
- /etc/group:保存組賬號的基本信息
- 每個組記錄一行,以:分割爲4個字段
– 1、組賬號的名稱
– 2、密碼佔位符
– 3、組賬號的GID號
– 4、本組的成員用戶列表
- 每個組記錄一行,以:分割爲4個字段
#head -1 /etc/group(獲取組賬號文件中的第一行數據)
/etc/gshadow:保存組賬號的管理信息
- 每個組記錄一行,以:分割爲4個字段
– 1、組賬號的名稱
– 2、加密後的密碼字符串
– 3、本組的管理員列表
– 4、本組的成員用戶列表
- 每個組記錄一行,以:分割爲4個字段
groupadd 添加組賬號
- groupadd命令
- 格式:groupadd [-g GID] 組名
#groupadd -g 600 stugrp
#grep stugrp /etc/group /etc/gshadow
- gpasswd 管理組成員
- gpasswd命令
- 格式:gpasswd [選項]… 組名
- 常用命令選項
– -A:定義組管理員列表
– -a:添加組成員,每次只能加一個
– -d:刪除組成員,每次只能刪一個
– -M:定義組成員用戶列表,可設置多個
示例代碼:
#gpasswd -A stu01 stugrp
#grep stugrp /etc/gshadow
#gpasswd -M restart1025,stu01,sys01 stugrp
#grep stugrp /etc/gshadow
#gpasswd -d sys01 stugrp
#grep stugrp /etc/gshadow
- groupdel 刪除組
- groupdel命令
- 格式:groupdel 組名
- 刪除的目標組不能是用戶的基本組
#grep stugrp /etc/group
#groupdel stugrp
#grep stugrp /etc/group