Linux文件权限

Linux文件权限– 1.0

Linux上文件所有权和权限的基础知识。 了解谁是文件或目录的所有者,文件权限如何工作以及如何查看它们,以及了解如何自己设置基本文件权限。

权限和所有权–为什么? >

如果您无法在自己的Linux系统上访问某些文件,通常是由于文件访问权限配置错误。 如果您是Linux机器上的唯一用户,您可能想知道拥有所有这些权限(或缺乏权限)限制了您对自己的企鹅OS的访问的意义。 但是,在放弃之前,必须记住Linux被设计为多用户环境。 在一个有多个用户的环境中,至关重要的是拥有一个安全的系统来确定哪些文件是您的文件以及哪些人可以摆弄它们。

即使您是普通台式机系统上的唯一用户,文件权限也有助于确保重要文件的安全,免受外部人员和您自己的错误的影响。 🙂

 

了解文件所有权 >

Linux系统上的每个文件(包括目录)都归特定用户和组所有。 因此,文件权限是为用户,组和其他人单独定义的。

用户: 拥有该文件的人的用户名。 默认情况下,创建文件的用户将成为其所有者。

组: 拥有文件的用户组。 属于拥有该文件的组的所有用户都将对该文件具有相同的访问权限。 例如,如果您有一个项目需要一群不同的用户才能访问某些文件,而其他用户则不能,则此功能很有用。 在这种情况下,您会将所有用户添加到同一组中,确保所需的文件归该组所有,并相应地设置文件的组权限。

其他: 不是文件所有者且不属于该文件所属组的用户。 换句话说,如果您为“其他”类别设置权限,则默认情况下它将影响其他所有人。 因此,人们通常会在设置“其他”权限时谈论设置“世界”权限位。

 

了解文件权限 >

在Linux上,共有三种访问权限:读取,写入和执行。 这些权限是分别为文件的所有者,组和所有其他用户定义的。

阅读权限。 在常规文件上,读取权限位表示可以打开和读取文件。 在目录上,读取权限意味着您可以列出目录的内容。

写权限。 在常规文件上,这意味着您可以修改文件,也可以将新数据写入文件。 对于目录,具有写许可权意味着您可以在目录中添加,删除和重命名文件。 这意味着,如果文件具有写许可权位,则可以修改文件的内容,但只有在文件的许可权允许的情况下,才可以重命名或删除文件。 目录 允许你这样做。

执行权限。 对于常规文件,这意味着您可以将其作为程序或Shell脚本执行。 在目录上,执行权限(也称为“搜索位”)使您可以访问目录中的文件并使用以下命令输入文件: cd 命令。 但是,请注意,尽管执行位允许您输入目录,但是除非您还具有对该目录的读取权限,否则不允许列出其内容。

 

如何查看文件权限 >

您可以通过执行长目录列表来查看文件的访问权限 ls -l 命令。 这就是长目录列表的样子:

me@puter: /home/writers$ ls -l
total 17
drwxr-xr-x 3 nana writers 80 2005-09-20 21:37 dir
-rw-r----- 1 nana writers 8187 2005-09-19 13:35 file
-rwxr-xr-x 1 nana writers 10348 2005-07-17 20:31 otherfile

什么输出 ls -l 意思? 第一列看起来像一堆小东西,它显示了文件类型和权限。 第二列显示链接数(引用文件的目录条目),第三列显示文件的所有者,第四列显示文件所属的组。 其他列显示文件的大小(字节),上次修改的日期和时间以及文件名。

第一列显示文件的权限,看起来像是巨型组合,它分为四个独立的组,尽管看起来并没有那么组织。

第一组仅包含一个字符,它显示文件的类型。 例如, d 表示目录和 - 表示一个普通文件,因此,如果查看我们的示例输出,您会注意到 dir 是一个目录,而 file 和 otherfile 是常规文件。

第一个字符可以是以下任何一个:

d =目录
 =常规文件
l =符号链接
s = Unix域套接字
p =命名管道
c =字符设备文件
b =块设备文件

接下来的九个字符显示文件的权限,分为三组,每组由三个字符组成。 第一组三个字符显示对以下文件的读取,写入和执行权限 用户,文件的所有者。 下一组显示了读取,写入和执行权限  的文件。 同样,最后一组三个字符显示了权限 other, 其他所有人。 在每个组中,第一个字符表示读取权限,第二个字符表示写入权限,第三个字符表示执行权限。

人物很容易记住。

r =读取权限
w =写入权限
x =执行权限
 =没有许可

在实践中这意味着什么? 让我们举个例子。 还记得我们一开始做的假想目录清单吗? 输出看起来像这样:

drwxr-xr-x 3 nana writers 80 2005-09-20 21:37 dir
-rw-r----- 1 nana writers 8187 2005-09-19 13:35 file
-rwxr-xr-x 1 nana writers 10348 2005-07-17 20:31 otherfile

我们已经注意到了, dir 是一个目录,因为第一列以a开头 d。 该目录的所有者是用户 nana 而团体所有者是 writers。 前三个字符, rwx,指示目录的所有者, nana 在这种情况下,可以完全访问该目录。 用户 nana 能够访问,查看和修改该目录中的文件。 接下来的三个字符, r-x,表示属于组的所有用户 writers 具有对该目录的读取和执行权限。 他们可以切换到目录,执行文件并查看其内容。 但是,由于他们没有写权限,因此无法对目录内容进行任何更改。 最后,最后三个字符, r-x,表明所有用户都没有 nana 或不属于组 writers,在目录中具有读取和执行权限。

怎么样 file? 因为第一列以a开头 -,该文件是一个常规文件,由用户拥有 nana 和组 writers,就像我们示例中的目录一样。 前三个字符, rw-,表明所有者对该文件具有读写权限。 根据接下来的三个字符, r--,属于组的用户 writers 可以查看文件但不能修改或执行它。 最后三个字符, ---,表示没有其他人有权访问该文件。

同样,你可以看到 otherfile 是一个常规文件,它的所有者拥有对它的完全访问权限,而其他所有人都可以读取和执行该文件但不能修改它。

 

如何设置文件权限–符号模式 >

您可以使用。设置文件权限 chmod 命令。 root用户和文件所有者都可以设置文件权限。 chmod 有两种模式,符号和数字。

符号模式很容易记住。 首先,您决定是否为用户(u),组(g),其他(o)或所有三个(a)设置权限。 然后,您添加一个权限(+),将其删除(-),或者清除以前的权限并添加一个新的权限(=)。 接下来,决定是否设置读取权限(r),写入权限(w)或执行权限(x)。 最后,你会告诉 chmod 您要更改哪个文件的权限。

让我们举几个例子。 假设我们有一个名为 testfile,该文件具有所有组的完全访问权限(长目录列表将显示 -rwxrwxrwx 作为文件的权限)。

擦除所有权限,但为每个人添加读取权限:
chmod a=r testfile
命令后,文件的权限为 -r--r--r--

为组添加执行权限:
chmod g+x testfile
现在,文件的权限为 -r--r-xr--

为文件所有者添加写和执行权限。 请注意如何同时设置多个权限:
chmod u+wx testfile
在此之后,文件权限将是 -rwxr-xr--

从文件的所有者和组中删除执行权限。 再次注意,如何同时设置它们:
chmod ug-x testfile
现在,权限是 -rw-r--r--

总结一下,请看一下这个在符号模式下设置文件权限的快速参考:

哪个用户?
u 用户/所有者
g
o other
a 所有
怎么办呢?
+ 添加此权限
删除此权限
= 准确设置此权限
哪个权限?
r
w
x 执行

 

如何设置文件权限–数字模式 >

另一种模式 chmod 可以使用的是数字模式。 在数字模式下,文件权限不以字符表示。 而是由三位数的八进制数字表示。

=读(r)
2 =写(w)
1 =执行(x)
0 =没有权限( - )

要获取所需的权限位,请相应地将数字相加。 例如,rwx权限将为4 + 2 + 1 = 7,rx将为4 + 1 = 5,而rw将为4 + 2 = 6。 由于您为所有者,组和其他人设置了单独的权限,因此需要一个三位数字代表所有这些组的权限。

让我们举个例子。
chmod 755 testfile
这会改变 testfile的权限 -rwxr-xr-x。 所有者将拥有完整的读取,写入和执行权限(7 = 4 + 2 + 1),该组具有读取和执行权限(5 = 4 + 1),并且世界也具有读取和执行权限。

再举一个例子:
chmod 640 testfile
在这种情况下, testfile的权限为 -rw-r-----。 所有者将具有读取和写入权限(6 = 4 + 2),该组将仅具有读取权限(4),而其他人将没有任何访问权限(0)。

数字模式可能不像符号模式那么简单,但使用数字模式,您可以更快速有效地设置文件权限。 在数字模式下设置文件权限的快速参考可能有所帮助:

哪个数字?
0 -
1 -X
2 -W-
3 -wx
4 r-
5 RX
6 RW
7 RWX