1.为什么要对用户进行管理?
- 因为Linux系统是一个多用户多任务的操作系统,管理用户之后才能保证系统有条不紊的工作
2.用户及用户组存在的意义
- 用户是操作者在系统中的身份标识,组是逻辑概念,是用户的集合;用户的存在是为了限制权限;组的存在是为了归类用户便于管理权限
3.用户在系统中的存储方式
- 用户在系统中就是文件中的字符串,每个字符串映射了该用户所用到的系统资源
4.如何查看Linux系统用户?
(1)查看当前正在使用的用户:" whoami "
(2)用户信息的查看
命令 | 含义 |
---|---|
id | 查看指定用户id信息 |
id -u | 查看用户的uid |
id -g | 查看用户的gid |
id -G | 查看用户所在的所有组的id |
id -n | 显示名字而不显示id数字 |
id 查看正在使用的用户所有id信息
id 用户名 查看指定用户的信息
id -g 查看用户的gid(用户所属初始组的身份证号)
id -G 查看用户所在的所有组的id(用户所属附加组的身份证号)
id -n 显示用户的名字而不显示id数字
(3)用户身份的切换方式及环境变量
gnome-session-quit --force 注销当前用户,用其他用户登录
su 用户 | 只切换用户身份,不切换用户环境 |
---|---|
su - 用户 | 切换用户身份及用户环境 |
su - 用户名称 (前提是该用户已经在系统中存在,若不存在需要现在超级用户模式下新建立用户)
注意:
每次"su"切换到其他用户操作之后必须退出,然后再次切换到其他用户
执行时高级用户切换到低级用户不需要密码,低级用户切换到高级需要密码,平级用户之间切换也需要密码
5.深入分析用户涉及到的配置文件及内容
/etc/passwd | 用户信息库 |
---|---|
/etc/group | 组信息库 |
/home/用户同名目录 | 默认用户家目录 |
/etc/skel/所有文件 | 用户环境配置文件模板 |
/etc/shadow | 用户认证信息 |
/etc/gshadow | 组认证信息 |
(1)用户信息库
默认shell的指定有哪些,在系统中的/etc/shells中查看
用户名称 | 用户自己的名字 |
---|---|
x | 用户密码 |
uid | 用户自己的身份证号 |
gid | 用户所属组的身份证号 |
说明 | 默认shell的指定有哪些,在系统中的/etc/shells中查看 |
/home/ / | 该文件一开始在的目录 |
默认shell | 和系统聊天所开启的软件 |
(2)组信息库
组的名称 | 这个组的名字 |
---|---|
x | 组的密码 |
组的id | 这个组的身份证号 |
组的成员 | 这个组里面包括了哪些用户 |
6.用户组的管理
grouadd 用户组名字 | 建立用户组 |
---|---|
groupadd -g 3333 用户组名字 | 建立用户组并指定用户组的id为3333 |
groupdel 用户组名字 | 删除用户组 |
(1)用户信息监控命令
watch -n 1 “tail -n 3 /etc/passwd /etc/group”
(2)用户组的建立
(3)用户组的删除
(4)建立用户组并指定用户组的id
注意:
1.当建立一个用户组的时候,若显示已经存在,则直接删除再建立(每次实验前可先reset)
2.当建立一个用户组的同时它的gid会被同时给定,具体的范围可以" vim /etc/login.defs "查看(下图)
3.如果想要自己指定uid,则先删除刚才建立的用户组,在建立的同时指定uid
4.建立用户组的同时也会建立它的家目录,删除用户组的同时也会删除它的家目录
5.用户组不能重复建立,一定要先删除才可以建立
7.用户的管理
useradd 用户名 | 新建用户 |
---|---|
useradd -u 3333 用户名 | 建立用户的同时指定用户uid |
useradd -g 40 用户名 | 指定用户初始组id,“40用户组”必须存在 |
useradd -G 40 用户名 | 指定用户附加组id,“40用户组”必须存在 |
useradd -c “xxx” 用户名 | 指定用户的说明 |
useradd -d /home/fam 用户名 | 指定用户的家目录 |
useradd -s /bin/sh 用户名 | 指定用户的shell |
(1)用户信息监控命令
watch -n 1 “tail -n 3 /etc/passwd /etc/group”
(2)建立新用户
建立用户的同时会建立它的配置文件(包括用户的组信息和用户的家目录信息)
(3)用户删除
userdel 用户名 删除用户但不删除用户的配置文件
userdel -r 用户名 删除用户的同时会删除用户的配置文件
(4)指定用户的uid :useradd -u 111 jkl
(5)指定用户的初始组id(-g:用户组gid必须是存在的)
建立用户uio的同时指定它的初始组为组id是21的组
(6)指定用户附加组的id (-G:用户组gid必须是存在的)
建立用户uio的同时指定它的附加组为组id是40的组
(7)指定用户的说明(-c “xxx”)
建立用户ufo的同时给它的说明是haha
(8)指定用户的家目录 (-d /home/ /)
建立用户edc的同时指定它的家目录为/home/lee
(9)指定用户的默认shell(-s)
建立用户mko的同时指定它与系统对话的默认shell类型是/bin/sh
注意:
除密码不能指定外,其它用户信息建立时都可以指定
- 更改用户信息(usermod)
usermod -l 新名称 用户名 | 更改用户的名称 |
---|---|
usermod -u uid 用户名 | 更改用户uid |
usermod -g gid 用户名 | 更改用户的初始组 |
usermod -G gid 用户名 | 更改用户的附加组,可以接组名,也可以接id |
usermod -aG id 用户名 | 添加用户的附加组 |
usermod -G “” 用户名 | 删除用户所有附加组的身份 |
usermod -c “xxx” 用户名 | 指定用户说明文字 |
usermod -d /home/lee 用户名 | 更改用户家目录的指向 |
usermod -md /home/lee 用户名 | 更改用户家目录 |
usermod -s /bin/sh 用户名 | 更改用户的shell |
(1)更改用户的名称
建立用户hupu,再更改用户名为eee
(2)更改用户的uid
将初始建立时的uid1001改成3333
(3)更改用户的初始组(gid必须是存在的)
将初始建立时的gid1001改为40
(4)更改(替换)用户的附加组
将组21作为用户的附加组
(5)添加用户的附加组
添加组976为用户的附加组
(6)删除用户所有附加组的身份
(7)更改用户说明文字
更改用户说明文字为" hahei "
(8)更改用户家目录指向(相当于改变家庭地址)
(9)更改用户家目录(同时改变家目录的指向和家目录名字)
(10)更改用户的shell
注意:
使用 " -G "时,如果已有附加组,则会代替,如果不想代替,想让两个都存在,使用 " -aG "
附加组的作用:加入一个组才有资格,有权利。加入附加组是为了共享权力,与初始组不一样
8.用户认证文件的内容分析
/etc/shadow 用户认证信息文件
第一列 | 用户名称 |
---|---|
第二列 | 用户密码的加密字符串,如果加密字符串前出现" ! ",该用户的账号被冻结 |
第三列 | 从1970-1-1日起到用户密码最后一次被修改时的总天数 |
第四列 | 密码最短有效期,如果此位有设定数字,那么在此数字范围内的天数里不能更改用户的密码 |
第五列 | 密码最长有效期,用户必须在此有效期限内更新密码,如果超时会被冻结 |
第六列 | 密码警告期限,在过期前指定天数内会发送警告信息给用户 |
第七列 | 密码非活跃天数,此位默认为空,如果设定数值,那么在密码最长有效期限过后仍然可以使用的天数 |
第八列 | 用户到期日,默认为空,指账号一定会被冻结的时间点,这个时间是从1970-1-1开始计算的累计天数 |
第九列 | 用户自定义列,未被启用 |
说明:用户密码的相关操作
passwd 用户名 | 更改用户的密码 |
---|---|
passwd -l 用户名 | 在用户加密字符串前加入“!!”,锁住 |
passwd -S 用户名 | 查看用户密码信息 |
passwd -u 用户名 | 解开已经上锁的用户 |
passwd -d 用户名 | 密码清空 |
passwd -e 用户名 | 改变用户最后一次更改密码时间为0,用户在登陆时会被强制更改密码 |
usermod -L 用户名 | 在用户加密字符串前加入“!”(冻结用户) |
usermod -U 用户名 | 在密码不为空的时候使用 (解锁用户) |
密码在/etc/shadow文件中,只有超级用户可以操作
- 密码管理
watch -n 1 “tail -n 3 /etc/passwd /etc/shadow”
建立用户westos 监控其用户信息
成功设置"hello"为用户westos的密码
在用户westos密码加密字符串前加入"!!"(锁密)
将"!!"解锁(passwd -u westos)
冻结用户westos,在密码加密字符串前加入"!"
(passwd -U westos)解锁 在密码不为空的时候使用
passwd -d westos 清空密码
passwd -S westos 查看用户密码信息
passwd -e westos 改变用户最后一次改密码的时间为0,用户在登录系统时会被强制改密码
chage -d 0—任意数字 用户 改变用户最后一次改密码的时间为0—任意数字
用户密码最短有效期:passwd -n 2 westos 用户在2日内不能修改密码
chage -m 2 用户名 两个命令的执行结果一样
用户密码最长有效期:passwd -x 66 westos 设定用户在66天内必须修改密码
chage -M 66 用户名 两个命令的执行结果一样
密码警告期限:passwd -w 3 westos 密码过期前3天有警告信息提示
chage -w 3 用户名 两个命令的执行结果一样
用户非活跃天数:passwd -i 1 westos 密码过期后仍可登陆系统的天数
chage -I 1 用户名 两个命令的执行结果一样
用户到期日:chage -E “2020-01-07” 用户在这一天会被冻结,此位的数是从1970-1-1开始算起
9.用户授权
一般情况下普通用户是不能新建用户或者用户组,只有超级用户才有这个权力,想让普通用户使用超级用户的权力来建立用户或者用户组,此时需要把超级用户的权力给普通用户,这就叫用户授权
超级用户把自己的权力分享给普通用户,也可以叫做权力共享
权力下放文件为/etc/sudoers,此文件可以直接用vim编辑,但是不提供语法检测
使用visudo编辑此文件是提供语法检测的
(1)建立一个普通用户 useradd westos,再试下在普通用户下是否能建立新用户
可以看到普通用户不能建立新的用户
(2)打开文件visudo(/etc/sudoers)
(3)查看我的主机名称、一些权力下放的路径
(4)在改文件的任意一行可以写要操作的命令(为了规范,一般在100行左右写)
内容为:用户名字 主机名字=(root) NOPASSWD:要执行的命令/usr/sbin/useradd,/usr/sbin/usermod
(5)测试一定要用"sudo"
可以发现普通用户westos可以建立用户了
注意:
当改完visudo不能退出时,按e回到文件查找错误
无nopasswd时,在普通用户执行时需要密码,密码可以在超级用户下更改;nopasswd为免密操作
空格问题:=(root)之间不能有空格