21. 常用shell之 chmod - 更改文件权限 的用法和衍生用法

chmod 是一个在 Unix 和类 Unix 系统(如 Linux 和 macOS)中用于更改文件或目录权限的命令。理解 chmod 的基本用法和衍生用法对于管理系统文件和保护数据安全非常重要。

基本用法

在 Unix 和类 Unix 系统中,文件和目录的访问权限被分为三类:所有者(owner)、所属组(group)和其他用户(others)。每类用户都可以被赋予以下权限:

  • 读(r):允许读取文件内容或列出目录中的内容。
  • 写(w):允许修改文件内容或在目录中添加/删除文件。
  • 执行(x):允许执行文件或进入目录。

chmod 命令的基本语法如下:

chmod [options] mode file...
  • options:可选参数,例如 -R 用于递归地更改目录及其内容的权限。
  • mode:指定权限的方式,可以是数字模式或符号模式。
  • file:要更改权限的文件或目录。
数字模式

数字模式使用三位数来表示权限,每一位代表一类用户的权限。

  • 第一位数字代表所有者的权限。
  • 第二位数字代表所属组的权限。
  • 第三位数字代表其他用户的权限。

每位数字是其对应权限的总和:

  • 读(r)= 4
  • 写(w)= 2
  • 执行(x)= 1

例如,chmod 755 file 表示:

  • 所有者具有读、写和执行权限(7 = 4+2+1)。
  • 所属组具有读和执行权限(5 = 4+1)。
  • 其他用户具有读和执行权限(5 = 4+1)。
符号模式

符号模式更直观,使用字母和操作符来表示权限的更改。

  • ugo 分别代表所有者、所属组和其他用户。
  • a 代表所有用户(所有者、所属组、其他用户)。
  • +-= 分别用来添加、删除和设置指定的权限。

例如,chmod u+x file 表示给文件的所有者添加执行权限。

衍生用法

  1. 递归更改权限:使用 -R 选项可以递归地更改目录及其内部所有文件和子目录的权限。例如,chmod -R 755 directory 会将指定目录及其所有内容设置为 755 权限。

  2. 设置默认权限:可以使用 umask 命令来设置新创建文件和目录的默认权限。umask 的值会从完全权限(通常是 777)中减去,以得出默认权限。

  3. 特殊权限位

    • Set User ID (SUID):当设置在可执行文件上时,该文件将以文件所有者的权限运行。
    • Set Group ID (SGID):对于目录,使得在此目录下创建的文件继承该目录的组。对于文件,当执行时,以文件所属组的权限运行。
    • Sticky Bit:在目录上设置时,只允许文件所有者删除其文件。

    这些特殊权限位可以通过在数字模式前添加一个数字(如 4 对于 SUID,2 对于 SGID,1 对于 Sticky Bit)来设置。

chmod 命令的使用必须谨慎,错误的权限设置可能导致安全问题或数据丢失。在实践中,应该根据需要最小化权限,特别是在多用户环境中。

你可能感兴趣的:(shell,linux,hive,sql,数据结构,spark,bash)