高级权限--acl, mask,文件属性权限;su切换用户,sudo提权

高级权限

⼀ 、⽂件权限管理:ACL

ACL是为了解决某种特殊环境下的,用户权限需求。

  • setfacl : 设置acl权限
  • getfacl :查看ACL权限

acl权限归属

  • u : 指定用户
  • g : 指定组
  • o : 修改其他用户权限
  • m : 指定mask权限

注:默认情况下,ACL权限跟普通权限保持一致。

⽂件⼀旦设置了acl权限后,查看信息会出现⼀个加号,以后包括UGO在内的权限都可以⽤setfacl来设置

修改属主的权限
 setfacl -m u::权限 a.txt
 
 修改属组的权限
 setfacl -m g::权限 a.txt
 
 修改其他⼈的权限
 setfacl -m o::权限 a.txt
 
 修改具体某⼀个⽤户的权限
 setfacl -m u:⽤户名:权限 a.txt
 
 修改具体某⼀个组的权限
 setfacl -m g:组名:权限 a.txt # 组必须存在
 
 # 也可以给⽬录设置,都⼀样

查看与删除

# 查看
getfacl /opt/a.txt
# 删除
setfacl -x g:group1 /opt/a.txt # 删除组hr的权限
setfacl -b /opt/a.txt #删除所有acl权限

应用示例:ACL流程

  • 创建文件
chmod o+x /root
chmod o+x /root/xiaochen
cd xiaochen

[root@localhost xiaochen]# touch abc.txt
[root@localhost xiaochen]# chmod 000 abc.txt 
[root@localhost xiaochen]# ll
total 0
---------- 1 root root 0 Mar 16 11:39 abc.txt
  • 编写文件
[root@localhost xiaochen]# echo 111 > abc.txt 
[root@localhost xiaochen]# cat abc.txt 
111
  • 设置ACL权限
[root@localhost xiaochen]# useradd xiaocao
[root@localhost xiaochen]# setfacl -m u:xiaocao:r abc.txt 
[root@localhost xiaochen]# getfacl abc.txt 
# file: abc.txt
# owner: root
# group: root
user::---
user:xiaozhang:r--
group::---
mask::r--
other::---

# 注:
setfacl -m u:用户名称:权限(rwx) 文件名称
  • 查看文件
[root@localhost ~]# su - xiaocao
[xiaocao@localhost ~]$ cat /root/xiaochen/abc.txt
111

ACL权限的删除

  • 删除某个权限
[root@localhost xiaochen]# getfacl abc.txt 
# file: abc.txt
# owner: root
# group: root
user::---
user:xiaozhang:r--
group::---
group:xiaochen:r-x		#effective:r--
mask::rw-
other::r--

[root@localhost xiaochen]# setfacl -x u:xiaozhang abc.txt

[root@localhost xiaochen]# getfacl abc.txt 
# file: abc.txt
# owner: root
# group: root
user::---
group::---
group:xiaochen:r-x
mask::r-x
other::r--

[root@localhost xiaochen]# getfacl abc.txt 
# file: abc.txt
# owner: root
# group: root
user::---
group::---
group:xiaochen:r-x
mask::r-x
other::r--

[root@localhost xiaochen]# setfacl -x g:xiaochen abc.txt 
[root@localhost xiaochen]# getfacl abc.txt 
# file: abc.txt
# owner: root
# group: root
user::---
group::---
mask::---
other::r--
  • 清空acl权限
[root@localhost xiaochen]# getfacl abc.txt 
# file: abc.txt
# owner: root
# group: root
user::---
user:xiaochen:rw-
user:xiaocao:rw-
group::---
group:xiaochen:rw-
group:xiaocao:rw-
mask::rw-
other::r--

[root@localhost xiaochen]# setfacl -b abc.txt 
[root@localhost xiaochen]# getfacl abc.txt 
# file: abc.txt
# owner: root
# group: root
user::---
group::---
other::r--

ACL继承

默认情况下,ACL是不会继承上层目录的权限的。只有目录设置可继承子集文件才可以继承ACL权限。

[root@localhost ~]# mkdir zizi
[root@localhost ~]# cd zizi/
[root@localhost zizi]# setfacl -m d:u:dandan:w ../zizi
[root@localhost zizi]# touch abc.txt
[root@localhost zizi]# ls -l
total 0
-rw-rw-r--+ 1 root root 0 Mar 16 22:12 abc.txt
[root@localhost zizi]# getfacl abc.txt
# file: abc.txt
# owner: root
# group: root
user::rw-
user:dandan:-w-
group::r-x			#effective:r--
mask::rw-
other::r--

ACL高级用法==========> mask

设置mask命令如下

setfacl -m m:rw /opt/a.txt

设置完mask后,除了所有者和other不受影响,其他都会受到mask的影响,mask决定了他们的最⾼权 限)

mask值就像⼀个筛⼦,⽂件属主和other之外的所有权限都需要被它筛⼀遍,如果mask值为rw-则代表

该筛⼦只放⾏rw权限。本质原理是权限A需要与mask值B进⾏按位与运算,得到的结果才是effective有 效权限

建议:为了⽅便管理⽂件权限,其他⼈的权限置为空:chmod o=- /opt/a.txt

# ps:我们⼀般不更改 mask 权限,只要赋予 mask 最⼤权限(也就是 rwx),则给⽤户或群组
设定的 ACL 权限本身就是有效的。

二、⽂件权限管理:⽂件属性(权限)

[root@localhost ~]# touch /opt/{1..3}.txt
[root@localhost ~]# chmod 000 /opt/*
[root@localhost ~]# lsattr /opt/
---------------- /opt/1.txt
---------------- /opt/2.txt
---------------- /opt/3.txt
[root@localhost ~]# [root@localhost ~]# chattr +a /opt/1.txt # 允许追加内容
[root@localhost ~]# chattr +i /opt/2.txt # 禁⽌任何修改,有些病毒程序会对⽂件加
上该权限
[root@localhost ~]# chattr +A /opt/3.txt # 不更改⽂件访问时间
[root@localhost ~]# [root@localhost ~]# lsattr /opt/
-----a---------- /opt/1.txt
----i----------- /opt/2.txt
-------A-------- /opt/3.txt
# 验证
[root@localhost ~]# echo 111 >> /opt/1.txt
[root@localhost ~]# cat /opt/1.txt
111
[root@localhost ~]# rm -rf /opt/1.txt
rm: ⽆法删除"/opt/1.txt": 不允许的操作
 
# 去掉
[root@localhost ~]# chattr -a /opt/1.txt
[root@localhost ~]# chattr -i /opt/2.txt 
[root@localhost ~]# chattr -A /opt/3.txt

三、SUDO提取

用于普通用户提升权限的。

  • 相关的文件:/etc/sudoers
  • 检查/etc/sudoers
  • 检查配置是否正确:visudo -c
  • sudoers文件格式
tom       ALL=           (ALL)          ALL
用户名称   所有机器可登陆    所有IP或主机名   所有的指令

sudo提取部分管理员权限

特点:
 1、使⽤普通⽤户登录,然后sudo命令提取root⽤户的部分管理权限,注意只是某部分,⽽不是全
部。
 2、不需要切换到root账户下
 
优点:相对复杂
缺点:
 1、不需要知道root密码,输⼊的是⽤户⾃⼰的密码
 2、权限控制更为精细:可以控制普通⽤户只获取部分root权限
  • 指令编写格式
# 必须写全路径:which查看命令全路径

## 只支持vim命令提权
xianchen ALL=(ALL)  /usr/bin/vim

## 支持所有的命令提权
tom ALL=(ALL)  ALL

## 不支持某个命令提权
tom ALL=(ALL) ALL, !/usr/bin/vim

## 不支持某个命令的部分功能
xiaochen ALL=(ALL)   ALL, !/usr/bin/vim /root/123.txt

四、su切换

su切换⽤户身份

特点:使⽤普通⽤户登录,然后使⽤su命令切换到root账户下
优点:简单粗暴
缺点:
 1、需要知道root密码
 2、权限控制不精细:每次都是获取所有root权限

bash shell配置⽂件介绍(⽂件主要保存⽤户的⼯作环境)

全局配置⽂件:
 /etc/profile
 /etc/profile.d/*.sh
 /etc/bashrc
个⼈配置⽂件:
 ~/.bash_profile
 ~/.bashrc
profile类⽂件, 设定环境变量, 登陆前运⾏的脚本和命令。
bashrc类⽂件, 设定本地变量, 定义命令别名
PS: 如果全局配置和个⼈配置产⽣冲突,以个⼈配置为准。

配置⽂件的应⽤顺序

如果执⾏的是登录式shell,那么配置⽂件执⾏顺序是: /etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc
如果执⾏的是⾮登录式shell,那么配置⽂件执⾏顺序是:
~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh
PS: 验证使⽤echo在每⾏添加⼀个输出即可,注意,要把输出放在⽂件的第⼀⾏。

执⾏登录与⾮登录shell

# 执⾏登录shell:身份与环境都切换
su - ⽤户
# 执⾏⾮登录shell:只切换⽤户身份
su ⽤户
# 补充:
# 1、从root往普通⽤户下切换⽆需输⼊密码,反之则需要
# 2、切换身份执⾏命令:su - ⽤户 -c “命令”

su - xxx 和 su xxx之间区别

1、su - xxx :相当于切换一个窗口,su xxx 仅仅切换了用户

2、su - xxx : 切换用户执行的系统文件要多于 su xxx

3、su - xxx 是登录
   su  xxx  切换用户
posted @ 2021-03-16 18:14  小绵  阅读(181)  评论(0编辑  收藏  举报