一 用户提权
1. su 使用普通用户登录,然后执行su命令切换到root用户
优点:简单 缺点:需要知道root密码
2. sudo 使用普通用户管理,当需要使用root的权限的时候,进行提权
优点:安全、方便 缺点:复杂
# shell的分类及执行的过程
交互式shell #终端操作 输入一条指令,需要等待系统的处理及返回结果
非交互式shell #脚本的执行方式就是 用户执行完指令 不需要跟系统进行交互
登录式shell #通过用户名和密码的方式进行登录的
非登录式shell #不是通过用户名和密码的方式进行登录的 执行一个bash,就是一个非登录式shell
[root@mpd~]# yum install -y psmisc # 安装查进程包
二 用户的工作环境相关文件
#个人配置文件
/root/.bash_profile
/root/.bashrc
#全局配置文件
/etc/bashrc
/etc/profile
/etc/profile.d/*.sh
profile # 环境变量配置文件 系统登录前执行的一些命令或者脚本
bashrc # 本地变量 别名
#在5个文件的第二行加入echo输出
[root@qls ~]# vim .bashrc
[root@qls ~]# vim .bash_profile
[root@qls ~]# vim /etc/bashrc
[root@qls ~]#
[root@qls ~]# vim /etc/profile
[root@qls ~]# vim /etc/profile.d/test.sh
#登录式Shell执行顺序
/etc/profile ---》 /etc/profile.d/*.sh ---》 .bash_profile ---》 .bashrc ---》 /etc/bashrc
#非登录式shell执行顺序
.bashrc ---》 /etc/bashrc ---》 /etc/profile.d/*.sh
三 命令用户提权
su username #非登录式shell
su - username #登录式shell
区别就是加载的配置文件不一样
root用户切换到普通用户是不需要密码的,而普通用户切换到root用户是需要密码
su - username # 在切换用户的时候属于一种登录式shell 跟su命令直接切换的区别就是是否加载了/etc/profile文件,切换之后,工作环境也已经改变了,是在自己的家目录下面
四 用户提权
1) 系统组wheel
# whell 系统组 一般用于日志审计
# 给用户追加wheel组
[root@qls ~]# grep 'wheel' /etc/group
wheel:x:10:
[root@qls ~]# usermod -aG wheel test10
[root@qls ~]# id test10
uid=1007(test10) gid=1007(test10) groups=1007(test10),10(wheel)
# 相当于把root的权限都给予给了test10用户
sudo 命令 # 所有操作都可以执行
2) visudo 权限限制
#权限太大 怎么限制权限
visudo #进行设置 默认只能root用户使用sudo命令 普通用户是使用不了的 需要root用户设置
# 只给开发人员只读权限
[root@qls ~]# visudo # 简单 有语法检查功能
====
[root@qls ~]# vi /etc/sudoers
# 在100行左右添加此行
test11 ALL=(ALL) /usr/bin/cat,/usr/bin/tail
用户 主机 角色 命令
ALL #所有命令
/usr/bin/cat #单个命令
/usr/bin/cat,/usr/bin/tail #多个用逗号分割
/usr/bin/* #目录下的所有命令
NOPASSWD: #免密执行
#限制某个文件操作
test11 ALL=(ALL) NOPASSWD: /usr/bin/tail /var/log/messages
#检查语法
[root@qls ~]# visudo -c
/etc/sudoers: parsed OK
#执行sodu命令的时候,不提示输入密码
[root@qls ~]# visudo
test11 ALL=(ALL) NOPASSWD:/usr/bin/cat,/usr/bin/tail
[root@qls ~]# visudo -c
/etc/sudoers: parsed OK
# 注意:设置命令权限的时候,多个可以使用逗号分割 也可以是/usr/bin/* ALL
# 不能授权针对一个目录
五 sudo设置组
两种方法:
利用sudo的自己的组 只在sudo里面生效
利用系统组 是一个真实存在的组
#利用sudo的自己的组
[root@qls ~]# useradd dev01
[root@qls ~]# useradd dev02
[root@qls ~]# echo "1" | passwd --stdin dev01
Changing password for user dev01.
passwd: all authentication tokens updated successfully.
[root@qls ~]# echo "1" | passwd --stdin dev02
Changing password for user dev02.
passwd: all authentication tokens updated successfully.
#用户别名组
User_Alias DEV = dev01,dev02
#命令别名组
Cmnd_Alias READ = /bin/cat,/bin/head,/bin/tail
#调用
DEV ALL=(ALL) NOPASSWD: READ
[root@qls ~]# visudo -c
/etc/sudoers: parsed OK
# 系统的组 真实组
[root@qls ~]# groupadd dev_group
[root@qls ~]# useradd -g dev_group dev11
[root@qls ~]# useradd -g dev_group dev12
[root@qls ~]# echo "1" | passwd --stdin dev11
Changing password for user dev11.
passwd: all authentication tokens updated successfully.
[root@qls ~]# echo "1" | passwd --stdin dev12
Changing password for user dev12.
passwd: all authentication tokens updated successfully.
[root@qls ~]# visudo
%dev_group ALL=(ALL) NOPASSWD: READ
[root@qls ~]# visudo -c
/etc/sudoers: parsed OK
六 sud设置案例
# 禁止root用户登录,使用普通用户登录,并且普通用户能够免密的切换到root用户
#禁止root登录
[root@qls ~]# sed -i '/^#PermitRootLogin/s#.*#PermitRootLogin no#g' /etc/ssh/sshd_config
[root@qls ~]# systemctl restart sshd
[root@qls ~]# useradd qiudao
[root@qls ~]# echo "1" | passwd --stdin qiudao
Changing password for user qiudao.
passwd: all authentication tokens updated successfully.
[C:\~]$ ssh qiudao@10.0.0.100
Connecting to 10.0.0.100:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Wed Jul 22 09:47:12 2020 from 10.0.0.1
[root@qls ~]# visudo
qiudao ALL=(ALL) NOPASSWD: /bin/su
[root@qls ~]# visudo -c
/etc/sudoers: parsed OK