day12 Linux用户权限提升
1.什么是环境变量?
环境变量就是用户登录时设置的一些准备环境
2.环境变量位置
先查看普通用户的家目录的隐藏文件ll -a,环境变量是隐藏文件(隐藏文件就是以.开头的文件)
个人配置文件:只对个人用户生效
~/.bash_profile
~/.bashrc
全局配置文件对所有的用户都生效(root用户和普通用户)
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
环境变量生效顺序
而登录式shell和非登录式shell的运行形式如下:
- 登录式shell:
- 正常通过某终端登录的shell。
- su - username。
- su -l username。
- 非登录式shell:
- su username。
- 图形终端下打开的命令窗口。
- 自动执行的shell脚本。
登录式shell配置文件执行顺序:
1./etc/profile
2./etc/profile.d/*.sh
3.~/.bash_profile
4.~/.bashrc
4./etc/bashrc
非登录式shell配置文件执行顺序:
1.~/.bashrc
2./etc/bashrc
3./etc/profile.d/*.sh
让普通用户可以以root身份执行rm和yum命令
第一步:使用root在/opt/下创建文件
touch /opt/root.txt
第二步:编辑sudoers配置文件
vim /etc/sudoers
在最后一行添加,不要修改原来的内容
Linux ALL=(ALL)/usr/bin/rm,/usr/bin/yum
第三步:强制保存
:wq!
第四步 切换到普通用户测试
su -Linux
sudo -l
rm -rf /opt/root.txt
sudo rm -rf /opt/root.txt
yum install tree -y
sudo install tree -y
报错总结:
1.sudo配置的用户和你切换的用户不一样
Linux ALL=(ALL) /usr/bin/rm,/usr/bin/yum
su - oldboy
2.特权命令的路径打错了
比如:Linux ALL=(ALL) /usr/bin/rm,/user/bin/yum 其中usr写错了
报错总结:
1.命令路径没有写全,要使用绝对路径
使用技巧:
1.以后只要涉及到修改配置文件,修改之前先备份一份
多用户多角色多命令配置
需求:
用户 | 角色 | 可以执行的命令 |
---|---|---|
ops1 ops2 |
运维 | 网络命令:ifconfig/ping 软件命令:rpm/yum 服务命令:service/systemctl 进程命令:kill/killall |
dev1 dev2 |
开发 | 网络命令:ifconfig/ping 服务命令:service/systemctl |
第1步 创建用户并配置密码
useradd ops1
useradd ops2
useradd dev1
useradd dev2
echo "123" |passwd --stdin ops1
echo "123"|passwd --stdin ops2
echo "123"|passwd --stdin dev1
echo "123"|passwd --stdin dev2
第2步 使用visudo命令来编辑sudo的配置文件
1.定义用户组
user_Alias OPS = ops1,ops2
user_Alias DEV = dev1,dev2
2.定义命令组
Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
Cmnd_Alias PROCESSES = /bin/kill, /usr/bin/kill, /usr/bin/killall
3.将用户组合命令组进行关联
OPS ALL=(ALL) NETWORKING,SOFTWARE,SERVICES,PROCESSES
DEV ALL=(ALL) SOFTWARE,SERVICES
4.切换用户并测试