20170722 用户、组管理

内容纲要

  • 用户、组
  • 用户、组的配置文件
  • 用户和组管理命令

一、用户、组

用户

  • 系统在用户登录时为用户分配一个令牌便于权限管理,在linux系统中令牌即为UID
  • UID编码规则:
    • root用户的UID为0,普通用户的UID为1-60000,其中系统用户与登录用户的分配如下:
      • 系统用户:1-499(CentOS 6),1-999(CentOS 7)
      • 登录用户:500+(CentOS 6),1000+(CentOS 7)
  • 系统用户主要为系统运行的程序准备。

  • 系统为了方便管理,设立组的概念,组内用户的权限继承自组权限
  • 组同样设置GID,其编码规则同UID
  • 建立新用户时系统默认同时建立同名组,其UID和GID号相同

安全上下文

  • 进程所能够访问资源的权限取决于进程的运行者的身份

组的类别

  • 用户的主要组:一个用户有且只属于一个主组,默认其名称与用户名相同
  • 用户的辅助组:一个用户可以属于零个或多个辅助组

二、用户、组的配置文件

  • linux用户、组的配置文件主要如下四个

/etc/passwd 用户账号相关属性配置文件
/etc/shadow 用户密码相关属性配置文件
/etc/gpasswd 组账号相关属性配置文件
/etc/gshadow 组密码相关属性配置文件

  • passwd文件格式: name:passwd:UID:GID:GECOS:directory:shell

    • name: 用户登录名
    • passwd: 用户密码,现在密码已经移至/etc/shadow文件,被占位符x代替
    • UID: 用户ID号
    • GID: 用户所属的主组ID号
    • GECO: 用户信息注释
    • directory: 用户家目录路径
    • shell: 用户默认shell
  • shadow文件格式:login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field

    • login name:用户登录名
    • encrypted password: 加密的密码
      • 加密密码如图
  • $6代表加密方式为SHA512,加密方式很多,例如$1代表MD5加密
  • $AArU9fX$中两个$符号间是一段随机字符,称作盐(salt),用于确保即使是相同密码加密的结果也不同,进一步加强密码安全性
  • 后面的字符是加密密文正文,不同加密方式长度不同,但是只要加密方式相同,密码位数不同加密后的密文位数是相同的
  • 更改密码加密方式:authconfig --passalgo=sha256 --update
  • date of last password change: 上次修改密码时间,从1970-1-1起算的天数

  • minimum password age: 最短密码时间,普通用户更换密码的最短间隔天数,0表示随时可以变更

  • maximum password age: 最长密码时间,用户使用一个密码最长时间,99999表示永不过期

  • password warning period: 密码达到最长时间前提前报警提示的天数,默认7天

  • password inactivity period: 密码达到最长时间后允许修改密码的宽限期,超出后用户被锁定

  • account expiration date: 用户账户有效期,从1970-1-1起算的天数

  • group文件格式:group name:passwd:GID:user list

    • group name: 组名称
    • passwd: 组密码,用占位符x代替,加密密码移至/etc/gpasswd文件
    • GID: 组ID号
    • user list: 以当前组为辅助组的用户,多用户用,分隔
  • gshadow文件格式:group name:encrypted password:administrators:members

    • group name: 组名称
    • encrypted password: 加密的密码,与/etc/shadow文件中的密码加密方式相同
    • administrators: 组管理员,可以修改组密码,多名管理员用,分隔
    • members: 以当前组为辅助组的用户,内容必须与/etc/group文件中的user list相同
  • 注意:修改账号相关设置(e.g. /etc/passwd /etc/shadow /etc/group /etc/gpasswd)时,必须重新登录才能够生效

三、用户和组管理命令

(一)用户管理命令

(1)useradd 用户创建
  • 语法:useradd [options] LOGIN
  • 用法:
-u UID                     
-o                         
-g GID                     
-c "COMMENT"               
-d HOME_DIR                
-s SHELL                   
-G GROUP1[,GROUP2,...]     
-N                         
-r                         
  • 实验:创建一个用户billy,指明UID=1010,属于附加组hellopeiyang和natasha,家目录为/app/billy,使用的shell为csh。
    • 命令:useradd -u 1010 -G hellopeiyang,natasha -d /app/billy -s /bin/csh billy

    • getent命令检查hellopeiyang,natasha,billy三个组的/etc/group文件,确认用户列表存放的是以此组作为辅助组的用户

20170722 用户、组管理_第1张图片
  • 用户创建默认配置文件 /etc/default/useradd
  • 使用useradd -D命令修改用户创建默认配置文件
useradd -D -b /app   
useradd -D -g group  
useradd -D -s shell  
  • 用户家目录默认配置文件 /etc/skel
    使用useradd建立用户家目录时,将/etc/skel下的所有文件复制到家目录中,相当于执行命令cp -a /etc/skel/.[^.]* /home/user
  • newusers passwd格式文件 批量创建用户
  • cat 格式文件 | chpasswd 批量修改用户密码,格式文件格式user name:password
(2)usermod 用户属性修改
  • 语法:usermod [OPTION] login
  • 用法:
-u UID           
-g GID           
-G GROUP1[,GROUP2,...[,GROUPN]]    

-s SHELL         
-c 'COMMENT'     
-d HOME          
-l login_name    
-L               
-U               
-e YYYY-MM-DD    
-f INACTIVE      
  • 实验:将billy用户的主组改为harry,附加组增加sarah,家目录迁移到/home/billy下,账号于2018年8月31日过期,最后将billy账户锁定
  • 命令:
getent group harry
usermod -g 1004 -aG sarah -md /home/billy -e 2018-08-31 billy 
usermod -L billy
20170722 用户、组管理_第2张图片
(3)userdel 删除用户
userdel login      
userdel -r login   
(4)id 查看用户相关ID信息

语法:id [OPTION]... [USER]
用法:

-u     
-g     
-G    
-n     
20170722 用户、组管理_第3张图片
(5)切换用户 su
su user    
su - user  
su/ su -   
exit       
su - root -c 'command'   
  • root用户切换至普通用户不需要密码,普通用户切换至root用户需要root密码
(6)设置密码 passwd
  • 语法:passwd [OPTIONS] UserName
  • 用法:
-l     
-u     
-e     
-n mindays     
-x maxdays     
-w warndays     
-i inactivedays     
--stdin     
  • 实验:将harry的密码改为"hello",同时密码最短使用期限3天,最长使用期限42天,密码到期前7天提示修改,过期后5天将账户锁定
    • 命令:
echo "hello" | passwd -n 3 -x 42 -w 7 -i 5 --stdin harry
(7) 修改用户密码策略 chage

语法:chage [OPTION]... LOGIN
用法:

-d     
-E --expiredate     
-I --inactive     
-m --mindays     
-M --maxdays     
-W --warndays     
–l     
(8)其他用户管理命令
  • chsh -s shell 修改shell
  • chfn 修改用户注释信息
  • finger 查看用户详细信息

(二)组管理命令

(1)创建组 groupadd
  • 语法:groupadd [OPTION]... group_name
  • 用法:
-g GID     
-o         
-r         
(2)修改组属性 groupmod
  • 语法:groupmod [OPTION]... group
  • 用法:
-n group_name     
-g GID            
-o                
(3)删除组 groupdel
  • 语法 groupdel group_name
(4)更改组密码 gpasswd
  • 语法:gpasswd [OPTION] GROUP
  • 用法:
-a user     
-d user     
-A user1,user2,...     
  • 实验:创建组david,将用户hellopeiyang,natasha,sarah加入到组中,将natasha从组中移除
    • 命令:
groupadd david
gpasswd -a hellopeiyang,natasha,sarah david
gpasswd -d natasha
  • 结果如下图

    • 第1步,建立组david;


    • 第2步,为组david添加用户hellopeiyang,natasha,sarah;


      20170722 用户、组管理_第4张图片
    • 第3步,将natasha从组david中删除。


      20170722 用户、组管理_第5张图片
  • newgrp命令:临时切换主组,如果用户本不属于此组,则需要组密码
    语法:newgrp group_name

(5)更改和查看组成员 groupmems
  • 语法:groupmems [options] [actions]
  • 用法:
options:
-g, --group group_name     
actions:
-a, --add username     
-d, --delete username     
-p, --purge     
-l, --list     
  • groups 显示用户所属于的组 groups user_name

你可能感兴趣的:(20170722 用户、组管理)