• Linux 文件权限


    目录

    一、文件的一般权限

    1、针对三类对象进行定义

    2、针对每类访问者定义了三种主要权限

    二、修改权限

    1、修改文件或目录的权限 chmod

    2、对文件和目录来说,rwx有着不同的作用和含义

    1)对文件:无意义权限 -wx -w-

    2)对文件夹:无意义权限 rw- -w-

    3、修改文件或目录的属主和属组

    1)修改文件或目录的所属者

    2)修改文件或目录的属组

    三、ACL权限

    四、文件和目录的特殊权限

    1、SUID -- 让普通用户临时获取root权限

    2、SGID -- 共享目录权限

    3、Sticky Bit

    五、修改文件属性 chattr

    六、umask


    一、文件的一般权限

    1、针对三类对象进行定义

    • owner        属主(u)
    • group         属组(g)
    • other          其他(o)

    2、针对每类访问者定义了三种主要权限

    • r        Read 读
    • w       Write 写
    • x        eXecute 执行

    rwx = 111 = 7
    rw- = 110 = 6
    r-x  = 101 = 5
    r--   = 100 = 4

    注意:root账户不受文件权限的读写限制,执行权限受限制

    二、修改权限

    1、修改文件或目录的权限 chmod

            ——change mode

    格式:1)chmod [选项] [ugoa] [+-=] [rwx] 文件或目录...

            :2)chmod [选项] nnn 文件或目录

            ==>chmod [选项] 权限字 文件

    选项:-r :递归修改指定目录下所有文件、子目录的权限

    权限字:  

    • ugoa :表示权限设置所针对的用户类别,可以是其中字母中的一个或组合,u(user)表示文件或目 录的属主(所有者);g(group)表示属组内的用户;o(others)表示其他用户;a(all)表示所有用户(即 u+g+o)。
    • +或-或= :表示设置权限的操作动作,+代表添加某个权限;-代表取消某个权限;=表示只赋予给定 的权限,并取消原有的权限。
    • rwx :用字符形式表示的所设置的权限,可以是其中一个字母或组合。
    • nnn :用三位八进制数字表示的权限。

    第一种方式:

    第二种方式:

    2、对文件和目录来说,rwx有着不同的作用和含义

    1)对文件:无意义权限 -wx -w-

            (wx权限是建立在r权限之上,当用了r的权限时,wx的权限才有意义)

    2)对文件夹:无意义权限 rw- -w-

            (当文件具有x权限的时候w权限才有意义,对于文件夹来说 r--和rw-没有区别都是只能显示文件内容)

    3、修改文件或目录的属主和属组

    1)修改文件或目录的所属者

            格式chown [选项] 新属主[:[新数组]] 文件或目录

            选项-R 可递归设置指定目录下的全部文件(包括子目录和子目录中的文件)的所属关系。

    2)修改文件或目录的属组

            格式

                    1)chown [选项] :新属组 文件或目录……

                    2)chgrp [选项] 新属组 文件或目录……        (change group修改文件的组信息)

            ===>chown 用户:组 文件名

                     chown 用户.组 文件名

                     chown 用户 文件名 

                     chgrp 用户组 文件

            选项:-R        递归修改权限 

    三、ACL权限

            ——给指定的用户指定目录分配指定的权限

            查看ACL权限:getfacl 文件名

            设定ACL权限:setfacl [选项] [u:用户名:权限] 文件名

                    选项:

                            -m        添加扩展权限 【如setfacl -m u:redhat:rwx 123.txt】

                            -x         删除指定的ACL扩展权限

                            -b         清空所有的ACL扩展权限

                            -d         设定默认 ACL 权限 只对目录生效 指目录中新建立的文件拥有此默认权限

                            -k         删除默认ACL权限

                            -R        递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效

    1. #给用户和用户组添加ACL权限
    2. 给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名
    3. 给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名
    4. #通过加上选项 -R 递归设定文件的 ACL 权限,所有的子目录和子文件也会拥有相同的 ACL 权限
    5. setfacl -Rm u:用户名:权限 -R 文件名
    6. # 如果给父目录设定了默认的 ACL 权限,那么父目录中所有新建的子文件会继承父目录的 ACL 权限
    7. setfacl -m d:u:用户名:权限 文件名
    8. setfacl -md u:用户名:权限 文件名
    1. [root@localhost ~]# setfacl -m u:new_user:rwx a
    2. [root@localhost ~]# getfacl a
    3. # file: a
    4. # owner: root
    5. # group: root
    6. user::rw-
    7. user:new_user:rwx
    8. group::r--
    9. mask::rwx
    10. other::r--

    #删除指定用户的 ACL 权限

    setfacl -x u:用户名 文件名

    #删除指定用户组的 ACL 权限

    setfacl -x g:组名 文件名

    #删除文件的所有 ACL 权限

    setfacl -b 文件名 

    1. # 当会用-x删除扩展权限时,虽然权限已经删除掉了 但此时使用ll还能看到.的位置上是一个+,如果想要变回.则取消使用-b
    2. [root@localhost ~]# setfacl -x u:new_user a
    3. [root@localhost ~]# getfacl a

    四、文件和目录的特殊权限

    1、SUID -- 让普通用户临时获取root权限

    rws------.

    当设置了SUID权限到可执行文件上时,假如文件本身是rwx------.,此时就会变为rws------.

    当普通用户运行 u权限具有s的可执行文件时(即该程序的权限为-rwsr-xr-x.),普通户在程序的运行过程中临时具备root权限,所以普通户在运行passwd命令时可以,修改/etc/shadow文件

    1. #cat可执行文件本身全显示rwxr-xr-x,也就是说普通用户无法通过cat命令阅读权限不允许的文件
    2. #当使用suid将cat命令权限改为 rwsr-xr-x时,普通用户在使用cat时可以临时获取root权限,这时普通户可以阅读任何文件
    3. [root@localhost tmp]# chmod u+s /usr/bin/cat
    4. [root@localhost tmp]# ll /usr/bin/cat
    5. -rwsr-xr-x. 1 root root 36320 Jan 6 2023 /usr/bin/cat
    6. [root@localhost tmp]# cat 123.txt
    7. 123

    suid仅对二进制文件有效。

    在执行过程中,调用者会暂时获得该文件的所有者权限。

    该权限只在程序执行的过程中有效。

    2、SGID -- 共享目录权限

    SGID权限一般赋予给目录,任何用户管在该目录中创建新文件,这个新文件的属组都是拥有SGID这个目录的属组

    当设置了SGID权限到文件夹上时,假如文件夹本身是---rwx---.,此时就会变为---rws---.

    一般用于协同工作,共同在同一目录下进行文件管理。

    1. #任意用户创建的文件,该文件的属组本应属于该用户的基本组
    2. [qqqq@localhost tmp]$ mkdir qqqqDir
    3. [qqqq@localhost tmp]$ mkdir test
    4. [qqqq@localhost tmp]$ touch test/a
    5. [qqqq@localhost tmp]$ ll test/a
    6. -rw-r--r--. 1 qqqq qqqq 0 Sep 24 21:21 test/a
    7. #当目录具有SGID权限时,任何用户在该目录下创建新文件,文件的属组都会变为用户SGID权限的目录的属组。
    8. [qqqq@localhost tmp]$ chmod g+s qqqqDir/
    9. [qqqq@localhost tmp]$ chmod g=rws qqqqDir/
    10. [qqqq@localhost tmp]$ ll qqqqDir/ -d
    11. drwxrwSr-x. 2 qqqq qqqq 6 Sep 24 21:12 qqqqDir/
    12. [qqqq@localhost tmp]$ cd qqqqDir/
    13. [qqqq@localhost qqqqDir]$ touch a
    14. [qqqq@localhost qqqqDir]$ ll a
    15. -rw-r--r--. 1 qqqq qqqq 0 Sep 24 21:14 a

    3、Sticky Bit 粘滞位

    当设置了SBit权限到文件夹上时,假如文件夹本身是------rwx.,此时就会变为------rwt.

    但目录具有sbit权限时,在文件中的文件只能被文件的所有者删除

    1. #使用redhat创建个test目录 权限给满 这时任何人都可以在这个目录中删除任何文件
    2. [redhat@RHEL tmp]$ mkdir test
    3. [redhat@RHEL tmp]$ chmod 777 test/
    4. [redhat@RHEL tmp]$ ll test/ -d
    5. drwxrwxrwx. 2 redhat redhat 6 Sep 24 11:55 test/
    6. [redhat@RHEL tmp]$ touch test/a
    7. #此时普通用户还可以删除其他用户的文件
    8. [caixukun@RHEL test]$ rm -rf a
    9. #当设置了粘滞位sticky bit权限后,普通用户只能删除自己的文件,别人不可以。
    10. [redhat@RHEL tmp]$ chmod a=rwxrwxrwt test/
    11. [redhat@RHEL tmp]$ ll test/ -d
    12. drwxrwxrwt. 2 redhat redhat 6 Sep 24 11:56 test/
    13. [redhat@RHEL tmp]$ touch test/a
    14. #此时普通用户就不可以删除其他人的文件了
    15. [caixukun@RHEL test]$ rm -rf a
    16. rm: cannot remove 'a': Operation not permitted

    为文件或目录添加三种特殊权限同样可以通过chmod命令来实施,使用“u±s”、“g±s”、“o±t”的字符权限模 式分别用于添加和移除SUID、GUID、sticky权限。

    若使用数字形式的权限模式,可采用“nnnn”格式的四位八进制数字表示,其中:后面三位是一般权限的数 字表示,前面第一位则是特殊权限的标志数字:

    0——表示不设置特殊权限

    1——表示只设置sticky

    2——表示只设置GUID权限

    3——表示只设置SGID和sticky权限

    4——表示只设置SUID权限

    5——表示只设置SUID和sticky权限

    6——表示只设置SUID和SGID

    7——表示同时设置SUID、GUID、sticky3种权限

    五、修改文件属性 chattr

            ——change attribute

            格式:chattr [选项] 文件名

            选项:

                  +a 不可修改 -a拿掉不可修改的属性(root不可以删)

                  +i 表示只读 -i取消只读

                  +d 不可删除 -d取消不可删除(root可以删)

    六、umask

            ——权限掩码

            权限掩码直接影响到新建文件的权限

            新建文件的权限时 666 = rw-rw-rw-

    ​                                      666 - 权限掩码 rw-r--r--

            新建目录的默认权限=0777-umask值

    1. [root@localhost ~]# umask //查看当前用户的umask权限
    2. 0022
    3. #临时赋予权限掩码
    4. [root@RHEL tmp]# umask 000
    5. #永久性质的权限掩码设置 可以在.bashrc .bash_profile 添加 umask 000
    6. [root@localhost ~]# vim .bashrc
    7. #重新加载配置
    8. [root@localhost ~]# source .bashrc
    9. 另一种方式:
    10. #修改shell umask值(永久)
    11. [root@localhost ~]# vim /etc/profile
    12. if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    13. umask 002
    14. else
    15. umask 022
    16. fi
    17. [root@localhost ~]# source /etc/profile //立即在当前shell中生效

    1. # 在/etc/login.defs中记录权限掩码等系统配置(轻易不要修改)
    2. [root@localhost ~]# vim /etc/login.defs

     

  • 相关阅读:
    【PyTorch][chapter 20][李宏毅深度学习]【无监督学习][ GAN]【实战】
    卷积神经网络工作原理的直观理解
    Hadoop安装2
    OpenCV13-图像噪声:椒盐噪声和高斯噪声
    40道JAVA经典算法面试题(答案)
    P04 Navicat 15 安装使用
    从公司搭建的gitlab代码仓拉取代码失败问题
    第9.3关 指针与字符串
    【Kali安全渗透测试实践教程】第5章 漏洞利用
    猿创征文 |【STM32】I2C协议完成温湿度检测
  • 原文地址:https://blog.csdn.net/weixin_68256171/article/details/133231076