011 文件管理高级(ACL、SU、SUDO)

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当中。
原文地址:https://www.cnblogs.com/zhaokunhao/p/14545227.html