linux系统当中的用户:

    用户是linux系统上身份的标识,不同身份的用户权限也有所不同,有些用户是来完成特定任务,如系统用户,他们通常都不能登录到系统,在后台默默运行


UID:用户标识符,1-65535

linux系统用户分类:

    管理员:默认root用户为管理员,UID为0

    普通用户:1-65535

        系统用户:1-499(CentOS 6), 1-999(CentOS 7)

        一般用于守护某个特定的进程

        登录用户:500+(CentOS 6),1000+(CentOS 7)

        交互式登录系统


GID:组标识符

linux组:用户的集合,将多个用户分配在一个组里,统一管理,权限分配等。

    管理员组:root,GID为0

    普通组:1-65535

        系统组:1-499(CentOS 6),1-999(CentOS 7)

        普通组:500+(CentOS 6),1-999(CentOS 7)

    组类别:

        用户的主要组:在创建用户是会默认创建一个与用户名同名的组,组内只包含此用户一个,私有组

       用户的附加组:用户可属于多个辅助组


linux安全上下文:

    运行当中的程序叫做进程,当用户发起一个进程,进程的属主是发起此进程的用户,而不是程序本身的属主。进程能够访问某资源的权限取决于发起此进程的用户的权限

    已发起者的身份运行:如/bin/cat程序的属主属组为root,zhai用户发起这个进程,那么此进程就以zhai用户的身份运行,并以zhai的身份去访问某资源



linux用户和组的配置文件:

    /etc/passwd:存放系统上每个用户的属性信息

        Login Name:登录用户名

        passwd:密码,默认为x

        UID:用户唯一标识符

        GID:用户所属的组的GID

        Common:注释信息

        Home Directory:用户所在的家目录,默认在/home目录下

        Shell:用户的shell程序,默认为/bin/bash

    /etc/shadow:存放每个用户的密码信息以及关于密码的一些策略

        Login Name:用户登录名

         Enctypted Passwd:用户的密码

        date of last password change:最近一次密码更改时间 

        Minimum password age:密码最少使用期限

        Maximum password age:密码最长使用期限

        Passwrod warning period:密码警告期限,密码过期前n天提醒用户修改密码

        Password inactivity period:密码活动周期,密码过期后几天将账户锁定

        Account expiration date:密码过期时间,明确指定密码周期

    密码加密:

        对称加密:加密和解密使用同一个密码

        非对称加密:加密和解密使用一对密钥

            公钥:Public key

            私钥:private key

        单向加密:只能加密,不能解密:提取数据特征码

            定长输出;雪崩效应

         常见的算法有:

            md5,sha,sha224,sha256,sha384,sha512

        更改加密算法:authconfig --passalgo=sha256 --update

    密码复杂性策略:

        1.最好不好低于8位

        2.使用随机数作为密码

        3.要定期更换

         4.使用数字、大小写字母、及特殊字符至少三种以上

    

    /etc/group:存放组基本的属性信息

        Group Name:组名称

        group passwd:组密码,一般记录在/etc/gshadow文件中

        GID:组的GID

        user list:组中包含的用户列表

    /etc/gshadow:存放组的密码相关信息

        Group Name:组名称

        Group Passwd:加密过的群组密码

        Aadministrators:组管理员列表

        user list:组中包含的用户列表


关于配置文件的相关命令:

    vipw:编辑用户相关配置文件,类似于vi编辑器

    用户与组管理_用户

    vigr:编辑组相关配置文件

    用户与组管理_用户_02

    pwck:检查用户相关配置文件完整性用户与组管理_用户_03

    grpck:检查组相关配置文件的完整性:

    用户与组管理_组管理_04



用户管理相关命令:

    useradd:用于创建用户

    useradd [OPTIONS...] USERNAME

        -u UID:指定用户的:UID

        -g GID:指定用户的基本组(基本组必须存在)

        -G GROUP1,GROUP2:指定用户的附加组(附加组必须存在)

        -d /PATH/TO/HOME:指定用户的家目录

        -s /SHELLS:指定用户的shell

        -c 'COMMON':用户注释信息

        -r:创建系统用户

        -N:不创建用户的基本组,默认使用users组做基本组

        -o:不检查UID的唯一性

        -D:显示或更改默认设置

用户与组管理_用户_05

    getent passwd USERNAME:可单独列出某一用户的属性信息

用户与组管理_用户_06

练习:

    

1、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"

用户与组管理_组管理_07

2、创建下面的用户、组和组成员关系

名字为admins 的组

用户natasha,使用admins 作为附属组

用户harry,也使用admins 作为附属组

用户sarah,不可交互登录系统,且不是admins 的成员,natasha,harry,sarah密码都是centos

用户与组管理_组管理_08



新建用户的默认配置文件:

    /etc/default/useradd:创建用户是的默认属性信息

    /etc/skel/*:用户默认家目录下的文件

    /etc/login.defs:影子文件默认配置信息


批量创建用户:newusers passwd格式的文件

    用户与组管理_用户_09批量修改用户密码:cat passwd.txt | chpasswd

用户与组管理_用户_10


usermod:用户属性修改

    usermod [OPTIONS...] USERNAMEY

        -u UID:新的UID

        -g GID:新的GID

        -a -G GROUP1,GROUP2:新的附加组

        -s SHELL:新的shell

        -d /HOME:指定新的家目录

        -l NEWNAME:修改用户的用户名称

        -c "COMMON":修改用户注释信息

        -L:锁定用户,在/etc/shadow密码处增加!

        -U:解锁用户,和-L相反

        -e YYYY-MM-DD:指明账户过期时间

        -f INATIVITY:设定非活动期限

用户与组管理_用户_11


userdel:删除用户

    userdel [OPTIONS] USERNAME

        -r:同时删除用户家目录

用户与组管理_组管理_12

id:查看用户id相关信息

    id [OPTIONS...] USERNAME

        -u:查看UID

        -g:查看GID

        -G:查看附属组

        -n:显示名称

用户与组管理_用户_13


su:切换用户或以其他用户身份执行命

    su [OPTIONS...] [-] USER

    su USERNAME:半切换,不会读取目标用户的配置文件,不改变当前工作路径

用户与组管理_组管理_14

    su - USERNAME:切换式登录,会读取目标用户的配置文件,将工作路径切换至目标用户的加密目录,完全切换

用户与组管理_用户_15

    su -l USERNAME 相当于 su - USERNAME

    注意:管理员切换至普通用户不需要密码,而普通用户切换至管理员需要密码

用户与组管理_组管理_16

    su [-] USERNAME -c "COMMAND":以USERNAME用户的身份运行COMMAND

用户与组管理_组管理_17


passwd:修改用户密码属性

    passwd [OPTIONS...] USERNAME

        -l:锁定用户,在/etc/shadow密码处添加!

        -u:解锁用户,与-l相反

        -S:查看用户密码状态

用户与组管理_组管理_18

        -d:清楚指定用户的密码

用户与组管理_组管理_19

        -n mindays: 指定最短使用期限

        -x maxdays:最大使用期限

        -w warndays:提前多少天开始警告

        -e:强制用户下次登录修改密码

        -i INACTIVEDAYS:非活动期限

        --stdin:从标准输入设置密码

          echo "centos" | passwd --stdin USERNAME

用户与组管理_组管理_20


chage:修改用户密码策略

    chage [OPTIONS..] USERNAME

        -d LAST_DAY

        -E, --expiredateEXPIRE_DATE

        -I, --inactive INACTIVE

        -m, --mindaysMIN_DAYS

        -M, --maxdaysMAX_DAYS

        -W, --warndaysWARN_DAYS

        –l:显示密码策略

用户与组管理_用户_21


chfn:指定用户个人信息

finger:查看用户个人信息

用户与组管理_用户_22


chsh:修改用户的shell

用户与组管理_用户_23


组管理命令:

groupadd:创建组

    groupadd [OPTIONS...] GROUPNAME

        -r:创建系统组

        -g GID:指定组的GID

    getent group GROUPNAME:可查看指定组的相关信息

    groups USER:查看用户USER属于哪些组

    用户与组管理_组管理_24


groupmod:修改组属性

    groupadd [OPTIONS...] GROUPNAME

        -g GID:修改组的GID

        -n NEWGROUP:修改组名

    用户与组管理_用户_25


groupdel:删除组

    groupadel GROUPNAME

    用户与组管理_用户_26


gpasswd:修改组密码

    gpasswd [OPTIONS...] GROUPNAME

        -a USER:将user添加至指定组中

        -d USER:将user从指定组中删除

用户与组管理_组管理_27

        -A USER1,USER2:设置有管理权限的用户列表

    newgrp:临时切换基本组,如果用户本身不属于这个组,则需要密码

用户与组管理_用户_28


groupmems:更改查看组成员

    grupmems [OPTIONS...] GROUPNAME

        -l:显示指定组成员

        -g GROUPNAME:指定组

        -a USER:将USER用户添加至指定组

        -d USER:将USER用户从指定组中删除

        -p:清除组中所有成员

用户与组管理_用户_29