[TOC]



思维导图

15-用户组管理与用户提权-shell种类,su ,visudo,groupadd,groupdel_用户提权

一、用户组管理

1、相关文件

(1)/etc/group
1 ? 03:00:11 root@yyds,10.0.0.100:<sub> # cat /etc/group
root:x:0:jinjin
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
#root:x:0:jinjin
root 组名字
x 组密码占位符
0 GID
jinjin 显示该组的附加成员

(2)#增
groupadd [选项] 组名
-g 指定组的gid
-r 指定gid范围201-999之间的系统组号

003:04:44 root@yyds,10.0.0.100:</sub> # groupadd tianshen
003:10:07 root@yyds,10.0.0.100:<sub> # tail -1 /etc/passwd
jinjin:x:1001:1001::/home/jinjin:/bin/bash
003:11:12 root@yyds,10.0.0.100:</sub> # tail -1 /etc/group
tianshen:x:1002:
003:11:33 root@yyds,10.0.0.100:<sub> # id tianshen
id: tianshen: no such user

# -g
103:12:00 root@yyds,10.0.0.100:</sub> # groupadd tainshen1 -g 666
003:15:13 root@yyds,10.0.0.100:<sub> # tail -1 /etc/group
tainshen1:x:666:
# -r
003:15:53 root@yyds,10.0.0.100:</sub> # groupadd tianshen2 -r
003:16:39 root@yyds,10.0.0.100:<sub> # tail -1 /etc/group
tianshen2:x:665:

(3)#删
groupdel
003:16:42 root@yyds,10.0.0.100:</sub> # groupdel tianshen2
003:18:37 root@yyds,10.0.0.100:<sub> # tail -1 /etc/group
tainshen1:x:666:
003:18:42 root@yyds,10.0.0.100:</sub> # tail -3 /etc/group
jinjin:x:1001:
tianshen:x:1002:
tainshen1:x:666:
(4) #改
groupmod
-g 修改用户组Gid
-n 修改组名字
#-g
603:23:18 root@yyds,10.0.0.100:<sub> # groupmod tianshen -g 889
003:23:44 root@yyds,10.0.0.100:</sub> # tail -5 /etc/group
postfix:x:89:
ss:x:1000:
jinjin:x:1001:
tianshen:x:889:
tainshen1:x:666:
#-n
003:23:44 root@yyds,10.0.0.100:<sub> # tail -5 /etc/group
postfix:x:89:
ss:x:1000:
jinjin:x:1001:
tianshen:x:889:
tainshen1:x:666:
003:24:11 root@yyds,10.0.0.100:</sub> # groupmod tianshen -n baichi
003:25:14 root@yyds,10.0.0.100:<sub> # tail -5 /etc/group
postfix:x:89:
ss:x:1000:
jinjin:x:1001:
tainshen1:x:666:
baichi:x:889:

(5)查
003:25:23 root@yyds,10.0.0.100:</sub> # cat /etc/group
root:x:0:jinjin
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:

二、用户身份切换

15-用户组管理与用户提权-shell种类,su ,visudo,groupadd,groupdel_用户提权_02

# su - (用户名)
003:26:59 root@yyds,10.0.0.100:<sub> # useradd apple
003:31:55 root@yyds,10.0.0.100:</sub> # su- apple
-bash: su-: command not found
12703:32:02 root@yyds,10.0.0.100:<sub> # su - apple
[apple@yyds </sub>]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
#切换组信息
[apple@yyds <sub>]$ newgrp baichi
[apple@yyds </sub>]$ id
uid=1002(apple) gid=889(baichi) groups=889(baichi),1002(apple) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[apple@yyds ~]$ id apple
uid=1002(apple) gid=1002(apple) groups=1002(apple),889(baichi)
Linux系统中,有时候普通用户有些事情是没办法操作,除非是root管理员用户才能做到。这时就需要临时切换到root管理员身份来做事了。那么在学习如何切换用户之前,我们先来了解下用户工作环境。

如何在普通用户的情况下,完成日常工作?
1)su 切换用户,使用普通用户登录,然后使用su命令切换到root。
优点:简单,方便
缺点:需要知道root密码,不安全,切换到root没有日志审计功能

2)sudo 提权,当需要使用root权限时,进行提权,而无需切换至root用户。
优点:安全,方便
缺点:复杂

三、shell的种类

交互式shell    //等待用户输入执行的命令(终端操作,需要不断提示)
非交互式shell //执行shell脚本, 脚本执行结束后shell自动退出

登陆shell //需要输入用户名和密码才能进入shell su - zls
非登陆shell //不需要输入用户和密码就能进入,比如执行sh, bash, su username

//查看登陆shell
[root@zls <sub>]# pstree

//临时设置,永久设置需要写配置文件
[apple@yyds </sub>]$ export PS1='[\h@\u \t]#'
[yyds@apple 03:50:06]#
103:51:34 root@yyds,10.0.0.100:<sub> # su - apple
Last login: Thu Apr 7 03:38:29 EDT 2022 on pts/0
[apple@yyds </sub>]$

四、环境变量文件

(1)局部环境变量
<sub>/.bashrc
</sub>/.bash_profile

(2)全局环境变量
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc

(3)加载顺序
/etc/profile
/etc/profile.d/*.sh
<sub>/.bash_profile
</sub>/.bashrc
/etc/bashrc

(4)Bash的配置文件保存用户的工作环境
个人配置文件: <sub>/.bash_profile </sub>/.bashrc
全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc

profile类文件, 设定环境变量, 登陆前运行的脚本和命令
bashrc 类文件, 设定本地变量, 定义命令别名

全局配置和个人配置设置冲突, 优先使用个人配置准

五、visudo-用户身份提权

1、sudo 命令提权

sudo就是普通用户提权,执行root用户可执行的命令。

2、为什么要用sudo

在公司,使用普通用户,但有些命令只有root才可以执行。

3、sudo如何使用

(1)系统超级管理员root,需要sudo的配置(发一个兵符给普通用户)

(2)普通用户只需要在执行命令之前加上sudo即可

4、sudo的配置

1、安装sudo命令  yum install -y sudo
2、sudo的配置文件
0 ? 03:09:41 root@yyds,10.0.0.100:<sub> # vim /etc/sudoers
用户名 所有主机(角色) 所有命令的执行权限
root ALL=(ALL) ALL
moon ALL=(ALL) /bin/cp
#普通用户不需要输入密码
moon ALL=(ALL) NOPASSWD:ALL

3、推荐修改sudo的方式:
003:33:39 root@yyds,10.0.0.100:</sub> # visudo
# -c 选项
04:00:41 root@yyds,10.0.0.100:<sub> # visudo -c
/etc/sudoers: parsed OK
4、sudo的配置
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
pig ALL=(ALL) NOPASSWD:/bin/cat,/bin/cp,!/bin/mkdir

003:34:39 root@yyds,10.0.0.100:</sub> # su - pig
Last login: Fri Apr 8 03:32:12 EDT 2022 on pts/1
[pig@yyds <sub>]$ sudo cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
[pig@yyds </sub>]$ sudo mkdir -p /bbc/sd
Sorry, user pig is not allowed to execute '/bin/mkdir -p /bbc/sd' as root on yyds.
[pig@yyds <sub>]$ sudo cp /etc/passwd /home/pig/
[pig@yyds </sub>]$ ll /home/pig
total 4
-rw-r--r--. 1 root root 997 Apr 8 03:36 passwd
#sudoers的其他别名配置
主机别名
Host_Alias FILESERVERS = localhost, web01
命令别名
Cmnd_Alias ZLSCMD = /bin/cp,/bin/mv
Cmnd_Alias ZLSUNCMD =!/bin/rm,!/bin/su
角色别名
User_Alias

(4)给组发兵符,好处:用户提权直接加入该组即可,不用再修改配置。
%test666 ALL=(ALL) NOPASSWD:ALL
# 1.会修改visudo,添加用户提权
# 2.给用户免密执行sudo的权限
# 3.自定义用户的可执行命令,和不可执行命令
# 4.给组分配提权的权限
# 5.提权不用修改visudo,只需要加入wheel组即可
注意:除非企业中有要求,哪些命令需要用,哪些不能使用
#
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
%xiaomi ALL=(ALL) /bin/ls

204:21:47 root@yyds,10.0.0.100:<sub> # usermod pig -aG xiaomi
004:22:56 root@yyds,10.0.0.100:</sub> # id pig
uid=1004(pig) gid=1004(pig) groups=1004(pig),1005(xiaomi)
004:23:05 root@yyds,10.0.0.100:<sub> # su - pig
Last login: Fri Apr 8 04:01:17 EDT 2022 on pts/1
[pig@yyds </sub>]$ sudo ls /
[sudo] password for pig:
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[pig@yyds ~]$ sudo mkdir /star
Sorry, user pig is not allowed to execute '/bin/mkdir /star' as root on yyds.