【Linux】第七章 控制对文件的访问

发布于:2025-04-21 ⋅ 阅读:(13) ⋅ 点赞:(0)

目录

1. 什么是文件系统权限?它是如何工作的?如何查看文件的权限?

2. 解释‘-rw-r--r--’这个字符串。

3. 使用什么命令可以更改文件和目录的权限?写出分别使用符号法和数值法将权限从 754 修改为 775 的命令。

4. 如何修改文件的所有者和所属组?

5. suid、sgid、sticky这三个特殊权限对文件和目录有什么影响?

6. umask 在文件权限管理中有什么作用?解释umask 0022 命令的作用。


1. 什么是文件系统权限?它是如何工作的?如何查看文件的权限?

文件系统权限(File System Permissions)是指操作系统用于控制文件和目录访问的机制。它决定了哪些用户和用户组可以读取写入执行特定的文件和目录。文件系统权限有助于保护数据,确保只有被授权的用户可以访问敏感或重要的资源。

Linux 中的文件系统权限通过三种主要的用户类别来工作,分别是文件所有者、文件所在用户组和其他用户。每个类别都有读(r)、写(w)、执行(x)权限。

在 Linux 中,文件的权限通常以 三组字符 来表示,每组三个字符:第一个三字符表示 文件所有者 的权限。第二个三字符表示 文件所在用户组 的权限。第三个三字符表示 其他用户 的权限。

最具体的权限具有优先权,用户权限覆盖组权限,组权限覆盖其他权限。

2. 解释‘-rw-r--r--’这个字符串。

第一个字符串表示文件类型。‘-’是常规文件,‘d’表示目录。

该字符串的意思是该文件的所有者对该文件具有读和写权限,文件所在用户组对该文件具有读权限,其他用户对该文件具有读权限。

3. 使用什么命令可以更改文件和目录的权限?写出分别使用符号法和数值法将权限从 754 修改为 775 的命令。

chmod命令用户修改文件和目录的权限。

  • 符号法:chmod g+w,o+x file
  • 数值法:chmod 775 file
4. 如何修改文件的所有者和所属组?

使用chown命令。

只修改文件所有者:chown username file

只修改文件所属组:chown groupname file

同时修改:chown username:groupname file

5. suid、sgid、sticky这三个特殊权限对文件和目录有什么影响?

特殊权限是除了用户、组和其他类型之外的第四种权限类型。suid:u+s,sgid:g+s,sticky:o+t。

(1)suid(set user id):只对 可执行文件(x)起作用。当文件设置了 suid 权限时,即使普通用户运行该文件,系统会临时将该运行该文件的 用户 ID 设置为文件所有者的 用户 ID。这意味着,执行该文件的用户会拥有文件所有者的权限,通常是 root 权限(如果文件所有者是 root 用户)。

suid 权限通常用于一些需要管理员权限的程序,例如 passwd 命令,允许普通用户修改自己的密码,但不允许修改其他用户的密码。

使用 chmod 命令设置 suid 权限。它通过在权限数字前加一个 4 来设置(如 chmod 4755 filename)。

(2)sgid(set group id):只对 可执行文件(x)起作用。当一个文件设置了 sgid 权限时,执行该文件的用户会临时获得该文件所属 用户组 的权限,而不是执行者所属的用户组权限(权限优先规则)。这意味着,执行该文件的用户将具有与该文件所属组相同的权限。

sgid 权限也可以用于特殊的 目录,在这种情况下,创建的所有新文件将自动继承该目录的用户组,而不是文件创建者的用户组

使用 chmod 命令设置 sgid 权限。它通过在权限数字前加一个 2 来设置(如 chmod 2755 filename)。

(3)Sticky Bit :是一种特殊的目录权限,它使得 目录中的文件只能由文件的拥有者、目录的所有者或 root 用户删除或重命名

它通常用于 公共目录(如 /tmp),以防止用户删除或修改其他用户的文件。例如,/tmp 目录通常是具有 Sticky Bit 的,这样其他用户无法删除或重命名他们没有权限的文件。

使用 chmod 命令设置 Sticky Bit 权限。它通过在权限数字前加一个 1 来设置(如 chmod +t directorychmod 1777 directory)。

6. umask 在文件权限管理中有什么作用?解释umask 0022 命令的作用。

umask 用来控制文件和目录的默认权限。它指定了文件或目录的默认权限掩码,通过掩码决定默认的权限。通过设置 umask,你可以指定在新文件或目录创建时,哪些权限会被去除

在 Linux 中,创建文件时的 默认权限666(即 rw-rw-rw-),创建目录时的 默认权限777(即 rwxrwxrwx)。umask 通过去除某些权限来控制新文件和目录的实际权限。umask 的数值代表了从默认权限中去除哪些权限。

umask 的数值 是一个三位数字,即一组八进制掩码,每个数字范围为 07,表示去除的权限:第一位表示文件 所有者 权限(User)。第二位表示 所属用户组 权限(Group)。第三位表示 其他用户 权限(Others)。

umask 0022 命令的作用就是在创建文件或目录时,去除了所属组和其他用户的写权限。

前导0:在某些特殊情况下,比如设置 特殊权限位(如 SUID、SGID、Sticky 位),可能会使用四位数来表示 默认权限和特殊权限 的结合。

用户的系统默认 umask 值在 /etc/login.defs 和 /etc/bashrc 文件中定义,用户可以在其主目录的 .bash_profile 或 .bashrc 文件中覆盖系统默认值。

umask 0 命令将恢复文件(666)和目录(777)的默认权限。


网站公告

今日签到

点亮在社区的每一天
去签到