RHEL 管理文件权限
每个文件或目录都有三个级别的所有权:
- 用户所有者 (u)。
- 组所有者 (g)。
- 其他 (o)。
可以为每个所有权级别分配以下权限:
- 读取 (r)。
- 写入 (w)。
- 执行 (x)。
请注意,文件的执行权限允许您执行该文件。目录的执行权限允许您访问目录的内容,但不能执行它。
创建新文件或目录时,系统会自动为其分配默认权限集。文件或目录的默认权限基于两个因素:
- Base 权限。
- 用户文件创建模式掩码 (umask)。
基本文件权限
每当创建新文件或目录时,都会自动为其分配基本权限。文件或目录的基本权限可以用符号或八进制值表示。
许可 | 符号值 | 八进制值 |
无权限 | — | 0 |
执行 | –x | 1 |
写 | -w- | 2 |
写入和执行 | -wx | 3 |
读 | r– | 4 |
读取和执行 | R-X 型 | 5 |
读取和写入 | 乌尔曼- | 6 |
读取、写入、执行 | RWX | 7 |
目录的基本权限是 (),它授予每个人读取、写入和执行的权限。这意味着目录所有者、组和其他人可以列出目录的内容,创建、删除和编辑目录中的项,并进入目录。777
drwxrwxrwx
请注意,目录中的单个文件可以具有自己的权限,这可能会阻止您编辑它们,尽管您对该目录具有不受限制的访问权限。
文件的基本权限是 (),它授予每个人读取和写入的权限。这意味着文件所有者、组和其他人可以读取和编辑文件。666
-rw-rw-rw-
例 文件的权限
如果文件具有以下权限:
$ ls -l -rwxrw----. 1 sysadmins sysadmins 2 Mar 2 08:43 file
-
表示它是一个文件。rwx
表示文件所有者具有读取、写入和执行文件的权限。rw-
表示该组具有读取和写入权限,但不能执行该文件。---
表示其他用户没有读取、写入或执行文件的权限。.
表示已为文件设置 SELinux 安全上下文。
例目录的权限
如果目录具有以下权限:
$ ls -dl directory drwxr-----. 1 sysadmins sysadmins 2 Mar 2 08:43 directory
d
表示它是一个目录。-
rwx
表示目录所有者具有读取、写入和访问目录内容的权限。作为目录所有者,您可以列出目录中的项目(文件、子目录),访问这些项目的内容,并对其进行修改。
r-x
表示该组有权读取目录的内容,但不能读取 – 创建新条目或删除文件。该权限意味着您还可以使用该命令访问该目录。x
cd
-
---
表示其他用户没有读取、写入或访问目录内容的权限。作为非用户所有者或目录的组所有者,您无法列出目录中的项目、访问有关这些项目的信息或修改它们。
.
表示为目录设置了 SELinux 安全上下文。
自动分配给文件或目录的基本权限不是文件或目录最终获得的默认权限。当您创建文件或目录时,基本权限由 umask 更改。基本权限和 umask 的组合为文件和目录创建默认权限。
用户文件创建模式掩码
用户文件创建模式掩码 (umask) 是一个变量,用于控制如何为新创建的文件和目录设置文件权限。umask 会自动从基本权限值中删除权限,以提高 Linux 系统的整体安全性。umask 可以用符号或八进制值表示。
许可 | 符号值 | 八进制值 |
读取、写入和执行 | RWX | 0 |
读取和写入 | 乌尔曼- | 1 |
读取和执行 | R-X 型 | 2 |
读 | r– | 3 |
写入和执行 | -wx | 4 |
写 | -w- | 5 |
执行 | –x | 6 |
无权限 | — | 7 |
标准用户和用户的默认 umask 都是 .root
0022
umask 的第一位数字表示特殊权限 (sticky bit, )。umask 的最后三位数字分别表示从用户所有者 (u)、组所有者 (g) 和其他人 (o) 中删除的权限。
默认文件权限
默认权限会自动为所有新创建的文件和目录设置。默认权限的值是通过将 umask 应用于基本权限来确定的。
例 11.4.目录的默认权限
当标准用户或 root 用户创建新目录时,umask 设置为 (),目录的基本权限设置为 ()。这将默认权限引入 ()。022
rwxr-xr-x
777
rwxrwxrwx
755
rwxr-xr-x
符号值 | 八进制值 | |
基本权限 | rwxrwxrwx | 777 |
乌马斯 | RWXR-XR-X | 022 |
默认权限 | RWXR-XR-X | 755 |
这意味着目录所有者可以列出目录的内容,创建、删除和编辑目录中的项,并进入目录。该组和其他人只能列出目录的内容并下降到该目录中。
例文件的默认权限
当标准用户或 root 用户创建新文件时,umask 设置为 (),文件的基本权限设置为 ()。这将默认权限引入 ()。022
rwxr-xr-x
666
rw-rw-rw-
644
-rw-r—r--
符号值 | 八进制值 | |
基本权限 | rw-rw-rw- | 666 |
乌马斯 | RWXR-XR-X | 022 |
默认权限 | rw-r—r– | 644 |
这意味着文件所有者可以读取和编辑文件,而组和其他人只能读取文件。
出于安全原因,默认情况下,常规文件不能具有执行权限,即使 umask 设置为 () 也是如此。但是,可以使用执行权限创建目录。000
rwxrwxrwx
使用符号值更改文件权限
您可以使用带有符号值(字母和符号的组合)的实用程序来更改文件或目录的文件权限。chmod
您可以分配以下权限:
- 读取 (r)
- 写入 (w)
- 执行 (x)
可以将权限分配给以下所有权级别:
- 用户所有者 (u)
- 组所有者 (g)
- 其他 (o)
- 全部 (a)
要添加或删除权限,您可以使用以下标志:
+
在现有权限的基础上添加权限-
从现有权限中删除权限=
删除现有权限并显式定义新权限
程序
-
要更改文件或目录的权限,请使用:
$ chmod <level><operation><permission> file-name
替换为要为其设置权限的所有权级别。替换为其中一个标志。替换为要分配的权限。将 file-name 替换为文件或目录的名称。例如,要向每个人授予读取、写入和执行 () 的权限,请使用命令。
<level>
<operation>
<permission>
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 替换为目录的名称。
例 11.6.更改文件和目录的权限
-
要将 的文件权限从 更改为 ,请使用:
my-file.txt
-rw-rw-r--
-rw------
-
显示 的当前权限 :
my-file.txt
$ ls -l my-file.txt -rw-rw-r--. 1 username username 0 Feb 24 17:56 my-file.txt
-
从组所有者 () 和其他人 () 中删除文件的读取、写入和执行 () 权限:
rwx
g
o
$ chmod go= my-file.txt
请注意,在等号 () 后未指定的任何权限都将被自动禁止。
=
-
验证 的权限设置是否正确:
my-file.txt
$ ls -l my-file.txt -rw-------. 1 username username 0 Feb 24 17:56 my-file.txt
-
-
要将 的文件权限从 更改为 ,请使用:
my-directory
drwxrwx---
drwxrwxr-x
-
显示 的当前权限 :
my-directory
$ ls -dl my-directory drwxrwx---. 2 username username 4096 Feb 24 18:12 my-directory
-
为所有用户添加 read 和 execute () 访问权限 ():
r-x
a
$ chmod o+rx my-directory
-
验证 的权限及其内容是否已正确设置:
my-directory
$ ls -dl my-directory drwxrwxr-x. 2 username username 4096 Feb 24 18:12 my-directory
-
使用八进制值更改文件权限
您可以使用带有八进制值(数字)的实用程序来更改文件或目录的文件权限。chmod
程序
-
要更改现有文件或目录的文件权限,请使用:
$ chmod octal_value file-name
将 file-name 替换为文件或目录的名称。将 octal_value 替换为八进制值。有关更多详细信息,请参阅基本文件权限。