目录
00.前言
01.文件访问者的分类
02.文件类型和访问权限
文件类型:
文件基本权限:
03.文件权限值的表示方法
04.访问权限的设置
(1)chmod
(2)chown
(3)chgrp
(4)umask
05.目录的权限
粘滞位
总结
00.前言
在生活中,所有的个人财产都有它们各自的所有权人,非所有权人想要使用其个人财产需要征得所有权人的同意,就好比小时候我们借同桌的一块橡皮,需要征得他的同意才行,不然可能就会产生矛盾[doge]。
linux下面的一切文件也是如此,所有文件都有各自的权限,其权限由访问者和访问权限构成。
root 就是文件的访问者,访问者有不同类型,所以这里显示了两类访问者。
-rw-r--r-- 就是文件的访问权限,下面会解释。
01.文件访问者的分类
-
文件和文件目录的所有者:
- 符号表示为
u
,代表User(用户),也就是文件或目录的创建者或所有者。 - 在中国的法律问题中,通常会涉及到文件或目录的所有者,即文件的创建者或拥有者。所有者拥有对文件或目录的完全控制权限,可以对其进行读取、写入和执行等操作。
- 符号表示为
-
文件和文件目录的所有者所在的组的用户:
- 符号表示为
g
,代表Group(用户组),即文件或目录的所有者所属的用户组。 - 在中国的法律问题中,这一概念通常用于讨论文件或目录的共享和访问权限。文件的所有者可以选择与哪些用户共享文件,通过设置适当的用户组权限来控制访问。
- 符号表示为
-
其它用户:
- 符号表示为
o
,代表Others(其他用户),即除了文件的所有者和所属用户组之外的所有用户。 - 在中国的法律问题中,这一概念通常用于讨论文件或目录的公共访问权限。通过设置适当的其他用户权限,可以控制其他用户对文件或目录的访问权限,以保护文件的安全性和隐私。
- 符号表示为
02.文件类型和访问权限
如图:
下面我们来一一解释:
-
文件类型:
- 在 Linux 中,每个文件都有一个文件类型,文件类型通常由文件的第一个字符表示。
- 常见的文件类型包括:
-
:普通文件。d
:目录。l
:符号链接(软链接)。c
:字符设备文件。b
:块设备文件。p
:命名管道(FIFO)。s
:套接字(Socket)。
-
文件基本权限:
- 文件基本权限是指文件或目录的基本访问权限,通常由 9 个字符组成,分为 3 组,每组 3 个字符,分别表示文件的所有者、用户组和其他用户的权限。
- 每个权限字符的含义如下:
r
:读权限,表示允许读取文件内容。w
:写权限,表示允许修改或删除文件内容。x
:执行权限,对于普通文件表示允许执行文件,对于目录表示允许进入目录。-
:表示缺少对应的权限。
例如,文件权限为
-rw-r--r--
表示文件的所有者具有读写权限,用户组和其他用户只有读权限。
下面举个例子让我们更好理解:我有一块橡皮,我现在拿它擦字,它的访问者就是所有者我,它的访问权限是可以随意使用,我可以拿它擦铅笔字,也可以对它进行破坏。我同桌向我借走了这块橡皮去用,此时访问者变成了其他人,我告诉他只能用来擦铅笔字,其访问权限就仅限于擦字。
03.文件权限值的表示方法
下面用一张图来表示:
所以前一张图中
表示文件所有者可读可写可执行,文件所属用户组可读可执行但不可写,其他用户也是可读可执行但不可写。
04.访问权限的设置
(1)chmod
chmod
命令说明:
- 功能: 设置文件的访问权限
- 格式:
chmod [参数] 权限 文件名
- 常用选项:
-R
:递归修改目录文件的权限
符号模式说明:
-
用户符号:
u
:文件拥有者(User)g
:文件拥有者所在的用户组(Group)o
:其他用户(Others)a
:所有用户(All)
-
权限操作符:
+
:增加权限-
:取消权限=
:设置权限
-
权限字符:
r
:读权限(Read)w
:写权限(Write)x
:执行权限(Execute)
实例:
+
:向权限范围增加权限代号所表示的权限-
:向权限范围取消权限代号所表示的权限=
:向权限范围赋予权限代号所表示的权限
示例用法:
chmod u+r file.txt
:给文件的拥有者添加读权限chmod g-w file.txt
:取消文件所属用户组的写权限chmod o=x file.txt
:设置其他用户的执行权限chmod a=rwx file.txt
:给所有用户设置读、写、执行权限chmod 664 file.txt
:给文件的拥有者以及所属用户组添加读、写权限;给其他用户添加读权限chmod 640 file.txt
:给文件的拥有者添加读、写权限;给文件所属用户组添加读权限;其他用户不添加任何权限
(2)chown
chown
命令说明:
- 功能: 更改文件或目录的所有者和/或用户组
- 格式:
chown [参数] 用户名[:用户组] 文件名
- 常用选项:
-R
:递归更改目录及其子目录中所有文件的所有者和/或用户组
示例用法:
chown user1 file.txt
:将文件file.txt
的所有者更改为user1
chown user2:group1 file.txt
:将文件file.txt
的所有者更改为user2
,用户组更改为group1
chown -R user3 directory/
:递归地将目录directory/
及其子目录中所有文件的所有者更改为user3
注意事项:
- 只有文件的所有者和
root
用户可以更改文件的所有者和用户组。 - 如果省略了用户组,则文件的用户组不会更改。
-R
选项用于递归地更改目录及其子目录中所有文件的所有者和/或用户组。
(3)chgrp
chgrp
命令说明:
- 功能: 更改文件或目录的用户组
- 格式:
chgrp [参数] 用户组 文件名
- 常用选项:
-R
:递归更改目录及其子目录中所有文件的用户组
示例用法:
chgrp group1 file.txt
:将文件file.txt
的用户组更改为group1
chgrp -R group2 directory/
:递归地将目录directory/
及其子目录中所有文件的用户组更改为group2
注意事项:
- 只有文件的所有者和
root
用户可以更改文件的用户组。 -R
选项用于递归地更改目录及其子目录中所有文件的用户组。
(4)umask
umask
命令说明:
- 功能: 设置新建文件的默认权限掩码
- 格式:
umask [参数] [权限掩码]
示例用法:
umask
:显示当前的权限掩码umask 022
:设置新建文件的默认权限掩码为022
umask -S
:以符号模式显示当前的权限掩码umask -p
:以八进制数模式显示当前的权限掩码
说明:
umask
命令用于设置新建文件的默认权限掩码,它决定了新文件创建时的默认权限。- 权限掩码是一个八进制数字,表示了要屏蔽的权限位。例如,权限掩码
022
表示屏蔽了组和其他用户的写权限。 - 可以使用
-S
选项以符号模式显示权限掩码,或使用-p
选项以八进制数模式显示权限掩码。
05.目录的权限
-
目录权限基本概念:
- 目录权限与文件权限类似,也是由读、写、执行三种基本权限组成,用来控制用户对目录的访问和操作权限。
- 读权限:允许用户列出目录中的文件名。
- 写权限:允许用户在目录中创建、删除和重命名文件。
- 执行权限:允许用户进入目录,访问其内容。
-
目录的基本权限设置:
- 使用
chmod
命令可以设置目录的权限,与设置文件权限类似。 - 例如,
chmod 755 directory
可以将目录directory
的权限设置为rwxr-xr-x
,允许所有者读、写、执行,允许用户组和其他用户读、执行。
- 使用
下面举个例子,如果有一个共享目录,A用户在里面写了一个文件,并设置除所有者外的用户只能读不能写不能执行,其目的是不想让其他用户修改甚至删除自己写的文件,可是如此一来,B用户具有这个目录的写权限,那么他是不是就可以删除这个目录中的文件,而不用管是否具有这个文件的写权限了吗,这合理吗,显然不合理,为此Linux引入了粘滞位的概念。
粘滞位
粘滞位是一种特殊的文件权限,它通常用于目录上,对于目录上设置了粘滞位的情况,只有文件的所有者、目录的所有者或者管理员才能够删除该目录中的文件。
-
粘滞位的作用:
- 粘滞位通常用于目录中,它确保只有文件的所有者、目录的所有者或者管理员才能够删除目录中的文件。
- 在具有粘滞位的目录中,即使其他用户有删除文件的权限,但他们也不能删除不属于自己的文件。
-
粘滞位的设置:
- 在 Linux 中,使用
chmod
命令可以设置粘滞位。 - 对于目录,粘滞位通常是通过在权限模式的末尾添加一个
t
来设置的。例如,chmod +t directory
可以为目录directory
设置粘滞位。 - 使用数字模式时,粘滞位的权限位表示为数字中的最后一位。例如,
chmod 1755 directory
中的1
表示粘滞位。
- 在 Linux 中,使用
-
粘滞位的显示:
- 在文件列表中,具有粘滞位的目录将在权限列表中显示一个小写字母
t
。 - 如果目录没有设置粘滞位,则显示一个大写字母
T
。
- 在文件列表中,具有粘滞位的目录将在权限列表中显示一个小写字母
总结
- 目录的可执行权限 (
x
) 决定了用户是否可以在该目录下执行命令或者进入该目录。 - 如果目录没有可执行权限 (
-x
),即使具有读权限 (r
),用户也无法在目录下执行任何命令,甚至无法通过cd
命令进入该目录。 - 如果目录具有可执行权限 (
x
),但没有读权限 (r
),用户仍然可以通过cd
命令进入目录,但是由于没有读权限,无法查看目录中的文件列表。 - 即使用户可以执行
ls
命令,但由于没有读权限,仍然无法读取目录中的文件。 - 有时候容易混淆可执行权限和读权限的作用,但只有具有可执行权限的目录才允许用户进入该目录,而读权限仅允许用户查看目录中的文件列表。