高级权限
⼀ 、⽂件权限管理: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 切换用户