Linux红帽:RHCSA认证知识讲解(七)详细讲解Linux 文件系统权限
前言
- 在 Linux 系统中,文件系统权限管理是保障系统安全和用户数据隐私的关键机制。
- 无论是系统管理员还是普通用户,了解并掌握如何正确设置和管理文件权限都是必不可少的技能。
- 本文将从基础概念出发,逐步深入讲解 Linux 文件系统权限的设置、管理以及特殊权限的使用。
我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的RHCSA认证知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12901802.html?spm=1001.2014.3001.5482
一、解释 Linux 文件系统权限
- 在 Linux 系统中,文件和目录的权限设置决定了用户可以对它们进行哪些操作。
- 权限的设置是基于用户、组和其他用户(即不属于用户和组的其他人)的访问级别。
- 通过合理配置权限,可以确保只有授权的用户能够访问或修改文件和目录,从而保护系统资源的安全。
1.1 Linux 文件系统权限基础
- 文件权限是 Linux 系统中用于控制对文件访问的一种机制。
- 它可以针对文件的所属用户、所属组以及其他用户分别设置不同的权限。
- 权限分为三种基本类型:读取(Read)、写入(Write)和执行(Execute)。
- 这三种权限分别用字母"r"、"w"和"x"表示。
查看文件和目录的权限及所有权是管理权限的第一步。
- 在 Linux 中,
ls -l
命令是查看文件和目录权限及所有权的常用工具。使用-d
选项可以查看目录本身的权限,而不是目录中的内容。
例如,当我们看到如下输出时:
drwxr-xr-x. 2 wangpapa wangpapa 6 Jan 24 21:06 test001/
这里的第一位字符表示文件类型。"-"表示普通文件,"d"表示目录,"l"表示链接文件。接下来的九位字符分成三组,每组三个字符,分别对应所属用户(User)、所属组(Group)和其他用户(Other)的权限。在这个例子中:
rwx
表示所属用户(wangpapa)对目录有读取、写入和执行权限。r-x
表示所属组(wangpapa)的成员对目录有读取和执行权限,但没有写入权限。r-x
表示其他用户对目录也有读取和执行权限。
通过这种方式,我们可以清楚地了解每个用户和组对文件或目录的访问权限。
二、从命令行管理文件系统权限
在 Linux 系统中,chmod
命令是用于修改文件权限的常用工具。它支持符号法和数值法两种方式来设置权限。
2.1 使用符号法设置权限
符号法是一种直观的权限设置方式,它通过指定用户类别(u、g、o、a)、操作符(+、-、=)以及权限类型(r、w、x)来修改权限。
用户类别:
u
表示所属用户。g
表示所属组。o
表示其他用户。a
表示所有用户(等同于 u、g 和 o 的组合)。
操作符:
+
表示添加权限。-
表示移除权限。=
表示精确设置权限。
权限类型:
r
表示读取权限。w
表示写入权限。x
表示执行权限。
例如,以下命令将为文件/root/test006
的所属用户添加写入权限:
chmod u+w /root/test006
如果要同时修改多个用户类别的权限,可以将它们组合在一起。
- 例如,以下命令将为所属用户移除写入和执行权限,同时为所属组添加执行权限,为其他用户移除所有权限:
chmod u-wx,g+x,o-rwx /root/test006
2.2 使用数值法设置权限
- 数值法通过使用数字来表示权限。每个权限类型都有一个对应的数值:
- 读取(r)为 4,写入(w)为 2,执行(x)为 1。
- 通过将这些数值相加,可以得到一个三位数字的权限表示。
例如,权限rwx
的数值为 7(4 + 2 + 1),权限r-x
的数值为 5(4 + 0 + 1),权限--x
的数值为 1(0 + 0 + 1)。因此,权限rwxr-x--x
可以表示为数字 751。
使用数值法设置权限时,只需要指定对应的数字即可。例如,以下命令将文件/root/test006
的权限设置为rwxr-x--x
:
chmod 751 /root/test006
2.3 修改文件和目录的所有权
除了修改权限,我们还可以使用chown
命令来更改文件或目录的所属用户和所属组。
- 更改所属用户:
chown 新用户名 文件或目录
- 更改所属组:
chown :新组名 文件或目录
- 同时更改所属用户和所属组:
chown 新用户名:新组名 文件或目录
如果需要递归地更改目录及其内容的所有权,可以使用-R
选项:
chown -R 新用户名:新组名 目录
2.4 使用 ACL 精确控制权限
ACL(访问控制列表)允许我们为特定的用户或组单独设置权限,而不影响其他用户或组的权限。这在需要为个别用户或组提供特殊访问权限时非常有用。
- 为特定用户添加权限:
setfacl -m u:用户名:权限 文件或目录
在 setfacl 命令里,-m 是一个选项,其作用为修改(modify)文件或目录的访问控制列表(ACL)。
- 为特定组添加权限:
setfacl -m g:组名:权限 文件或目录
- 查看文件或目录的 ACL:
getfacl 文件或目录
- 删除文件或目录的 ACL:
setfacl -b 文件或目录
三、特殊权限的设置和管理默认权限
除了基本的读取、写入和执行权限,Linux 系统还提供了几种特殊权限,用于实现特定的功能。
- 这些特殊权限包括 setuid、setgid 和 sticky bit。
3.1 特殊权限介绍
- setuid(用户ID设置位):当设置在可执行文件上时,任何用户在执行该文件时都会获得文件所有者的权限。这在需要以更高权限运行某些程序时非常有用,但也需要谨慎使用,因为可能会带来安全风险。
- setgid(组ID设置位):当设置在目录上时,任何在该目录下创建的文件或目录都会自动继承该目录的所属组。这在需要确保文件或目录的组归属一致时非常有用。
- sticky bit(粘滞位):当设置在目录上时,即使其他用户对该目录有写入权限,他们也无法删除或移动其他用户创建的文件。这在共享目录中非常有用,可以防止用户误删其他人的文件。
3.2 设置特殊权限
- 设置 setuid:
chmod u+s 文件
- 设置 setgid:
chmod g+s 目录
- 设置 sticky bit:
chmod o+t 目录
3.3 管理默认权限
在 Linux 系统中,新建文件和目录的默认权限是由 umask(用户文件创建掩码)值决定的。umask 值用于从最大默认权限中减去相应的权限,从而得到实际的默认权限。
- 文件的最大默认权限是 666(即
rw-rw-rw-
),目录的最大默认权限是 777(即rwxrwxrwx
)。 - umask 值通常是一个四位八进制数,第一位表示特殊权限,后三位分别对应用户、组和其他用户的权限。
例如,如果 umask 值为 022,那么新建文件的默认权限将是 644(即rw-r--r--
),新建目录的默认权限将是 755(即rwxr-xr-x
)。
3.4修改 umask 值
修改 umask 值有两种方式:
- 临时修改:在终端中直接设置 umask 值,但这种方式只对当前终端会话有效,重启或重新登录后会失效。
umask 002
- 永久修改:通过修改用户的主目录中的
.bashrc
文件(或其他相应的 shell 配置文件)来设置 umask 值。这种方式对所有新的终端会话都有效。
例如,要将用户的默认 umask 值设置为 002,可以在.bashrc
文件中添加以下行:
umask 002
然后,通过运行以下命令使更改生效:
source ~/.bashrc
以上就是这篇博客的全部内容,下一篇我们将继续探索 Redhat 的更多精彩内容。
我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的RHCSA认证知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12901802.html?spm=1001.2014.3001.5482
非常感谢您的阅读,喜欢的话记得三连哦 |