美文网首页
Linux的文件权限

Linux的文件权限

作者: 韧心222 | 来源:发表于2020-04-02 16:46 被阅读0次

    参考《Linux就该这么学》《Linux就是这个范》《鸟哥的Linux私房菜》

    Linux的文件权限大致可以分为4类,分别是:

    • 普通权限
    • 特殊权限
    • 隐藏属性
    • 访问控制列表(ACL)

    1. 普通权限

    普通权限就是最为常见的Linux的文件属性,使用命令ls -l就可以查看了,例如:

    普通权限

    其中第一个字符表示文件的类型,常见的包括:

    • -:普通文件
    • d:文件夹
    • l:链接文件
    • b:块设备
    • c:字符设备
    • p:管道文件

    后面的9个字符以三个为一组,分别表示文件所有者、文件所有组和其他人的“读”、“写”、“可执行”权限,分别以rwx表示。对于文件而言,这三种权限比较明确,但是对于文件夹而言,其含义略有不同:

    • r:表示能够读取文件夹内文件的列表
    • w:表示能够在文件夹内新增、删除和重命名文件
    • x:表示能够进入该目录
      除了使用rwx来表示外,还可以用数字来表示,rwx对应于数字421,在上图中每个文件对应的普通权限分别为:600、755、755、755...

    2. 特殊权限

    在Linux有三种特殊权限,可以为Linux提供更加方便的文件管理,分别为SUID、SGID以及SBIT

    2.1 SUID

    SUID是让程序的执行者临时拥有程序执行者的权限,如果具备该权限,会将第一组rwx的最后一位变成sS,其中:

    • s:表示该文件具备x权限
    • S:表示该文件不具备X权限
      可以
    • 用命令chmod -R u+s <path>来赋权
    • 用命令chmod -R u-s <path>来除权

    2.2 SGID

    SGID的作用有两个:

    • 让文件的执行者临时拥有文件所属组的权限(对于可执行文件)
    • 让文件夹中的创建的文件自动继承该目录的用户组(对于文件夹)

    如果具备该权限,会将第二组rwx中的最后一位变成s或者S,其中:

    • s:表示该文件具备x权限
    • S:表示该文件不具备X权限

    可以

    • 用命令chmod -R g+s <path>来赋权
    • 用命令chmod -R g-s <path>来除权

    2.3 SBIT

    对一个文件夹设置了SBIT后,会使得该文件夹中的所有文件只能被拥有者所删除。

    如果具备该权限,会将第三组rwx中的最后一位变成t或者T,其中:

    • t:表示该文件具备x权限
    • T:表示该文件不具备X权限

    可以

    • 用命令chmod -R o+t <path>来赋权
    • 用命令chmod -R o-t <path>来除权

    对于使用了特殊权限的文件而言,可以使用四位数字来表示,其中第一位表示SUID(4)、SGID(2)与SBIT(1)的和

    3. 隐藏属性

    文件的隐藏属性可以使用lsattr命令来查看,隐藏属性主要包括:

    • i:无法对文件进行修改;如果文件夹具备该属性,则只能修改其中子文件夹的内容,不能新建或删除文件
    • a:仅允许追加文件内容,无法覆盖和删除(对于日志文件比较好)
    • S:文件内容更新后,会立即同步到硬盘
    • s:彻底从硬盘中删除(磁盘充零)
    • A:不再修改这个文件或文件夹的最后访问时间(atime,我猜是access time)
    • b:不再修改这个文件或文件夹的存取时间
    • D:检查压缩文件中的错误
    • d:使用dump命令备份时忽略本文件或文件夹
    • c:默认将文件或文件夹进行压缩
    • u:当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
    • t:让文件系统支持尾部合并(tail-merging)
    • X:可以直接访问压缩文件中的内容

    要想查看文件的隐藏属性,可以使用命令lsattr,要修改隐藏属性,可以使用chattr命令

    4. 文件访问控制列表

    • 如果针对某个文件夹设置了ACL,则文件夹中的文件都会继承其ACL
    • 如果针对某个文件设置了ACL,则问价不再继承其所在目录的ACL

    要想查看一个文件的ACL信息,可以使用命令

    getfacl <path>
    

    要想给一个文件/文件夹设置ACL,则需要使用命令

    setfacl [参数] <path>
    

    setfacl常用的参数包括:

    • -m 更改文件的访问控制列表
    • -b 删除访问控制列表
    • -R 递归操作子目录

    例如:

    setfacl -Rm u:linuxprob:rw- /root/anaconda-ks.cfg
    

    可以为用户linuxprob对文件anaconda-ks.cfg添加读写的权限

    setfacl -Rm g:linuxprob:r-x /root/anaconda-ks.cfg
    

    可以为用户组linuxprob添加写和可操作的权限

    如果一个文件被设置了ACL,那么在执行ls命令后则会看见普通权限后的原点变成了一个+

    image.png

    相关文章

      网友评论

          本文标题:Linux的文件权限

          本文链接:https://www.haomeiwen.com/subject/gpotphtx.html