目录
1.用户存在的意义
系统资源是有限的,如何合理分配系统资源?
在这个问题解决时必须要有连个资源配合
1.身份 account(用户名)
2.授权 author
3.认证 auth (密码)
3A机制,3A机制组成系统中最底层的安全架构
2、用户组存在意义
用户组是一个逻辑容器
对用户进行归类和统一授权
3、用户及用户组在系统中的存在方式
用户就是/etc/passwd 文件中的一行字符,用户属性
用户组存在的方式就是/etc/group 文件中的一行字符,用户组的属性
/etc/shadow 用户认证属性
用户存放方式就是文件里的字符串加字符串指定的系统其他文件
4、用户的查看
命令 | 用户 |
---|---|
whoami | ##查看当前用户 |
id | ##查看用户id信息 (后面跟的谁就是看谁,不跟就是看自己) |
-u | ##查看用户的用户id |
-g | ##查看用户主组id |
-G | ##查看用户所有的组的id |
-n | ##显示名称 |
-nG -ng -nu 显示对应的名称而不再显示数字
[root@foundation50 Desktop]# whoami
root
[root@foundation50 Desktop]# id -u westos
1000
[root@foundation50 Desktop]# id -g westos
1000
[root@foundation50 Desktop]# id -G westos
1000 72
[root@foundation50 Desktop]# id -Gn westos
westos tcpdump
用户id范围:
0-65535
0: Linux超级用户ID
1-999: Liunx系统自用ID
1000-65535: 用户级ID
以上ID设定规则都被记录在/etc/login.defs
5、用户切换
su – username
— 表示切换用户环境,不加-表示只切换用户不切换环境
注意:在作用户切换时当使用完毕身份及时退出,不要在一个shell反复执行su命令
在一个shell中反复执行su命令会导致环境错乱
gnome-session-quit ==force 图形命令用户切换
6 、用户涉及到的配置文件
/etc/passwd ##用户身份信息文件
7列:#用户名称:用户密码(密码放在这不安全):用户id:主组id:用户说明:用户家目录:用户默认shell
/etc/group ##组身份信息文件
#组名称:组密码:组id:组的附加成员有那些
/etc/skel/.* ##用户环境配置文件模板 (在建立用户时会把这个文件的 信息复制到自己的家目录中去)
/etc/shadow ##用户认证信息文件(密码以及密码的期限等)
/home/username ##用户家目录 (进入系统时默认所在位置)
/var/spool/mail/username ##用户邮箱文件那个用户就是那个名称
7、监控用户建立的命令
[root@foundation50 Desktop]# watch -n 1 tail -n 3 /etc/passwd /etc/group
watch是监控命令,-n 1的意思是隔一秒更新一次结果。
Every 1.0s: tail -n 3 /etc/passwd... foundation50.ilt.example.com: Mon Aug 9 22:13:30 2021
[root@foundation50 Desktop]# watch -n 1 "tail -n 3 /etc/passwd /etc/group ;ls -l /home" 监控 多个命令用分号隔开
==> /etc/passwd <==
tcpdump:x:72:72::/:/sbin/nologin
westos:x:1000:1000::/home/westos:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
==> /etc/group <==
tcpdump:x:72:westos
westos:x:1000:
apache:x:48:
8、用户和用户组的建立及删除
命令 | 用途 |
---|---|
useradd username | ##用户建立 |
-u id username | ##指定uid |
userdel username | 删除用户,则只会删除用户的信息,并不会删除用户的家目录(系统配置文件) |
userdel -r username | 删除用户并且删除用户系统配置文件 |
groupadd username | 组的建立 |
groupdel username | 组的删除 |
groupadd -g id | 指定组id,切记指定组id时用户不能存在,若存在需要删除用户重新建立 |
[root@foundation50 Desktop]# useradd linux
[root@foundation50 Desktop]# userdel -r linux
[root@foundation50 Desktop]# groupadd linux
[root@foundation50 Desktop]# groupdel linux
[root@foundation50 Desktop]# groupadd -g 666 linux
[root@foundation50 Desktop]# groupadd -g 888 linux
groupadd: group 'linux' already exists ##linux已经存在则需要删除
[root@foundation50 Desktop]# groupdel linux
[root@foundation50 Desktop]# groupadd -g 888 linux 删除后可以指定
id范围 | 表示名称 |
---|---|
0 | 表示超级用户 |
1-200 | 系统预留id |
01-999 | 系统用户 |
1000-60000 | 用户级用户 |
etc/login.defs | 记录用户建立的默认规则 |
命令 | 用途 |
---|---|
useradd username |
用户建立 |
-u id username | 指定uid |
-g id username | 指定组id |
-G id username | 指定附加组id |
-d dir username | 指定用户家目录 |
-M username | j建立用户时不指定用户家目录 |
-c word username | 指定用户说明 |
-s shell username | 指定用户shell |
[root@foundation50 Desktop]# useradd -u 666 linux 指定uid
[root@foundation50 Desktop]# userdel -r linux
[root@foundation50 Desktop]# useradd -g 666 linux 指定组id时组必须存在
useradd: group '666' does not exist
[root@foundation50 Desktop]# groupadd -g 666 linux 建立组
[root@foundation50 Desktop]# useradd -g 666 linux 指定组id
[root@foundation50 Desktop]# useradd -G 72 linux 指定附加组
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),72(tcpdump)
[root@foundation50 Desktop]# userdel -r linux
[root@foundation50 Desktop]# useradd -G 72,1000 linux 可以指定多个附加组
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),72(tcpdump),1000(westos)
[root@foundation50 Desktop]# userdel -r linux
[root@foundation50 Desktop]# useradd -c 'linux user' linux 指定用户说明
[root@foundation50 Desktop]# userdel -r linux
[root@foundation50 Desktop]# useradd -M linux 不指定家目录
[root@foundation50 Desktop]# userdel -r linux
userdel: linux home directory (/home/linux) not found
[root@foundation50 Desktop]# useradd -d /home/haha linux 指定家目录
[root@foundation50 Desktop]# userdel -r linux
[root@foundation50 Desktop]# useradd -s /sbin/nologin linux 指定用户shell /sbin/nologin表示不可登陆shell
[root@foundation50 Desktop]# su -linux
This account is currently not available.
[root@foundation50 Desktop]# userdel -r linux
[root@foundation50 Desktop]# cat /etc/shells 查看系统中有哪些shell
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
9、用户和用户组的管理
命令 | 用途 |
---|---|
usermod | usermod |
-l | 更改用户名称 |
-u | 更改用户id |
-g | 更改组id |
-G | 更改用户附加组身份 |
aG | 添加用户附加组身份 |
-c | 更改用户说明 |
-d | #更改家目录指向字符,但是真实的目录名称并不改变 ( -d 更改的是/etc/passwd 家目录中的指向字符,但是真实目录名称并不会改变) |
-md | #更改家目录指向字符同时更改家目录名称 (md 两个字符不能互换) |
-s | #更改默认shell |
-L | #冻结账号 |
-U | #解锁 |
[root@foundation50 Desktop]# groupmod -g 666 linux 更改用户组id
[root@foundation50 Desktop]# groupmod -g 1001 linux
[root@foundation50 Desktop]# useradd linux
[root@foundation50 Desktop]# usermod -l redhat linux 更改用户名
[root@foundation50 Desktop]# usermod -l linux redaht 更改用户名
usermod: user 'redaht' does not exist
[root@foundation50 Desktop]# usermod -l linux redhat
[root@foundation50 Desktop]# usermod -u 666 linux 更改用户id
[root@foundation50 Desktop]# usermod -u 1001 linux
[root@foundation50 Desktop]# usermod -g 1000 linux 更改组id
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1000(westos) groups=1000(westos)
[root@foundation50 Desktop]# usermod -g 1001 linux
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux)
[root@foundation50 Desktop]# usermod -G 1000 linux 更改附加组id
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),1000(westos)
[root@foundation50 Desktop]# usermod -G 72 linux 更改附加组id
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),72(tcpdump)
[root@foundation50 Desktop]# usermod -aG 1000 linux 添加附加组id
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),72(tcpdump),1000(westos)
[root@foundation50 Desktop]# usermod -G "" linux 清空所有附加组
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux)
[root@foundation50 Desktop]# usermod -c "linux user" linux 更改用户说明
[root@foundation50 Desktop]# usermod -c "" linux 清空用户说明
[root@foundation50 Desktop]# usermod -d /home/lee linux 更改用户家目录指向 ,而不是更改家目录文件名称
[root@foundation50 Desktop]# usermod -d /home/linux linux
[root@foundation50 Desktop]# usermod -md /home/lee linux 即更改家目录指向,也更改家目录文件名词
[root@foundation50 Desktop]# usermod -md /home/linux linux
[root@foundation50 Desktop]# usermod -s /sbin/nologin linux 更改用户的shell
[root@foundation50 Desktop]# usermod -s /bin/bash linux
10、用户认证信息管理
/etc/shadow
命令 | 功能 |
---|---|
/dev/random | 加密字符串设备 |
10、1更改密码
超级用户改密码
1、 passwd lee ##只有root可以执行
2、超级用户可以用非交互式改密码:
“echo 123 | passwd --stdin lee” (stdin 表示采集标准 输入给 lee)
3、超级用户也可以 如下改密码:
passwd << EOF
lee
lee
EOF
普用用户改密码
[lee@foundation50 Desktop]$ passwd 普通用户修改密码只能修改自己用户密码
Changing password for user lee.
Current password: 需要输入原始密码
New password: 密码必须是8位以上并且是数字加字符无序的组合
Retype new password:
passwd: all authentication tokens updated successfully.
11、查看密码状态
命令 | 功能 |
---|---|
passwd -S lee | 查看密码状态 |
root@foundation50 Desktop]# passwd -S lee
lee PS 2021-08-11 0 99999 7 -1 (Password set, SHA512 crypt.)
12、冻结账号和解锁账号
命令 | 功能 |
---|---|
usermod -L lee | 冻结账号 |
usermod -U lee | 解锁账号 |
passwd -l lee | 冻结账号 |
passwd -u lee | 解锁账号 |
[root@foundation50 Desktop]# usermod -L lee 加密字符串前面加一个!
[root@foundation50 Desktop]# usermod -U lee
[root@foundation50 Desktop]# passwd -l lee 加密字符串前面加一个!!
Locking password for user lee.
passwd: Success
[root@foundation50 Desktop]# passwd -u lee
Unlocking password for user lee.
passwd: Success
13、密码删除
命令 | 用户 |
---|---|
passwd -d lee | 密码删除 |
[root@foundation50 Desktop]# passwd -d lee
Removing password for user lee.
passwd: Success
14 、密码使用天数
从1970-1-1算其到今天的时间
命令 | |
---|---|
passwd -e lee | 修改默认使用时间为0 (用户在登陆系统完成认证之后,被强制的修改一次密码,否则登陆不了系统.) |
chage -d 0 lee | ##账号必须改密码才能登陆系统, ( passwd -e 只能修改为0, 而 chage -d 0 可以修改为其他指定都行,但是意义不大,一般都是0) |
[root@foundation50 Desktop]# passwd -e lee 只能修改为0 ,修改后必须强制修改一次密码,否则无法登陆
Expiring password for user lee.
passwd: Success
[root@foundation50 Desktop]# chage -d 11 lee 可以修改为除了0的其他数字 ,但是意义不大
[root@foundation50 Desktop]# chage -d 0 lee
15、 密码最短有效期
命令 | 功能 |
---|---|
passwd -n 1 lee | 密码最短有效期 |
chage -m 1 lee | 密码最短有效期 |
[root@foundation50 Desktop]# passwd -n 1 lee 设置密码最短有效期
Adjusting aging data for user lee.
passwd: Success
[root@foundation50 Desktop]# su -- lee
[lee@foundation50 Desktop]$ passwd
Changing password for user lee.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[lee@foundation50 Desktop]$ passwd
Changing password for user lee.
Current password:
You must wait longer to change your password 至少需要等24小时后才能修改密码
passwd: Authentication token manipulation error
[root@foundation50 Desktop]# chage -m 0 lee 设置密码最短有效期
16、 密码最长有效期
命令 | 用户 |
---|---|
passwd -x 30 lee | 密码最长有效期 |
chage -M 40 lee | 密码最长有效期 |
[root@foundation50 Desktop]# chage -M 40 lee
[root@foundation50 Desktop]# passwd -x 30 lee
Adjusting aging data for user lee.
passwd: Success
17、 警告期
命令 | 用户 |
---|---|
passwd -w 2 lee | 警告期 |
chage -W 7 lee | 警告期 |
[root@foundation50 Desktop]# passwd -w 2 lee
Adjusting aging data for user lee.
passwd: Success
[root@foundation50 Desktop]# chage -W 7 lee
18、 非活跃天数
命令 | 用户 |
---|---|
passwd -i 1 lee | 非活跃天数 |
chage – I 2 lee | 非活跃天数 |
[root@foundation50 Desktop]# passwd -i 1 lee
Adjusting aging data for user lee.
passwd: Success
[root@foundation50 Desktop]# chage -I 2 lee
19、 账号到期时间
命令 | 用户 |
---|---|
chage – E “2020-11-11” lee | 账号到期时间 |
[root@foundation50 Desktop]# chage -E "2020-11-11" lee
练习:
答案:
20 、用户权力下放
在系统中普通用户时无法执行系统管理命令的
如果需要普通用户执行系统管理动作那么需要oot用户来进行授权
命令 | 功能 |
---|---|
hoStname | 查看当前系统的主机名 |
which | 查看命令绝对路径 |
命令 | 用户 |
---|---|
普通用户授权方式 “sudo” | 可以使普通用户使用指定的用户身份来运行命令 |
授权方法:visudo
:
命令 | 功能 |
---|---|
visudo | 此命令作用是编辑/etc/sudoers并提供语法检测(之前讲到的 vim 可以编辑,但是不会提示语法报错) 语法检测只能确保语法正确,不能表示设定是合理的或者单词拼写错误。退出时提示错误,按e 继续进行编辑。 |
在文件的100行左右 ##代码规范性 ****ALL (全部,但是很危险)
username hostname=(newusername) [NOPASSWD:] /command, /command1
#lee用户 在linux.wesots.com主机=(用超级用户身份) 执行useradd命令
lee linux.westos.com=(root) /usr/sbin/useradd
#westos用户 在linux.wesots.com主机 使用超户 免密 执行useradd 和 userdel
westos linux.wesots.com = (root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel
[root@foundation50 Desktop]# useradd westoslinux 建立用户
[root@foundation50 Desktop]# echo westos | passwd --stdin westoslinux 修改密码
Changing password for user westoslinux.
passwd: all authentication tokens updated successfully.
[root@foundation50 Desktop]# hostname 查看主机名
foundation50.ilt.example.com
[root@foundation50 Desktop]# visudo 编辑/etc/sudoers并提供语法检测
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
westoslinux foundation50.ilt.example.com=(root) NOPASSWD:/usr/sbin/useradd, /usr/sbin/userdel
[root@foundation50 Desktop]# su -- westoslinux 登陆普通用户
[westoslinux@foundation50 Desktop]$ sudo useradd linux 可以建立用户
Creating mailbox file: File exists
[westoslinux@foundation50 Desktop]$ id linux
uid=1002(linux) gid=1002(linux) groups=1002(linux)
[westoslinux@foundation50 Desktop]$ sudo userdel -r linux 普通用户删除
userdel: /var/spool/mail/linux not owned by linux, not removing