Linux 文件权限

在 Linux 中,有三种不同类型的用户可对文件或目录进行访问:

  • 文件所有者
  • 同一群组用户
  • 其他用户

有三种文件权限类型:

  • r:读取权限
  • w:写入权限
  • x:执行权限

我们可以为三种不同类别的用户分配不同的文件访问权限,指定允许哪些用户读取文件、写入文件或执行文件。
可以使用 ls 命令查看文件权限:

  1. ls -l test.sh
  2. -rwxr-xr-x. 1 root root 2519 May 19 10:13 test.sh

我们可以看到类似 -rwxr-xr-x 的信息,一共有 10 位:

  1. -rwxr-xr-x
  2. ||||||||||
  3. ||||||||||
  4. ||||||||||
  5. 12345678910
  • 第一个,- 代表的是文件类型,可以是常规文件 -、目录 d、符号链接 l 或其他类型的文件
  • 往后三个,rwx 代表的是所有者的权限
  • 再往后三个,r-x 代表的是同一群组的权限
  • 最后三个,r-x 代表的是其他用户的权限

注意:- 表示没有被授予相应的权限。

使用 chmod 修改文件目录权限

chmod 命令用于修改文件目录的访问权限。

语法格式

chmod [who] [+|-|=] [mode] 文件名 复制代码
mode 表示访问的模式状态,通常使用几个特定的符号来设置权限的状态。

设置用户的状态 运算符 权限
u + r
g - w
o = x
a

权限状态可以分成 3 个部分。

  • 设置用户的状态:
    • u:表示所有者(owner)的权限
    • g:表示群组(group)的权限
    • o:表示其他用户(other)的权限
    • a:表示所有用户的权限
  • 运算符:
    • +:表示在现有权限的基础上增加权限
    • -:表示在现有权限的基础上移除权限
    • =:表示将权限设置为后面的值
  • 权限:
    • r:读取权限
    • w:写入权限
    • x:执行权限

例如,为 test 文件添加所有者和同组用户的可执行权限:

  1. chmod ug+x test

除此之外,chmod 命令还支持用数字来表示要修改的文件权限,可以使用一组 3 位数的数字来表示文件目录上的权限:

  • 第 1 个数字表示所有者(owner)的权限,即 u
  • 第 2 个数字表示群组(group)的权限,即 g
  • 第 3 个数字表示其他用户(other)的权限,即 o

每一位数字都是以下权限状态的数字( 4、2、1、0)相加的总和:

  • 4:读取权限
  • 2:写入权限
  • 1:执行权限
  • 0:没有相应的权限

把以上的数字相加就可以得到一个在 0-7 之间的数字,而这组数字就是表示所有者、同群组和其他用户权限状态。
例如,要授予 test 文件所有者的读取,写入和执行权限,授予同群组的读取和执行权限,而仅授予所有其他用户的读取权限,可以执行以下操作:

  • 所有者:rwx = 4 + 2 + 1 = 7
  • 群组:rx = 4 + 0 + 1 = 5
  • 其他:rx = 4 + 0 + 0 = 4
    1. chmod -R 754 test

    总结

    chmod 命令可以更改文件和目录的访问权限,可以使用符号、数字两种模式。

作者:tigeriaf
链接:https://juejin.cn/post/7021014110334631949
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。