Linux文件权限详解:从入门到精通

发布于:2025-06-14 ⋅ 阅读:(15) ⋅ 点赞:(0)

前言

权限是什么?

本质:无非就是能做和不能做什么。

为什么要有权限呢?

目的:为了控制用户行为,防止发生错误。

1.权限的理解

在学习下面知识之前要先知道的一点是:linux下一切皆文件,对linux操作就是对文件进行操作

权限=角色+目标权限属性

角色:谁在操作(用户身份)

目标权限属性:操作对象(文件/目录)本身被设置了什么样的访问规则。

在linux中角色分为三种:

拥有者创建的这个文件,也就是这个文件/目录的所有者。

所属组:类似于除拥有者之外还有一个小组的人共享这个文件。

other:除拥有者与所属组之外的用户。

当用户尝试访问一个文件/目录时,系统会首先判断该用户属于哪个“角色”

  1. 是文件的拥有者吗? → 适用 u 权限

  2. 不是拥有者,但在文件的所属组里 → 适用 权限

  3. 既不是所有者,也不在所属组里 → 适用 o 权限

注意:在centos下,系统只会进行一次角色判定,顺序是:拥有者,所属组,other。

目标权限属性:

在对文件进行操作时最常用无非就是读写操作,但是有些是可执行程序,还有个运行操作对应下面三种操作

r(read):读内容(对于普通文件)/列目录(对应目录文件使用ls等列出该目录下的内容(文件))

w(write):修改内容(普通文件)/在目录增删文件。

x(execute):运行程序(普通文件)/进入目录(目录文件)。

 - 代表没有该权限
对应下面code.c文件的权限信息为:
拥有者:有读文件和写文件的权限,没有运行该文件的权限
所属组:只有读文件的权限
other:只有读文件的权限

2.如何使用命令修改权限

2.1 chmod

作用:修改角色对文件的访问权限。

-:关闭权限

+:打开权限

chmod u-r code.c       # 对拥有者读该文件的权限关闭

格式:chmod + 【角色】+ 【+/-】+ 【访问权限】+ 对应文件名

了解了上面知识之后来理解下面几个知识点。

1.我们能改任何人的权限吗?

用户只能修改自己的文件权限。

 

2.如果我们要对没有对应文件的权限的文件进行操作会怎么样?

系统会拒绝让我们访问。

 

3.root用户可以无视权限对任何文件进行操作。

 

4.所有普通文件都有x权限,是不是所以文件都可以运行?

不是的,可执行权限!=文件可以执行

只有可运行的文件才能执行,比如被gcc/g++编译过的.c/.cpp文件。

2.2 chown

作用:修改文件的拥有者。

在默认情况下我们是不能将文件交给别人,想给别人,除非是root(超级用户)/高权限,上图展示是在是root用户下的操作。

格式: chown + 目标角色(用户)+ 文件名 

3.理解linux多用户下如何进行“隔离”

因为用户之间除自身可以进入自己的目录,其他角色都不能进入(除root)。

问题:

如果root在cqy目录内创建了一个文件,并将文件的other的权限全部关闭,对应cqy用户能对该文件进行删除吗?

 

可以的,一个文件能否被删除与文件本身没有关系,与文件所处目录的 w 权限有关。因为是在cqy目录下创建的文件,而我们对该文件拥有的权限全都有。

4.粘滞位

问题:

如果需要两个用户之间要进行文件级别的协作该怎么办?

1)不能将文件放入个人账户,因为不同用户之间是不能进入对方的工作目录的。

2)放入共享类文件,并且在该目录下创建的文件其他用户没有权限进行删除。

在根目录下有一个 tem 目录,可以看到该目录的下对 other 的权限是 rwt 这个 t 就是粘滞位,添加了粘滞位的目录,任何人都可以在共享目录下创建文件,在该目录下创建的文件除本人外其他用户不能进行删除。

注意:

1)共享文件只能创建在根目录下,根目录下的文件只有root可以进行访问,其他用户无法访问。

2)只能给需要共享的文件添加粘滞位。