在Linux系统上,用户管理是基于用户名和密码的方式进行资源的分配,Linux上的用户分为以下类别:

    管理员:root UID 0

    普通用户:1-65535

        系统用户:1-999 对守护进程获取资源进行权限分配

        登录用户:1000+ 通过交互式方式登录

组group

    管理员组;root GID 0

    普通组:1-65535,普通组又分为:

        系统组:1-999

        一般组:1000+,而一般组分为:

        基本组:也叫私有组,创建用户时,如果没有指定其所属的组,系统自动为期创建一个与用户同名的组,用户必须属于一个且只有一个基本组,组名同用户名,且仅包含一个用户

        附加组:也叫额外组,默认组以外的其他组,一个用户可以属于零个或多个附加组

安全上下文

    运行中的程序:进程(process),以进程发起者的身份运行:

root: /bin/cat

hadoop:/bin/cat

    进程所能够防伪资源的权限取决于进程的运行者的身份

passwd文件格式

    可以通过man 5  passwd来查看对应的配置文件的帮助信息,经过查询可以得知passwd的文件格式,它是由冒号分隔的七个段组成的,分别是:

    account:登录用户名 

    passwd:密码 

    UID:用户的身份编号

    GID:默认所在组编号

    comment:注释信息

    Homedir:用户家目录

    shell:用户默认shell

group文件格式

    经过man帮助可以查询到文件格式,格式如下:

    groupname:组名

    gpasswd:组密码

    GID:组的身份编号

    附加组:

gshadow文件格式

    群组名

    群组密码

    组管理员列表:组管理员列表,更改组密码和成员

    以当前组为附加组的用户列表,多个用户之间用逗号分隔

shadow文件格式

    同样也可以使用man帮助来查询shadow文件的格式,格式如下:

    account:登录名

    encrypte passwd:加密后的密码

    从1970年1月1日起到密码最近一次被更改的时间

    密码不可更改的时间,两次密码修改的时间间隔,0表示可以立即可以改

    密码保持最大有效天数,到了这个时间就必须要改密码

    密码过期的警告时间,密码过期前几天系统会提醒用户更改密码(默认是一周)

    密码过期账号锁定的天数

    从1970年1月1日起,多少天后账号失效

    保留项

密码加密机制

    加密:明文—>密文

    解密:密文—>明文

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

    公钥加密:每个密码都成对出现,一个为公钥,一个为私钥

    单项加密散列加密:提取数据特征码长用户数据完整性校验

    单项加密有如下的特点:

    雪崩效应

    定长输出

    算法通常有:

    MD5 128位定长输出

    SHA1:secure  hash algorithm 160位定长输出

    sha224:224位

    sha256

    sha384

    sha512

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

密码的复杂性策略

    使用数字、大小写字母、以及特殊字符中至少3种

    足够长

    使用随机密码

    定期更换,不要使用最近曾经使用过的密码

       

密码期限

  用户和组管理命令

    用户管理命令

    useradd:添加用户

    useradd [options] username

    -u:指定uid

    useradd -u 1050 user1

    -g GID(基本组) 指定用户基本组  ,可以写组名也可以写GID

    useradd -g  hadoop  user2

    -G:GID(附加组)指定用户附加组

    useradd -G  dockr  user3

    -c:"comment"注释信息

    useradd -c “the user is datebase user” mysql

    -d:HOME_dir 指定用户家目录

    useradd -d  /tmp/user4   user4

    -s:指定用户所使用的shell

    useradd -s  /bin/csh user5

    -N:不创建私有组做主组,用users组做主组

    useradd -N  user6

    -m:新建用户时创建家目录

    -M:创建用户时不创建家目录

    useradd -M user7

    -r:添加一个系统用户

    useradd -r   mail

新建用户的相关文件

    /etc/default/useradd

    /etc/skel/* 创建用户时会在家目录下创建的一些文件包括用户的环境变量文件,.bashrc记录命令别名和本地环境变量

   创建用户时有个默认的设定存放在/etc/default/useradd文件中

   显示或更改默认值

   useradd -D

   useradd -D -s  /bin/csh  username

    /etc/login.defs 用户账号限制的文件包括最大过期天数,密码的最大长度约束等内容。

    

id:查看用户的账号属性信息

    -u:显示用户的UID

    -g:显示用户的GID

    -G:显示用户的GID

    -n:显示用户的用户名一般要配合-u选项

userdel:删除用户

    userdel  [option] username

    -r:删除用户家目录

用户属性修改

    usermod

    usermod [ options]  username

    -u UID:修改用户的uid

    usermod -u 1500 username

    -g UID:修改用户的基本组

    usermod -g  hadoop username

    -G -a:添加新的附加组,要配合-a选项使用,如果不使用-a选项会覆盖此前的附加组

    usermod -aG amind username

    -c:更改注释信息

    usermod -c "my user" username

    -d -m:更改用户家目录且移动用户文件

    usermod -c /tmp/123 username

    -s:更改用户的shell

    usermod -s /bin/bash username

    -l:更改用户名

    usermod -l oldname newname

    -L:锁定账号

    usermod -L username

    -U:解锁账号

    usermod -U username

su切换用户

    su [OPTION]... [-] [USER [ARG]...]

    su username:非登录式切换,不会读取目标用户的配置文件,不改变当前工作目录

    su - username:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

    su -l username =su - username

注意:root切换至非root用户时不需要输入密码的,非管理员用户切换需要输入密码

    

passwd设置密码

    passwd [OPTION...] <accountName>

    passwd 不接用户默认修改当前登录用户的密码

     -l:锁定账号

    -u:解锁账号

    -d:删除账户密码

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

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

    -x maxdays:指定密码最大使用期限

    -i :非活动期限,密码过期账号锁定时间

    --stdin:从标准输入接受用户密码

    echo “redhat”|passwd --stdin username

    

chage修改用户密码策略

    chage [options] LOGIN

    -d:最近一次修改密码的时间

    -E:设置过期时间

    -I:设置非活动时间,密码过期后账户锁定时间

    -m:设置密码最短使用期限

    -M:设置密码最长使用期限

    -W:设置密码过期前的警告天数

chfn修改用户个人信息

    chfn username

chsh更改用的shell

    chsh   username

finger查看用户用户属性

    finger username

组管理

    groupadd

    groupadd [options] groupname

    -g GID: 以指定的GID创建组

    -r:添加系统组其GID小于1000

groupdel删除组

    groupdel [options] groupname

    groupdel test2

gpasswd组密码

    gpasswd [option] group

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

    -d user:将user从组中移除

    -A user1,user2,...设置有管理权限的用户列表

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

    newgrp groupname

   

groupmems更改和查看组成员

     groupmems -a user_name | -d user_name | [-g group_name] | -l | -p

    -g,--group groupname 更改为指定组

    -a,--add username:用户加入组

    -d,--delete username:从组中删除用户

    -p,--purge:从组中清除所有成员

    -l,--list:显示组成员列表

grops查看用户所属组

     groups  groupname

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

2、创建下面的用户、组和组成员关系
名字为admins 的组
用户natasha,使用admins 作为附属组
用户harry,也使用admins 作为附属组
用户sarah,不可交互登录系统,且不是admins 的成员,natasha,harry,sarah密码都是centos