ACL
ACL是为了解决某种特殊环境下的,用户权限需求。
- setfacl : 设置acl权限
- getfacl :查看ACL权限
acl权限归属
- u : 指定用户
- g : 指定组
- o : 修改其他用户权限
- m : 指定mask权限
注:默认情况下,ACL权限跟普通权限保持一致。
基本用法
修改属主的权限
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权限
创建案例
-
1、创建文件
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 xiaozhang [root@localhost xiaochen]# setfacl -m u:xiaozhang: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 - xiaozhang [xiaozhang@localhost ~]$ cat /root/xiaochen/abc.txt 111
mask
[root@jichu ~]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::---
user:test:rw- #effective:r--
group::---
mask::r--
other::---
这里查看a.txt的时候,旁边多了一个#effective:r--,这里代表着,即使用户权限再高,最高的权限只有r,因为由mask控制着。
除了所有者和other不受影响,其他都会受到mask的影响,mask决定了他们的最⾼权限)
ps:我们⼀般不更改 mask 权限,只要赋予 mask 最⼤权限(也就是 rwx),则给⽤户或群组设定的 ACL 权限本身就是有效的。
default:继承(默认)
默认情况下,ACL是不会继承上层目录的权限的,只有目录设置可以继承子集文件才可以继承ACL权限
[root@localhost linux12]# setfacl -m d:u:xiaochen:w ../linux12
[root@localhost linux12]# touch bcd.txt
[root@localhost linux12]# ls -l
total 0
-rw-r--r-- 1 root root 0 Mar 16 15:40 abc.txt
-rw-rw-r--+ 1 root root 0 Mar 16 15:43 bcd.txt
[root@localhost linux12]# getfacl bcd.txt
# file: bcd.txt
# owner: root
# group: root
user::rw-
user:xiaochen:-w-
group::r-x #effective:r--
mask::rw-
other::r--
文件属性(权限)
[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或主机名 所有的指令
-
指令编写格式
# 必须写全路径: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 - xxx 和 su xxx之间区别
1、su - xxx :相当于切换一个窗口,su xxx 仅仅切换了用户 2、su - xxx : 切换用户执行的系统文件要多于 su xxx 3、su - xxx 是登录 su xxx 切换用户
-
Linux中的shell可以分为两类
登陆shell,需要输⼊⽤户名和密码才能进⼊Shell,⽇常接触的最多的⼀种
⾮登陆shell,不需要输⼊⽤户和密码就能进⼊Shell,⽐如运⾏bash会开启⼀个新的会话窗⼝
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在每⾏添加⼀个输出即可,注意,要把输出放在⽂件的第⼀⾏。如果说要写登录执行脚本,可以配置在/.bashrc当中。