Linux文件权限与归属(详解篇)

本文详细介绍了Linux系统中的文件权限,包括普通文件、目录文件等类型的区别,以及所有者、所有组和权限的设定。重点讲解了特殊权限如SUID、SGID和SBIT的用法,同时探讨了文件的隐藏属性以及如何使用chattr和lsattr命令。此外,还阐述了文件访问控制列表(ACL)的概念,如何通过setfacl和getfacl命令进行权限定制。

你们的关注、点赞是我更新的动力
在Linux系统中一切都是文件,但是文件的类型有多种,然而Linux系统使用了不同的字符来加以区分

  1. -:普通文件
  2. d:目录文件
  3. l:链接文件
  4. b:块设备文件
  5. c:字符设备文件
  6. p:管道文件
    每个文件都有所有者和所有组,并且规定了文件的所有者、所有组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限
    对一般文件来讲:
    “可读”:表示能够读取文件的实际内容
    “可写”:表示能够编辑、新增、修改、删除文件的实际内容
    “可执行”:表示能够运行一个脚本程序
    对目录来讲:
    “可读”表示能够读取目录内的文件列表
    “可写”表示能够在目录内新增、删除、重命名文件
    “可执行”:表示能够进入该目录
    文件的读、写、执行权限可以简写为rwx,亦可分别用数字4、2、1来表示,文件所有者,所属组以及其他用户权限之间无关联
    在这里插入图片描述

文件的一些特殊权限

这是一种对文件权限进行设置的特殊功能,可以与一般权限同时使用,以弥补一般权限不能实现的功能
1、SUID
在用户执行该程序时,用户的权限是该程序文件属主的权限。
在属主权限字段,rwx变成了rws,其中x改变成s就意味着该文件被赋予了SUID权限
在这里插入图片描述
例如程序文件的属主是root,那么执行该程序的用户就将暂时获得root账户的权限。
2、SGID
sgid与suid类似,只是执行程序时获得的是文件属组的权限。
在所属组权限字段,r变为了sr就被赋予了SGID权限
在这里插入图片描述
设置方法为:
chmod u+s filename (suid)
chmod g+s filename (sgid)

chmod和chown
chmod:能够用来设置文件或目录的权限,格式为“chmod【参数】 权限 文件或目录名称”
chown:能够用来设置所有者和所属组,格式为“chown 【参数】 所有者:所属组 文件或目录名称”
它们还有一个特别的共性,就是针对目录进行操作时需要加上大写参数-R来表示递归,即对目录内所有文件进行整体操作
SBIT
SBIT:特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。
和前面讲的SUID和SGID权限显示方法不同,当目录被设置为SBIT后,文件的其他人权限部分的x执行权限就会被替换成“t”或者T
原本有x则写出t,原本没有x,则写出T
在这里插入图片描述

文件的隐藏属性

除了前面讲的一般权限和特殊权限以外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉
chattr命令
chattr命令用于设置文件的隐藏权限,格式为“chattr 【参数】 文件”
把某个隐藏功能添加到文件上,需要在命令后面追加“+参数”
把某个隐藏文件移出文件,需要在命令后面追加“-参数”

参数作用
i无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a仅允许补充(追加)内容,无法覆盖/删除内容
S文件内容在变更后立即同步到硬盘(sync)
s彻底从硬盘中删除,不可恢复(用0填充源文件所在硬盘区域)
A不再修改这个文件或目录的最后访问时间
b不再修改文件或目录的存取时间
D检查压缩文件中的错误
d使用哦dump命令备份时忽略文本文件/目录
c默认将文件或目录进行压缩
u当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t让文件系统支持尾部合并
X可以直接访问压缩文件中的内容

实例
在这里插入图片描述
我们可以看到普通文件,而且还无法删除,充分表示了隐藏权限强大功能的美妙

lsattr命令
lsattr命令用于显示文件的隐藏权限,格式为“lsattr 【参数】 文件”
查看隐藏权限必须使用lsattr,平时使用的ls之类的命令看不出
在这里插入图片描述
在这里插入图片描述

文件访问控制列表

前面讲解的一般权限、特殊权限、隐藏权限其实都有一个共性——权限是针对某一类用户设置的。
如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表了
基于普通文件或目录设置了ACL,其实就是针对指定的用户或用户组设置文件或目录的操作权限,如果针对某个目录设置了ACL,则目录中的文件会继承其AC;
setfacl命令
setfacl命令用于管理文件的ACL规则,格式为“setfacl 【参数】 文件名称”
文件的ACL提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。
针对目录文件需要使用-R递归参数
针对普通文件则使用-m参数
删除某个文件的ACL可以使用-b参数
常用的ls命令是看不到ACL表信息的,但是却可以看到文件的权限最后有一个点(.)变成了(+),这就意味着该文件已经设置了ACL了。
getfacl命令
getfacl命令用于显示文件上设置的ACL信息,格式为“getfacl 文件名称”
不足之处,还望多多指点
关注我,与我同行
小白–技术大牛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值