第 13 章 管理文件系统权限
文件系统权限控制用户和组帐户读、修改和执行文件的内容以及进入目录的能力。仔细设置权限以保护您的数据免于未授权访问。
13.1. 管理文件权限
每个文件或目录都有三个级别的所有权: 用户所有者( u )。 组所有者( g )。 其他( o )。 可为每个级别的所有权分配以下权限: 读( r )。 写( w )。 执行( x )。 请注意,文件的执行权限允许执行该文件。目录的执行权限允许访问目录中的内容,但不执行它。 创建新文件或目录时,会自动为其分配默认权限集。文件或目录的默认权限基于两个因素: 基本权限。 user file-creation mode mask ( umask )。
13.1.1. 基本文件权限
每当创建新文件或目录时,会自动为其分配基本权限。文件或目录的基本权限可以使用
符号
或者
数值
表示。
读、写、执行
目录的基本权限是
777
(
drwxrwxrwxrwx
),它为任何人都授予读、写和执行的权限。这意味着目录所有者、组和其它可以列出目录的内容,并可以在该目录下(以及其子目录)中创建、删除和编辑项。
请注意,一个目录中的单个文件可以有它们自己的权限,例如可以阻止用户您编辑它们,即使用户对该目录有非受限的访问权限。
文件的基本权限为
666
(
-rw-rw-rw-
),它为所有人都授予读取和写入的权限。这意味着文件所有者、组和其它用户都可以读和编辑该文件。
例 13.1. 文件的权限
如果文件有以下权限:
$ ls -l -rwxrw----. 1 sysadmins sysadmins 2 Mar 2 08:43 file
-
-
表示它是文件。rwx
表示文件所有者有读、写和执行文件的权限。rw-
表示组有读写权限,但不能执行文件。---
表示其他用户没有读、写或执行文件的权限。.
表示为该文件设定了 SELinux 安全上下文。
例 13.2. 目录的权限
如果一个目录有以下权限:
$ ls -dl directory drwxr-----. 1 sysadmins sysadmins 2 Mar 2 08:43 directory
-
d
表示它是一个目录。rwx
表示目录所有者有读、写和访问目录内容的权限。 作为目录所有者,您可以列出目录中的项目(文件、子目录),访问这些项目的内容并进行修改。r-x
表示组有读目录内容的权限,但没有写权限 - 创建新条目或删除文件。x
权限意味着您也可以使用cd
命令访问该目录。---
表示其他用户没有权限读取、写入或者访问该目录的内容。 作为不是用户拥有者或该目录的组所有者的用户,您无法列出目录中的项目、关于这些项目的访问信息或修改它们。.
表示为该目录设定了 SELinux 安全性上下文。 自动分配给某个文件或者目录的基本权限 不是 文件或目录最终的默认权限。当您创建文件或目录时,基本权限会被 umask 更改。基本权限和 umask 的组合会为文件和目录创建默认权限。
13.1.2. 用户文件创建模式掩码
用户文件创建模式掩码(
umask
)是一个变量,用于控制如何为新创建的文件和目录设置文件权限。
umask
会自动从基本权限值中删除权限,以提高 Linux 系统的整体安全性。
umask
可以用
符号
或
八进制
值表示。
读、写和执行
标准用户的默认
umask
是
0002
。
root
用户的默认
umask
为
0022
。
umask
的第一个数字代表特殊权限(sticky 位)。
umask
的最后三位数字分别代表从用户拥有者(
u
)、组群所有者(
g
)和其它(
o
)中删除的权限。
例 13.3. 在创建文件时应用 umask
下面的例子演示了,对一个基本权限为
777
的文件应用值为
0137
的
umask
,使在创建该文件时其默认权限变为
640
。
13.1.3. 默认的文件权限
为所有新创建的文件和目录自动设置默认权限。默认权限的值通过将 umask 应用到基本权限来确定。
例 13.4. 标准用户创建的目录的默认权限
当
标准用户
创建了一个新
目录
时,
umask
被设为
002
(
rwxrwxr-x
),目录的基本权限被设为
777
(
rwxrwxrwx
)。这会使默认权限为
775(
drwxrwxr-x
)。
rwxrwxrwx
Umask
rwxrwxr-x
rwxrwxr-x
这意味着目录所有者、组和其它可以列出目录的内容,并可以在该目录下(以及其子目录)中创建、删除和编辑项。其他用户只能列出该目录的内容并将其下移到其中。
例 13.5. 由标准用户创建的文件的默认权限
当
标准用户
创建一个新
文件
时,
umask
被设为
002
(
rwxrwxr-x
),文件的基本权限被设为
666
(
rw-rw-rw-
)。这会使默认权限为
664(
-rw-rw-r--
)。
rw-rw-rw-
Umask
rwxrwxr-x
rw-rw-r--
这意味着,文件拥有者和组群可以读取和编辑该文件,而其他用户只能读取该文件。
例 13.6. root 用户创建的目录的默认权限
当
root 用户
创建了一个新
目录
时,
umask
被设为
022
(
rwxr-xr-x
),目录的基本权限被设为
777
(
rwxrwxrwx
)。这会使默认权限为
755
(
rwxr-xr-x
)。
rwxrwxrwx
Umask
rwxr-xr-x
rwxr-xr-x
这意味着目录所有者可以列出目录的内容,并可以在该目录下(以及其子目录)中创建、删除和编辑项。这个组群和其它只能列出该目录的内容并将其下移。
例 13.7. 由 root 用户创建的文件的默认权限
当
root 用户
创建了一个新
文件
时,
umask
被设为
022
(
rwxr-xr-x
),文件的基本权限被设为
666
(
rw-rw-rw-
)。这会使默认权限为
644(
-rw-r-r--
)。
rw-rw-rw-
Umask
rwxr-xr-x
rw-r—r--
这意味着,文件所有者可以读取和编辑文件,而组和其它用户只能读取该文件。
出于安全考虑,常规文件默认没有执行权限,即使
umask
设为
000
(
rwxrwxrwx
)。但是,创建的目录可以具有执行权限。
13.1.4. 使用符号值更改文件权限
您可以使用带有符号值(字母和符号的组合)的
chmod
工具来更改文件或目录的文件权限。
您可以分配以下
权限
:
读
(r
)
写
(w
)
执行(
x
)
权限可分配给以下
所有权级别
:
用户所有者
(u
)
组所有者
(g
)
其他
(o
)
所有
(a
)
要添加或删除权限,您可以使用以下
符号
:
+
在现有权限之上添加权限
-
从现有权限中删除权限
=
删除现有权限,并明确定义新权限
要更改文件或目录的权限,请使用:
$ chmod <level><operation><permission> file-name
将
<level>
替换为您要为其设置权限的
所有权级别
。将
<operation>
替换为其中一个
符号
。将
<permission>
替换为您要分配的
权限
。用文件或目录的名称替换
file-name
。例如,要为每个人授予读、写和执行(
rwx
)
my-script.sh
的权限,请使用
chmod a=rwx my-script.sh
命令。
如需了解更多详细信息,请参阅
基本文件权限
。
要查看特定文件的权限,请使用:
$ ls -l file-name
用文件名替换 file-name 。 要查看特定目录的权限,请使用:
$ ls -dl directory-name
使用目录名替换 directory-name 。 要查看特定目录中所有文件的权限,请使用:
$ ls -l directory-name
使用目录名替换 directory-name 。