RH124 第五章 Linux系统中的用户管理
1. 用户及用户组存在的意义
1)用户存在的意义 ——系统资源是有限的,如何合理分配系统资源?
3A机制,组成系统中最底层的安全架构
1.身份 account
2.授权 author
3.认证 auth
2)用户组存在意义
用户组是一个逻辑容器 对用户进行归类和统一授权
2.用户及用户组在系统中的存在方式
电脑对数字敏感 id
人类对字符串敏感 名称
id <-------> 名称 必须要记录到文件当中用户才能存在
用户就是/etc/passwd文件中的一行字符
用户组存在的方式就是/etc/group 文件中的一行字符
3.用户切换
1)用户查看
- whomai 查看当前用户
[westos@localhost root]$ whoami
westos
- id 查看用户id信息
-u 查看用户的用户id
-g 查看用户主组id
-G 查看用户所有的组的id
-ngG (-ng -nG) 显示名称
[westos@localhost Desktop]$ id westos
uid=1000(westos) gid=1000(westos) groups=1000(westos)
[westos@localhost Desktop]$ id root
uid=0(root) gid=0(root) groups=0(root)
[westos@localhost Desktop]$ id -G westos
1000
2)用户切换
su – username 切换用户环境
‘-’ ------严谨
如果root ----> commonuser 不需要后者密码
commonuser ----> root 需要密码
commonuser ----> commonuser 需要密码
注意:在做用户切换时当使用完毕用户身份及时退出,不要在一个shell中反复执行su命令,在一个shell中反复执行su命令会导致环境错乱!
[westos@localhost Desktop]$ su -
Password:
[root@localhost ~]# su westos
[westos@localhost root]$ whoami
westos
[westos@localhost root]$ exit
exit
[root@localhost ~]# exit
logout
注销图形,变为用户登陆界面
4.用户涉及到的系统配置文件
-
/etc/passwd
##用户身份信息文件(用户的所有资源文件)
用户名称 : 用户密码 用户id :用户主组I d : 用户说明(登录界面用户名称):用户家目录 :用户默认shell
man 5 passwd -----可以看到如下图所示的用法解释
-
/etc/group
##组身份信息文件
组名称 :组密码 :组id :组的附加成员 -
/etc/skel/.* ##用户环境配置文件模板
-
/etc/shadow ##用户认证信息文件
-
/home/username ##用户家目录
5.用户和用户组建立及删除
监控用户建立的命令----- watch
[root@localhost ~]# watch -n 1 "tail -n 3 /etc/passwd /etc/group /etc/shadow"
(当一行写两个命令的时候,用分号隔开;Ctrl + C 退出监测模式)
-
useradd 命令
useradd username 创建用户
useradd -u id username 其中 uid 2**16=0-65535uid 0 表示超级用户 1-200 系统预留id 201-999 系统用户 1000-60000 用户级用户
参数规则
useradd -g id 创建 gid指定 主组id 用户
useradd -G id Gid指定 附加组id
useradd -d dir 指定 用户家目录
useradd -M 不创建家目录
useradd -c word 指定 用户说明
useradd -s shell 指定 用户shell -
userdel 命令
删除用户
userdel –r username 用户删除 ( -r 删除用户的系统配置文件) -
groupadd命令 建立用户组
例 groupadd groupname 用户组建立
例 groupadd -g id groupname 建立 指定组名称 的用户组 -
groupdel 命令 删除用户组
[root@localhost ~]# useradd lee
[root@localhost ~]# groupadd lee
groupadd: group 'lee' already exists
[root@localhost ~]# id lee
uid=1001(lee) gid=1001(lee) groups=1001(lee)
[root@localhost ~]# groupadd -g 666 lee
groupadd: group 'lee' already exists
[root@localhost ~]# useradd jm
[root@localhost ~]# userdel -r jm
[root@localhost ~]# useradd westos
useradd: user 'westos' already exists
[root@localhost ~]# groupadd -g 666 linux
[root@localhost ~]# useradd linux
useradd: group linux exists - if you want to add this user to that group, use -g.
[root@localhost ~]# useradd -g 666 linux
[root@localhost ~]# id 666
id: ‘666’: no such user
[root@localhost ~]# groupadd -g 999 linux
groupadd: group 'linux' already exists
[root@localhost ~]# groupdel linux
groupdel: cannot remove the primary group of user 'linux'
[root@localhost ~]# userdel -r linux
[root@localhost ~]# useradd linux
[root@localhost ~]# useradd kl
补充:添加成员(默认添加了这个成员的主组),删除时只能删除成员(默认删除成员的主组)
6.用户和用户组的信息管理
- usermod 命令 更改用户信息
-l #更改用户名称
-u #更改用户id
-g #更改主组id
-G #更改用户附加组身份
-aG #添加用户附加组身份
-c #更改用户说明
-d #更改家目录指向
-md #更改家目录指向同时更改家目录名称
-s #更改默认shell
-L #冻结账号
-U #解锁
[root@localhost ~]# usermod -l lee1 lee
[root@localhost ~]# usermod -u 678 lee1
[root@localhost ~]# usermod -g 890 lee1
usermod: group '890' does not exist
[root@localhost ~]# usermod -g 1000 lee1
[root@localhost ~]# usermod -G 1001 lee1
[root@localhost ~]# usermod -c "lee1" lee1
[root@localhost ~]# usermod -d /home/lee1
[root@localhost ~]# usermod -d /home/lee1/ lee1
[root@localhost ~]# usermod -md /home/lee1/ lee1
usermod: no changes
[root@localhost ~]# usermod -s /bin/sadh lee1
- groupmod 命令 ##更改用户组信息
groupmod –g** ##更改用户组id
[root@localhost ~]# groupmod -g 1001 linux
groupmod: GID '1001' already exists
[root@localhost ~]# groupmod -g 1005 linux
7.用户认证信息管理
监控用户认证信息管理状态-----watch
1.用户名称
passwd -S lee 查看密码状态
2.用户加密字符
- 更改密码
passwd lee 只有root用户可以执行 或 “echo 123 | passwd --stdin lee”——用脚本非交互模式更改密码!!
passwd 普通用户改密码
8位以上无序数字+无序字母组合
[root@localhost ~]# passwd westos
Changing password for user westos.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
- 冻结认证
Passwd -l username 冻结 账号认证----第二位显示!!
passwd -u username 解锁 账号认证-----第二位显示空格
[westos@localhost ~]$ su -
Password:
[root@localhost ~]# passwd -l westos
Locking password for user westos.
passwd: Success
[root@localhost ~]# passwd -u westos
Unlocking password for user westos.
passwd: Success
- 密码删除
passwd -d username 密码删除
[root@localhost ~]# passwd -d westos
Removing password for user westos.
passwd: Success
- 密码使用天数 ------第三位显示
passwd –e username 从1970-1-1算其到今天的时间
chage -d 0 username 修改默认使用时间为0, 账号必须改密码才能登陆系统d
[root@localhost ~]# passwd -e linux
Expiring password for user linux.
passwd: Success
[root@localhost ~]# chage -d 10 linux
- 密码最短有效期 ------第四位显示
passwd -n 1 lee # lee在1天内不能改密码
chage -m 1 lee
[root@localhost ~]# passwd -n 5 linux
Adjusting aging data for user linux.
passwd: Success
[root@localhost ~]# chage -m 15 linux
- 密码最长有效期 ------第五位显示
passwd -x 40 username #40天内lee用户必须更新密码否则会被冻结
Chage -M 30 username
[root@localhost ~]# passwd -x40 linux
Adjusting aging data for user linux.
passwd: Success
[root@localhost ~]# chage -M 150 linux
- 密码过期警告 -------第六位显示
passwd -w 2 username
chage -W 1 username
账号过期前警告时间
[root@localhost ~]# passwd -w 2 linux
Adjusting aging data for user linux.
passwd: Success
[root@localhost ~]# chage -W 5 linux
- 认证非活跃天数------第七位显示
passwd -i 2 username
chage -I 1 username 账号认证最大时间超过后还能用多久
[root@localhost ~]# passwd -i 10 linux
Adjusting aging data for user linux.
passwd: Success
[root@localhost ~]# chage -I 100 linux
- 账号认证到期时间------第八位显示
chage -E “2020-05-11” #到2020-5-11这天账号会被冻结
[root@localhost ~]# chage -E "2026-12-19" linux
- 未启用功能------第九位显示
总结
补充:练习题
8.用户权力下放
-
背景
在系统中普通用户时无法执行系统管理命令的,如果需要普通用户执行系统管理动作,那么需要root用户来进行授权 -
普通用户授权方式 “sudo”命令
-
作用
可以使普通用户,使用指定的用户身份运行命令 -
授权方法
visudo 命令 ——此命令作用是编辑/etc/sudoers并提供语法检测
在配置文件的100行左右编辑修改权限!! (代码规范性)
username hostname=(newusername) [NOPASSWD:] /command, / command1 -
例1
lee用户 在linux.wesots.com主机=(用超级用户身份)执行useradd命令
lee linux.westos.com=(root) /usr/sbin/ useradd
-
例2
westos用户 在linux.wesots.com使用超级用户身份 免密 执行 useradd 和 userdel 命令
westos linux.wesots.com = (root) NOPASSWD: /usr/sbin/ useradd, /usr/sbin/userdel
-
测试
su - lee
sudo useradd westostest #在lee第一次使用sudo命令时需要输入lee密码
exit #退出lee
su - westos
sudo userdel -r westostest #westos可以免密执行userdel 命令
linux localhost.localdomain=(root) NOPASSWD:/usr/sbin/useradd, /usr/sbin/userdel
[westos@localhost Desktop]$ visudo
visudo: /etc/sudoers: Permission denied
[westos@localhost Desktop]$ su -
Password:
[root@localhost ~]# visudo
[root@localhost ~]# su - linux
[linux@localhost ~]$ sudo useradd hallo
[linux@localhost ~]$ sudo userdel -r hallo
补充:
[root@localhost ~]# which adduser
/usr/sbin/adduser
[root@localhost ~]# whoami
root
[root@localhost ~]# hostname
localhost.localdomain
补充:测试题
[westos@localhost Desktop]$ mkdir /tmp/conf
[westos@localhost Desktop]$ su -
Password:
[root@localhost ~]# cp /etc/*[[:digit:]]*.conf /tmp/conf
[root@localhost ~]# su - westos
[westos@localhost ~]$ find /etc/ -name passwd 2>&1 | tee /tmp/find.all
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
[westos@localhost ~]$ cp /etc/passwd /tmp/
[westos@localhost ~]$ vim /tmp/passwd
passwd文件里:
:%s/: /""/g
:wq!