为什么要进行用户管理
因为linux系统是一个多用户多任务的操作系统,管理好用户才能保证系统有条不紊的工作
linux系统中用户存在的意义
用户是linux系统最底层的安全设备,属于权限问题,系统要回收权力
系统用户即系统的使用者,用户管理是对文件进行管理,用户的存在是为了回收权力
linux系统中组存在的意义
用户组是用户的延伸,可以得到身份,共享用户的权力
相当于我是我自己,但我还属于我的家,我和家人就组成了初始用户组
在学校,我属于自己班级的一员,我和班里的同学组成了附加用户组
组的存在是为了共享权力,组和用户是两个不同的机制
组的分类:
初始组 | 用户刚建立时就加入的组 |
---|---|
附加组 | 用户后期加入的组 |
查看linux系统的用户信息
(1) whoami 查看当前用户
(2) 查看系统中用户的信息
id | 查看正在使用的用户的所有id信息 |
---|---|
id -u | 查看用户的uid |
id -g | 查看用户的gid |
id -G | 查看用户所在的所有组的id |
id -n | 显示名称不显示id数字 |
(3)切换用户
gnome–session–quit–force ##注销当前用户,用其他用户登陆
su - 用户名称(前提是该用户在系统当中已经存在,若不存在需要现在超级用户模式下新建立用户)
备注:
su - 中 “-” 标示在用户身份切换时同时切换当前用户的环境
su - 执行时高级用户切换到低级用户不需要密码,低级用户切换到高级需要,平级用户切换切换也需要
每次su切换到其他用户操作之后必须退出,然后再次切换到其他用户,否则会造成用户紊乱
linux系统中用户的存储方式
其实用户也是文件,对用户的管理就是对文件的管理
用户其实就是以文件的方式存储的,和文件一样
默认shell的指定有哪些可以查看系统中/etc/shells文件
(1)用户信息文件 /etc/passwd
说明:用户信息文件里面存储了用户的一些基本信息
包括的内容:用户名称:用户密码:uid:gid:说明:家目录:默认shell
(2)用户组信息文件: /etc/group
说明:用户组信息文件里面存储了用户所属组(用户组)的一些基本信息
包括的内容:组的名字:组的密码:组的id:组的成员
(3)认证信息文件: /etc/shadows
说明:认证信息文件里面包括了一些认证信息,比如每个用户登陆时的密码
包括的内容:用户名称:密码
(4) 默认开启shell的配置,用户的骨文件:/etc/skel/.*
说明:骨文件里面存储了默认用户和系统对话工具的相关信息
(5) 用户的家目录: /home/username
注意:家目录指的是该用户建立的所属目录
用户其实就是文件的内容以及文件内容所指定的那些文件
uid相当于用户的身份证号 ,真正区别用户的不是名字,而是uid
用户说明和用户名字不一样
组用户为附加用户 ,并不是原有用户
初始组和附加组不一样
用户管理命令
(1)用户的建立:useradd
useradd 用户名 ###建立用户的同时会建立它的配置文件(包括用户的组信息和用户的家目录信息)
(2)用户的删除:userdel
userdel 用户名 ###删除用户但不删除用户的配置文件
userdel -r 用户名 ###删除用户的同时还会删除用户的配置文件
(3)useradd -u uid 用户名 ###指定用户的id
(4)useradd -g gid 用户名 ###指定用户的初始组id(用户组gid必须是存在的)
(5)useradd -G id 用户名 ###指定用户附加组的id(用户组id必须是存在的)
(6)useradd -c “hello” 用户名 ###指定用户的说明
(7)useradd -d /home/lee 用户名 ###指定用户的家目录
(8)useradd -s /bin/sh 用户名 ###指定用户的默认shell
用户组管理命令
(1)用户组的建立:groupadd
groupadd 用户组名
(2)用户组的删除:groupdel
groupdel 用户组名
(3)groupadd -g uid 用户组名字 ###建立用户组并指定用户组的id
修改用户信息
(1)usermod -l 新名称 用户名 ###更改用户的名称
(2)usermod -u uid 用户名 ###更改用户的uid
(3)usermod -g gid 用户名 ###更改用户的初始组
(4)usermod -G id 用户名 ###更改用户的附加组
使用-G时,如果已有附加组,则会代替;如果不想代替,想让两个都存在的话,使用-aG
(5)usermod -aG id 用户名 ###添加用户的附加组
(6)usermod -G “” 用户名 ##删除用户所有附加组的身份
(7)usermod -c “XXX” 用户名 指定用户说明文字
(8)usermod -d /home/lee 用户名 ###只改变家目录的指向
(其实就是相当于改变家庭地址)家目录指向,只是存放东西的一个路径,实际不改变文件的内容
(9)usermod -md /home/lee 用户名 ###同时改变家目录的指向和家目录的名字
(10)usermod -s /bin/sh 用户名 更改用户的shell
用户信息认证
/etc/shadow这个文件是记录用户的认证信息
例如:westos:!!:17895:0:99999:7: : : ###一共有9项内容(此文件一共有9列)
[1] [2] [3] [4] [5] [6][7] [8] [9]
第一列 | 用户名称 |
---|---|
第二列 | 用户密码的加密字符串,默认用的加密方式为sha512对称加密,如果加密字符串前出现“!”,则该用户的帐号被冻结 |
第三列 | 用户密码最后一次被修改的时间,此时间的计算是从1970-1-1日起累计的总时间天数 |
第四列 | 用户密码最短有效期限(用户在这个数字天数之内不能修改密码)如果此位有设定数字,那么在此数字范围内的天数内是不能更改用户的密码的 |
第五列 | 用户密码最长有效期限,用户必须在此有效期内更新密码,如果超时会被冻结 |
第六列 | 密码警告期限,在过期前指定天数内会发送警告信息给用户 |
第七列 | 用户的非活跃天数(加的期限),此位默认为空,如果设定数值,那么在密码最长有效期过后仍然可以使用的天数 |
第八列 | 用户到期日,默认为空,表示帐号一定会被冻结的时间点,此时间计算是从1970-1-1开始计算的累计天数 |
第九列 | 用户自定义列,目前没有启用 |
(1)passwd -S 用户名 ###查看用户密码信息
(2)用户密码的相关操作:
passwd 用户名 更改用户的密码
passwd -l 用户名 在用户密码前加入“!!”
passwd -u 用户名 解开已经上锁的用户
usermod -L 用户名 在用户密码前加入“!”
usermod -U 用户名 在密码不为空的时候使用
passwd -d 用户名 清空用户的密码
(1)passwd 用户名 ###更改用户的秘密
(2)passwd -l 用户名 ###在用户密码前加入“!!”
(3)passwd -u 用户名 ###解开已经上锁的用户
(4)usermod -L 用户名 ###在用户密码前加入“!” 冻结用户
(5)usermod -U 用户名 ###在密码不为空的时候使用 解锁用户
(6)passwd -d 用户名 ###清空用户的密码
备注:
密码在/etc/shadow这个文件当中 只有超级用户可以操作
!!表示被封锁 改账户不能登陆
passwd比usermod强度更强
密码管理
(1)用户密码最后一次被更改的时间:
passwd -e 用户名 ##会改变用户最后一次更改密码时间为0,用户在登陆时会被强制更改密码
chage -d 0 用户名 ##两个命令功能类似
(2)用户密码最短有效期:
passwd -n 1 用户名 ###用户在一天之内不能修改密码
chage -m 1 用户名 ###两个命令的效果一样
(3)用户密码最长有效期:
passwd -x 30 用户名 ###设定用户在30天之内必须修改密码
chage -M 40 用户名
(4)密码警告期限:
passwd -w 2 用户名 ###密码过期前两天有警告输出
chage -W 2 用户名
(5)用户非活跃天数:
passwd -i 1 用户名 ###密码过期后仍可登陆系统的天数
chage -I 1 用户名
(6)用户到期日:
chage -E 2019-11-1 用户名 ###用户在这一天会被冻结
注意:此时间是从1970-1-1开始计算的累计天数|
用户授权
(1)什么叫用户授权?
一般情况下普通用户是不能新建用户或者新建用户组,只有超级用户有这个权力
现在想让普通用户使用超级用户的权力来建立用户或者用户组
此时需要把超级用户的权力给普通用户,这就叫用户授权
超级用户把自己的权力分享给普通用户,也可以叫权力共享
备注:
权力下放文件为/etc/sudoers
此文件可以直接用vim编辑,但是不提供语法检测
也可以使用visudo编辑此文件,visudo是提供语法检测的
使普通用户拥有超级用户的权力
(1)先建立一个普通用户 useradd 用户名
(2)再看是否能建立新用户 su - 用户名 (查看是否为普通用户)useradd
(3)打开一个文件 visudo (/etc/sudoers)
(4)写要操作的东西(一般为了规范 在100行作用写)
(5)测试一定要用sudo
备注:
多个用户权力的下放的设定
例如:westos和test用户