天天看点

Linux命令账号(用户、用户组)控制(五)

基于账号的访问控制

  • 基于账户身份对资源访问进行控制
    • 账户类别:用户账户、组账户
    • 识别方式:UID、GID
  • 用户账号
    • 超级用户root、系统用户、普通用户
  • 组账号(组账号用来区分权限,不用于登录)
    • 基本组(私有组)
    • 附加组(公共组)

账号的存放类别

  • 账号数据的存放
    • 存储在本机磁盘中(本地账户)
    • 存储在网络上的专门的服务器(网络账户)
  • 本地账户的数据文件
    • /etc/paawd、/etc/shadow
    • /etc/group、/etc/gshadow
  • 解析用户账号文件
  • /etc/passwd,保存用户账号的基本信息
    • 每个用户记录一行,以:分割为7个字段

      – 1、用户账号的名称

      – 2、密码字串或占位符

      – 3、用户账号的UID号

      – 4、所属基本组的GID号

      – 5、用户全名

      – 6、宿主目录

      – 7、登录shell程序的路径

示例代码:
#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设为--过期
#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 [选项]… 用户名

组账号基本操作

解析组账号文件

  • /etc/group:保存组账号的基本信息
    • 每个组记录一行,以:分割为4个字段

      – 1、组账号的名称

      – 2、密码占位符

      – 3、组账号的GID号

      – 4、本组的成员用户列表

  • /etc/gshadow:保存组账号的管理信息
    • 每个组记录一行,以:分割为4个字段

      – 1、组账号的名称

      – 2、加密后的密码字符串

      – 3、本组的管理员列表

      – 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
           

继续阅读