为了系统安全,Linux通过两个方面来控制用户对文件的访问:所有权和访问权限,我们先来看下所有权的概念。
Linux是一个多用户操作系统,可以被许多用户同时访问。再加上Linux经常被用作服务器,对外提供服务。如果没有安全措施的话,恶意用户就有可能会破坏系统里的关键数据。
为了系统安全,Linux通过两个方面来控制用户对文件的访问:所有权和访问权限,我们先来看下所有权的概念。
Linux系统将可以访问文件或目录的用户分成了三类:
文件所属用户又被称为文件所有者。默认情况下,创建文件的用户就是文件的所有者。
Linux中,一个用户组可以包含多个用户,你可以让组中的所有用户对某个文件都具有相同的访问权限。
假设你有一个文件,许多人都需要访问它,那么你只需将这些用户添加到相同的组,然后将文件所属组也设置到这个组,那么,这些用户就都可以访问该文件了。
既不是文件所有者,也不是文件所属用户组的所有其他用户,都被分配了一个相同的文件访问权限。
Linux系统针对这三类用户可以分别设置不同的访问权限,我们下面来看下文件访问权限的概念。
Linux系统可以为文件所属用户,文件所属用户组,和其他用户分别设置以下3种访问权限:
上面提到过的文件所有权中的三类用户,都可以被分别设置这三种访问权限,如下图所示:
我们可以在命令行中使用"ls -l"命令来查看文件的访问权限信息:
ls -l
上图中的"-rw-rw-r--"表明了文件的类型,以及不同所有权用户分别拥有的访问权限。
"-rw-rw-r--"开头的'-'表示该文件是一个普通的常规文件:
如果是目录的话,这个位置就会显示字母'd':
后面的rw-表示文件访问权限,这些r、w等表示的具体权限如下:
因此,"-rw-rw-r--"中的第一个"rw-"就表示文件的所有者只有读和写权限,没有执行权限('-'所在位是执行权限位,所以这里的'-'表示没有执行权限)。
"-rw-rw-r--"中的第二个"rw-"表示文件所属用户组也只有读和写权限,没有执行权限。最后一个"r--"表示其他用户只有读权限,而没有写权限和执行权限。
在Linux中,我们可以使用chmod命令,来修改或设置不同所有权用户的文件访问权限。chmod的命令格式如下:
chmod permissions filename
使用该命令设置权限,有两种使用方式:
在这种方式下,文件权限不用字符来表示,而是用三位的八进制数来表示。
下表显示了八进制数和权限的对应关系:
八进制数 | 表示的权限 | 相应的权限符号 |
---|---|---|
0 | 无权限 | --- |
1 | 执行权限 | --x |
2 | 写权限 | -w- |
3 | 执行 + 写权限 | -wx |
4 | 读权限 | r-- |
5 | 读 + 执行权限 | r-x |
6 | 读 + 写权限 | rw- |
7 | 读 + 写 + 执行权限 | rwx |
下面是这种数字方式的使用例子:
上面我们将sample文件的访问权限修改为764,这几个数字对应的权限如下图所示:
从上图中可以看到,764表示文件所有者具有读,写和执行权限,文件所属组只有读和写权限,而其他用户则只有读权限。
前面的数字方式,适合一次设置所有的权限。如果你想针对某个所有权用户进行单独设置的话,就可以使用符号方式,符号方式下可以使用加、减等数学符号来增加或移除权限:
数学符号 | 描述 |
---|---|
+ | 为文件或目录添加一个权限。 |
- | 移除权限 |
= | 直接设置新的权限,以覆盖掉旧的权限 |
这里设置权限可以针对某个所有权用户来执行,所有权用户也可以用相应的符号来表示:
所有权符号 | 对应的所有权用户 |
---|---|
u | 文件所有者 |
g | 文件所属组 |
o | 其他用户 |
a | 所有用户 |
使用符号方式设置权限时,我们不再使用类似755这样的数字,而是使用rwx之类的权限符号,例如下面这个例子:
要改变文件或目录的所有者,可以使用chown命令:
chown user
如果既想改变文件所有者,又想改变文件所属用户组,可以使用以下命令:
chown user:group filename
例如下面这个例子:
如果你只想修改所属的用户组,可以使用chgrp命令:
chgrp group_name filename
例如下面这个例子: