Linux的用户管理
1、系统中为什么要有用户
用户--->底层的安全设定(限制权力)
组--->同一个组中用户共享权力
附加组--->可改变
初始组--->不可改变
2、用户和组在系统中以什么形式存在
一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。
一对多:即一个用户可以存在多个用户组中。那么此用户具有多个组的共同权限。
多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。
多对多:多个用户可以存在多个组中
3、用户配置文件
1、/etc/passwd 用户信息文件
用户名:密码:用户id:组id:用户说明:用户家目录:用户默认使用shell

2、/etc/group 用户组信息文
组名称:组密码:组id:附加组成员

3、/home/用户名 用户家目录

4、/etc/skel/* 用户骨文件(用户环境配置模板,在用户创建时会自动复制到家目录)
4、用户的查看
1、whoami 查看当前用户的名称

2、命令:
id 用户名 查看用户id信息
参数:
-u 用户名 查看用户uid(对用户的唯一标识)
-g 用户名 查看用户gid(初始组)
-G 用户名 查看用户所在的所有组的id
-n 用户名 以名称显示信息(不能单独使用)
5、用户的建立及删除
1、命令:
groupadd 组名称 创建初始组
参数:
-g 组id 组名称 指定组id
2、命令:
useradd 用户名 使用默认规则建立用户(默认规则/etc/login.defs)
参数:
-u uid 用户名 指定用户uid
-g 组id 用户名 指定用户的初始组id
-G 附加组 用户名 指定用户的附加组
-c 说明 用户名 指定用户的说明文字
-d 家目录 用户名 指定用户的家目录
-s shell 用户名 指定用户的shell(/etc/shells查看shell)
3、命令:
userdel 用户名 删除用户身份(还需要清理缓存及家目录)
参数:
-r 用户名 删除用户身份及用户的系统配置文件
4、/etc/login.defs 在此文件中可以设定建立用户的默认信息
6、用户的管理
命令:
usermod 对用户的修改
参数:
-l 更改后的用户名 原用户名 更改用户名称
-u uid 用户名 更改用户uid
-g 组id 用户名 更改用户的初始组id
-G 附加组 用户名 更改用户附加组
-aG 附加组 用户名 添加用户附加组
-c 说明 用户名 更改用户的说明文字
-d 家目录 用户名 更改用户的家目录指向
-md 目录 用户名 更改用户的家目录指向并重命名家目录

-s shell名 用户名 更改用户的shell(/etc/shells查看shell)

7、用户切换
命令:
su - 用户名 切换用户
[切换用户,高级用户到低级用户不需要密码;低级用户到高级用户或平级用户需要后者密码]
[注意:
1、用户切换后及时退出在切换到下一个用户;(使用exit或者logout)
2、su - 表示切换用户身份及用户身份;(如果没有"-"使用的还是未切换身份时的环境)
]
8、用户的认证信息
/etc/shadow 记录用户的认证信息
用户名称:用户密码:密码最后一次被修改时间:密码最短有效期:密码最长有效期:密码过期警告:密码非活跃期:帐号到期时间:未设定
1、用户名称:上文提到了如何修改用户名
2、用户密码:使用md5 sha512加密
passwd 用户名 修改密码(只有超级用户可执行)
passwd 修改密码(修改当前账号密码)
usermod -L 用户名 冻结帐号
usermod -U 用户名 解锁帐号
passwd -l 用户名 冻结帐号(强于上方方法)
passwd -u 用户名 解锁帐号
passwd -d 用户名 清空密码
3、密码最后一次被修改时间:1971.1.1至今;当数字为0时用户登陆必须修改密码
将此时间修改为0:
chage -d 0 用户名
passwd -e 用户名
4、密码最短有效期:
将此时间更改为1:
chage -m 1 用户名
passwd -n 1 用户名
5、密码最长有效期:
将此时间更改为30:
chage -M 30 用户名
passwd -x 30 用户名
6、密码过期警告(账号快过期时提前警告时间):
将此时间更改为2:
chage -W 2 用户名
passwd -w 2 用户名
7、密码非活跃期(帐号过期后延长使用的时间):
将此时间更改为2:
chage -I 2 用户名
passwd -i 2 用户名
8、帐号到期时间:
将此事件更改为2018-11-11:
chage -E "2018-11-11" 用户名
9、未设定:用户自定义
9、用户权力下放
1、配置文件
/etc/sudoers

2、配置命令
visudo 命令提供检错

3、配置文件中书写语法
用户名 主机名=(执行程序身份) 命令 执行命令时需要身份验证
linux localhost=(root) /usr/sbin/useradd
用户名 主机名=(执行程序身份) NOPASSWD: 命令1,命令2 执行命令时不要身份验证
linux localhost=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel
4、测试
1、su - linux 切换用户至linux
2、sudo useradd hello 测试是否能新建一个用户