• Linux权限管理


    1.ACL权限

    1.1ACL权限简介与开启

    所有者、所属组和其他人的权限不够用,专门为用户设定独立的权限

    #查看分区ACL权限是否开启

    dumpe2fs -h /dev/sda3

    如下图:蓝框就表示该分区具有acl权限

     #临时开启分区ACL权限

    mount -o remount,acl /        #重新挂载根分区,并加入acl权限#

    #永久开启ACL权限

    修改/etc/fsatb 在对应的分区options那一列加上【,acl】

    注意:ACL权限一般Linux都会默认开启,即不用设定

    1.2 查看与设定ACL权限

    #设定acl权限

    setfacl 选项 文件名

    -m        设定ACL权限

    -x         删除指定的ACL权限

    -b         删除所有的ACL权限

    -d         设定默认的ACL权限

    -k         删除默认的ACL权限

    -R        递归设定ACL权限

    例如:setfacl -m u:test:rx /project        #给用户st单独赋予rx权限

    setfacl -m g:group2:rx /project        #给组group2分配acl权限

    # 查看acl权限

    getfacle 文件名

     示例如下

     如图,对project目录设定acl权限后,权限一列后多了个+号,且getfacl查询,发现对test用户有单独的r和x权限,如红框所示。

    1.3最大有限权限与删除acl权限

    mask权限是用来指定最大有效权限的。如果给用户赋予了acl权限,需要与mask权限相“与”才能得到用户的真正权限。mask权限可通过getfacl查询,如上图中的mask一行。目的是防止给用户权限过高。

    #设定mask权限为rx

    setfacl -m m:rx 文件名

    #删除acl权限

     setfacl -x u:用户名 文件名        #删除指定用户的acl权限

    setfacl -b 文件名                       ##删除文件所有的acl权限

    1.4 默认ACL权限和递归ACL权限

    递归是父目录在设定ACL权限时,所有子文件和子目录也会拥有相同的acl权限。

    # 设定递归文件夹的acl权限

    setfacl -m u:用户名:权限 -R 文件夹            #加选项-R 

    默认是给文件夹设定默认的acl权限后,新建的子文件都会继承默认的acl权限

    #设定默认的acl权限

    setfacl -m d:u:用户名:权限 文件夹

    2.文件特殊权限

    2.1  SetUID

    SetUID功能:命令执行者在执行二进制程序时可以获取该程序的所有者身份,SetUID权限只在程序执行过程中有效

    例如:passwd命令就拥有SetUID权限,普通用户在执行passwd命令时就当root用户执行passwd

     如上图,所有者的可执行权限变为s,且文件标红色。

    #设定SetUID方法

    chmod 4755 可执行程序       #4代表SUID,第一位表示特殊权限,后面为所有者、所属组、其他人权限

    chmod u+s 可执行程序

    # 取消SUID权限

    chmod 755 可执行程序

    chmod u-s 可执行程序

    如下图,对abc文件设定和取消SUID权限

     

     注意:(1)一定要是可执行文件或者脚本;(2)命令执行者要对其有可执行权限,否则SUID权限增加不成功。

    2.2 SetGID

    SetGID功能:

    针对文件:

    命令执行者在执行程序时,组身份升级为该程序文件的属组,SetGID权限只在程序执行过程中有效,即组身份改变只在程序执行过程中有效。

    针对目录:

    普通用户必须对此目录有r和x权限,才能进入此目录;

    普通用户在此目录中的有效组会变成此目录的属组;

    若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组。

    #设定SetGID方法

    chmod 2755 可执行程序或目录      #2代表SGID

    chmod g+s 可执行程序或目录

    # 取消SUID权限

     chmod 755 可执行程序或目录

    chmod g-s 可执行程序或目录

    例如:

    在/tmp/test目录拥有SGID权限后, 用sc用户在/tmp/test目录中创建新文件,所属组本该是sc,但是由于SGID权限,创建后的新文件所属组是root。

    2.3 Sticky BIT

    粘着位作用:

    要求:仅对目录有效,且普通用户对此目录有w和x权限,即普通用户可以在此目录拥有写入权限;

    如果没有粘着位,普通用户拥有w权限,可以删除此目录下的所有文件,一旦有粘着位,只有root可以删除所有文件,普通用户只能删除自己建立的文件,但是不能删除其他用户建立的文件。

    例如:/tmp文件夹

     即在tmp目录下,只允许用户删除自己建立的文件。

    #设置粘着位权限

    chmod 1755 目录名       #1代表粘着位权限

    chmod o+t 目录名

     #取消SUID权限

    chmod 755 目录名

    chmod o-t 目录名

    3. 文件系统属性chattr权限

    #设置文件系统属性

    chattr [+-=] [选项] 文件或目录名

    i:如果对文件设置i属性,不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那只能修改目录下文件的数据,但不允许建立和删除文件

    a:如果对文件设置a属性,那只能在文件追加数据,但不能删除也不能修改数据;如果对目录设置a属性,那只能在目录中建立和修改文件,但是不允许删除

    注意:该命令对root用户也有效

     #查看文件系统属性

    lsattr 选项 文件名

    -a 显示所有文件和目录

    -d 若是目录,仅列出目录本身的属性

    例如:对abc文件设置i属性,设置完后不可写入数据,也不可能删除

    对test1文件夹设置i属性,设置后不可在test1文件夹内新建和删除文件,只能修改原有文件数据

    4.系统命令sudo权限

    #sudo使用

    visudo

    #实际修改的是/etc/sudoers文件         man 5 sudoers 可查询souders文档

    root                               ALL=(ALL)                                  ALL

    用户名    被管理主机的地址=(可使用的身份)    授权命令(绝对路径)

    例如:授权test用户可以重启

    则在root    ALL=(ALL)    ALL下增加

    test    ALL=/sbin/shutdown -r now

      #普通用户执行sudo赋予的命令

    sudo -l             #查看可用的sudo命令

    sudo /sbin/shutdown -r now        #普通用户执行sudo赋予的命令

    注意:命令格式要严格按照sudo + visudo中增加的/sbin/shutdown -r now命令格式,否则无法执行

  • 相关阅读:
    小程序游戏个性化制作,小程序游戏的特点?
    TSINGSEE青犀老旧小区升级改造AI+视频监控方案
    How to solve matplotlib Chinese garbled characters in Ubuntu 22.04
    医学影像坐标系问题(世界坐标系、解剖坐标系和图像坐标系)
    二次确认弹窗提示
    nginx配置https访问 生成ssl自签名证书,浏览器直接访问
    C++ //练习 15.7 定义一个类使其实现一种数量受限的折扣策略,具体策略是:当购买书籍的数量不超过一个给定的限量时享受折扣,如果购买量一旦超过了限量,则超出的部分将以原价销售。
    Spring Boot 2.x系列【9】功能篇之SpringApplication启动参数使用详解
    Springboot礼品商城系统设计与实现q92av计算机毕业设计-课程设计-期末作业-毕设程序代做
    设计模式-策略模式
  • 原文地址:https://blog.csdn.net/weixin_37552816/article/details/126868125