Linux中文件的不同权限

本文详细解释了Linux文件权限的解读方法,包括文件类型标志、权限的二进制和八进制表示,以及特殊权限如粘着位(t)和setuid/setgid(s)的作用。还介绍了lsattr和chattr命令用于查看和管理文件权限的工具,以及不同文件系统的局限性。
摘要由CSDN通过智能技术生成

权限解释

在文件使用ll命令进行查看时,会有很多信息显示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中第一个字母,描述的是这个文件类型

参数含义
-文件
d目录
l链接,(类似于Windows中的快捷方式)
c字符型设备
b块设备
n网络设备

后面 三组三位的码

参数含义
r读取
w
x执行

三组码数量固定位置固定,如果没有该权限会显示为-

分别代表,|文件所有者权限|同组成员权限|其他用户权限|

那个777怎么来的

其是三位读写权限代表二进制数,而后转换成八进制来的

权限二进制八进制描述
0000没有任何权限
–x0011只有执行权限
-w-0102只有写入权限
-wx0113有写入与执行权限
r–1004只有读取权限
r-x1015有读取与执行权限
rw-1106有读取与写入权限
rwx1117有全部的权限

结合不同组,每一位代表不同的用户属性

例如777 权限即 所有的用户都有全部的权限。


特殊权限

t权限

在 Linux 中,文件权限中的 “t” 表示粘着位(sticky bit)。粘着位可以应用于目录或可执行文件。

当粘着位应用于目录时,它具有以下作用:

  1. 只有对目录有写权限的文件的所有者才能删除目录下的文件,即使其他用户对这些文件有写权限。
  2. 只有对目录有写权限的文件的所有者才能重命名目录下的文件,即使其他用户对这些文件有写权限。

通过设置粘着位,可以确保只有文件的所有者才能删除或重命名自己的文件,防止其他用户意外地删除或更改文件。

s权限

文件权限中的 “S” 表示特殊权限位(setuid/setgid)。

  1. setuid (S 或者 s):当 S 位设置在一个可执行文件的所有者权限上时,它意味着该文件在执行时将以拥有者的身份运行,即设置了该文件的有效用户ID为文件所有者的用户ID。大写的 “S” 表示文件的所有者没有执行权限,小写的 “s” 表示文件的所有者具有执行权限。
  2. setgid (S 或者 s):当 S 位设置在一个可执行文件的群组权限上时,它意味着该文件在执行时将以群组的身份运行,即设置了该文件的有效组ID为文件所属群组的群组ID。大写的 “S” 表示群组没有执行权限,小写的 “s” 表示群组具有执行权限。

设置 setuid 和 setgid 位主要是为了让普通用户在执行特定程序时暂时获得更高的权限。常见的例子是 /bin/passwd 命令,它允许普通用户更改自己的密码,但是需要 root 权限才能修改 /etc/shadow 文件。通过设置 passwd 命令的可执行文件的 setuid 位,普通用户可以在执行 passwd 命令时以 root 身份修改密码,而无需输入 root 密码。

其他特殊权限

#查看特殊权限
lsattr filename

#添加特殊权限
chattr [+/-][属性] 文件名

lsattr参数

参数解释
-R递归地列出目录及其内容的属性。
-V显示版本信息
-a列出目录中所有文件和目录,包括以".“为名称开头字符的额外内建,现行目录”.“与上层目录”…"
-d像列出其他文件一样列出目录,而不是列出它们的内容。
-v显示文件或目录版本。

chattr参数

只有root能够添加

参数含义
-R递归处理,将指定目录下的所有文件及子目录一并处理
-f抑制大多数错误消息。
-V详细描述chattr的输出并打印proqram版本。
-v设置文件活目录的版本。
可添加权限:
  • a:让文件或目录仅提供附加用途,只允许以追加方式读写文件
  • A:当文件被访问时,它的atime(访问时间)记录不会被修改。这为系统避免了一定数量的磁盘I/o。
  • c:将文件或目录压缩后存放。文件会被内核自动压缩到磁盘上。从这个文件读取未压缩的数据。对该文件的写入会在将日期存储到磁盘之前压缩它们。
  • C:属性设置为“C”的文件将不会copy-on-write(写时复制)。此属性仅在支持copy-on-write的文件系统上支持。
  • d:将目录排除在倾倒操作之外。
  • D:目录被修改时,这些修改被同步写入磁盘;这相当于应用于文件子集的“dirsync”挂载选项。
  • e:表示文件使用区段来映射磁盘上的块。不能使用chattr移除。
  • E:用来表示压缩文件有压缩错误。虽然可以用Isattr显示,但chttr不能设置或重置它。
  • h:表示文件以文件系统块大小为单位存储其块,而不是以扇区为单位,并表示该文件大于2TB。虽然可以通过Isattr显示,但chattr不能设置或重置
  • i:文件不能被修改:不能被删除或重命名,不能创建到该文件的链接,也不能向该文件写入数据。
  • I:文件或目录使用散列树对目录进行索引。不能使用chattr设置或重置它,但可以用lsattr显示。
  • j:如果文件系统是用data=ordered或data=writeback选项挂载的,那么带有“j”属性的文件在被写到文件本身之前,它的所有数据都被写到ext3或ext4日志中。当用“data-journal”选项挂载文件系统时,所有文件数据都已经被记录,这个属性没有作用。
  • N:表示该文件将数据内联存储在inode本身中。不能使用chattr来设置或重置,但可以通过lsattr来查看。
  • s:允许一个文件被安全地删除文件被删除时,它的块被归零并写回磁盘。
  • S:即时更新文件或目录。文件被修改时,这些修改将同步写入磁盘。
  • t:带有“t”属性的文件在与其他文件合并的文件末尾不会有部分块片段(对于那些支持tail-merging的文件系统)。这是
    对于像LILO这样直接读取文件系统且不支持tail-merging的文件的应用程序来说是必需的。
  • T:目录将被视为目录层次结构的顶部。这是给块分配器的一个提示由ext3和ext4使用,该目录下的子目录是不相关的,因此为了分配目的应该分散开来。
  • u:预防意外删除。若文件删除,系统会允许你在以后恢复这个被删除的文件
  • X:可以直接访问压缩文件的原始内容。不可以使用chattr重置或设置,可以使用lsattr显示。

局限性

ext2,ext3和ext4文件系统不支持’c’,'s’和’u’属性
在当前的主线Linux内核中实现。设置’a’和’i’属性将不会影响写入现有文件描述符的能力。
"j"选项仅对ext3和ext4文件系统有用。
"D"选项仅在Linux内核2.5.19及更高版本上有用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么都不会的小肆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值