Linux是一个多用户操作系统,可以被许多用户同时访问。再加上Linux经常被用作服务器,对外提供服务。如果没有安全措施的话,恶意用户就有可能会破坏系统里的关键数据。

为了系统安全,Linux通过两个方面来控制用户对文件的访问:所有权和访问权限,我们先来看下所有权的概念。

Linux系统的文件所有权

Linux系统将可以访问文件或目录的用户分成了三类:

1. 文件所属用户

文件所属用户又被称为文件所有者。默认情况下,创建文件的用户就是文件的所有者。

2. 文件所属用户组

Linux中,一个用户组可以包含多个用户,你可以让组中的所有用户对某个文件都具有相同的访问权限。

假设你有一个文件,许多人都需要访问它,那么你只需将这些用户添加到相同的组,然后将文件所属组也设置到这个组,那么,这些用户就都可以访问该文件了。

3. 其他用户

既不是文件所有者,也不是文件所属用户组的所有其他用户,都被分配了一个相同的文件访问权限。

Linux系统针对这三类用户可以分别设置不同的访问权限,我们下面来看下文件访问权限的概念。

Linux系统的文件访问权限

Linux系统可以为文件所属用户,文件所属用户组,和其他用户分别设置以下3种访问权限:

读权限:对于文件,读权限可以让用户打开和读取文件内容。对于目录,读权限可以让你显示目录中包含的文件列表。

写权限:对于文件,写权限可以修改文件的内容。对于目录,写权限可以在目录中创建,删除,和重命名文件。如果你对某个文件具有写权限,但是对该文件所在的目录没有写权限的话,那么你只可以修改该文件的内容,却不能移动、删除或重命名该文件。

执行权限:在Windows系统中,以".exe"为扩展名的程序,直接就可以运行。但是在Linux系统中,只有给程序设置了执行权限,该程序才能被执行,如果某个程序文件没有被设置执行权限,那么你就只能读取和修改它(如果有读和写权限的话),但是却无法执行它。

上面提到过的文件所有权中的三类用户,都可以被分别设置这三种访问权限,如下图所示:

69be89dde94049adacf2aec6f0525f00.png

我们可以在命令行中使用"ls -l"命令来查看文件的访问权限信息:

ls -l

6d4cf80bb2d226857cf64b0540012523.png

上图中的"-rw-rw-r--"表明了文件的类型,以及不同所有权用户分别拥有的访问权限。

"-rw-rw-r--"开头的'-'表示该文件是一个普通的常规文件:

02fa00b62b27bb4ed0b8c09767f9a40e.png

如果是目录的话,这个位置就会显示字母'd':

43c93ec8bb40d046533fe4c87eb326aa.png

后面的rw-表示文件访问权限,这些r、w等表示的具体权限如下:

r  = 读权限

w = 写权限

x  = 执行权限

-  = 没有对应的权限

因此,"-rw-rw-r--"中的第一个"rw-"就表示文件的所有者只有读和写权限,没有执行权限('-'所在位是执行权限位,所以这里的'-'表示没有执行权限)。

8171e9b8d282407de7f97d345dc59d94.png

"-rw-rw-r--"中的第二个"rw-"表示文件所属用户组也只有读和写权限,没有执行权限。最后一个"r--"表示其他用户只有读权限,而没有写权限和执行权限。

e9da114790d0cbdc8cbbd850ad5f1f41.png

使用'chmod'命令修改文件或目录的访问权限

在Linux中,我们可以使用chmod命令,来修改或设置不同所有权用户的文件访问权限。chmod的命令格式如下:

chmod permissions filename

使用该命令设置权限,有两种使用方式:

使用数字方式

使用符号方式

使用数字方式

在这种方式下,文件权限不用字符来表示,而是用三位的八进制数来表示。

下表显示了八进制数和权限的对应关系:

八进制数

表示的权限

相应的权限符号

0

无权限

---

1

执行权限

--x

2

写权限

-w-

3

执行 + 写权限

-wx

4

读权限

r--

5

读 + 执行权限

r-x

6

读 + 写权限

rw-

7

读 + 写 + 执行权限

rwx

下面是这种数字方式的使用例子:

523b6b952ebbd88a564aeac61de139b4.png

上面我们将sample文件的访问权限修改为764,这几个数字对应的权限如下图所示:

0312adf732cc41b43f1c0f2a6e09a598.png

从上图中可以看到,764表示文件所有者具有读,写和执行权限,文件所属组只有读和写权限,而其他用户则只有读权限。

使用符号方式

前面的数字方式,适合一次设置所有的权限。如果你想针对某个所有权用户进行单独设置的话,就可以使用符号方式,符号方式下可以使用加、减等数学符号来增加或移除权限:

数学符号

描述

+

为文件或目录添加一个权限。

-

移除权限

=

直接设置新的权限,以覆盖掉旧的权限

这里设置权限可以针对某个所有权用户来执行,所有权用户也可以用相应的符号来表示:

所有权符号

对应的所有权用户

u

文件所有者

g

文件所属组

o

其他用户

a

所有用户

使用符号方式设置权限时,我们不再使用类似755这样的数字,而是使用rwx之类的权限符号,例如下面这个例子:

c9b91336846aa4408fa88c53aa46f3e1.png

修改文件所有者和文件所属组

要改变文件或目录的所有者,可以使用chown命令:

chown user

如果既想改变文件所有者,又想改变文件所属用户组,可以使用以下命令:

chown user:group filename

例如下面这个例子:

2f472a5228b644a6f9b6f082cf5d24e2.png

如果你只想修改所属的用户组,可以使用chgrp命令:

chgrp group_name filename

例如下面这个例子:

09fc8951684292890a486cfbe1967e6a.png

Logo

更多推荐