一 用户提权

1. su	使用普通用户登录,然后执行su命令切换到root用户     
        优点:简单   缺点:需要知道root密码

2. sudo  使用普通用户管理,当需要使用root的权限的时候,进行提权   
         优点:安全、方便   缺点:复杂  


#  shell的分类及执行的过程 
交互式shell	#终端操作  输入一条指令,需要等待系统的处理及返回结果 
非交互式shell	#脚本的执行方式就是  用户执行完指令 不需要跟系统进行交互 
登录式shell	#通过用户名和密码的方式进行登录的
非登录式shell	#不是通过用户名和密码的方式进行登录的    执行一个bash,就是一个非登录式shell
[root@mpd~]# yum install  -y  psmisc # 安装查进程包

day14 用户权限管理_linux

二 用户的工作环境相关文件

#个人配置文件
/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