目录
1. 什么是文件系统权限?它是如何工作的?如何查看文件的权限?
3. 使用什么命令可以更改文件和目录的权限?写出分别使用符号法和数值法将权限从 754 修改为 775 的命令。
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 directory
或 chmod 1777 directory
)。
6. umask 在文件权限管理中有什么作用?解释umask 0022 命令的作用。
umask 用来控制文件和目录的默认权限。它指定了文件或目录的默认权限掩码,通过掩码决定默认的权限。通过设置 umask,你可以指定在新文件或目录创建时,哪些权限会被去除。
在 Linux 中,创建文件时的 默认权限 是 666
(即 rw-rw-rw-
),创建目录时的 默认权限 是 777
(即 rwxrwxrwx
)。umask 通过去除某些权限来控制新文件和目录的实际权限。umask 的数值代表了从默认权限中去除哪些权限。
umask
的数值 是一个三位数字,即一组八进制掩码,每个数字范围为 0
到 7
,表示去除的权限:第一位表示文件 所有者 权限(User)。第二位表示 所属用户组 权限(Group)。第三位表示 其他用户 权限(Others)。
umask 0022 命令的作用就是在创建文件或目录时,去除了所属组和其他用户的写权限。
前导0:在某些特殊情况下,比如设置 特殊权限位(如 SUID、SGID、Sticky 位),可能会使用四位数来表示 默认权限和特殊权限 的结合。
用户的系统默认 umask 值在 /etc/login.defs 和 /etc/bashrc 文件中定义,用户可以在其主目录的 .bash_profile 或 .bashrc 文件中覆盖系统默认值。
umask 0 命令将恢复文件(666)和目录(777)的默认权限。