基于账号的访问控制
- 基于账户身份对资源访问进行控制
- 账户类别:用户账户、组账户
- 识别方式: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