Linux 权限

本文将介绍 Linux 的权限设置。

一、权限的重要性

服务器与个人电脑相比:

  • 存储的数据及和运行的应用有重要、高价值的特点

  • 访问人员较多,且不同人员具有不同的职责

    不同项目的成员,可能需要访问同一个服务器;

    同一个项目的不同成员(包括运维人员、SQL 程序员、后端程序员、前端程序员等),都有可能需要访问同一个服务器。

因此,我们希望系统的权限管理功能足够强大,以便我们能够根据不同的工作需要和职位需要,合理分配用户权限。

二、说明

  • Linux 系统是一种多用户系统
  • “一切都是文件”,因此,权限也是以 文件权限 的形式体现的
  • 每个文件都有一个特定的拥有者,并拥有一个特定的拥有组
  • Linux 系统中,每一个文件都会按其属主、属组划分访问它的用户的身份
  • 根据身份的不同,用户对文件的访问权限也不同

三、查看权限及所属

可以通过 ls -lll 查看当前目录下所有文件的详细信息。

1. 文件类型

每一行的第一个字符表示文件类型,其中:

  • d:目录
  • -:文件
  • l:链接
  • b:存储设备
  • c:鼠标、键盘等设备

2. 权限信息

紧随”文件类型”之后的9个字符表示文件的权限信息,其中:

  • 权限信息共分为三个部分,分别对应不同身份的用户:
    • 属主权限
    • 属组权限
    • 其它用户权限
  • 在 Linux 中,需要对不同身份的用户的权限做分别配置
  • 具体到每个部分中,第一位表示读取权限,第二位表示写入权限,第三位表示执行权限。各权限位置固定,出现字母表示拥有对应权限,否则用 “-“ 占位

3. 硬链接数量

4. 所属信息

image-20220402112204025

其中,第一个部分为文件的所属用户,第二个部分表示文件的所属组。

5. 其它信息

  • 文件大小
  • 最后访问时间
  • 文件名

四、修改所属

1. chgrp

“chgrp - change group”

该命令用于修改文件的所属组。

1
chgrp [-R] 所属组 文件名
  • -R:可选项,表示同时作用于文件其下的所有子文件

2. chown

“chown - change owner”

该命令用于修改文件的所有者。

1
chown [-R] 所有者[:所属组] 文件
  • -R:可选项,表示同时作用于文件其下的所有子文件
  • :所属组:可选项,表示同时修改所属组

五、修改权限

1. chmod 使用字母修改权限

1
chmod [-R] [身份标识][操作符][权限字符串],... 文件名

其中,

  • -R:可选项,表示同时作用于文件其下的所有子文件
  • 身份标识:使用字母代表不同身份的用户
    • u:属主
    • g:属组
    • o:其它用户
    • a:所有用户
  • 操作符:可以设为 + - =,分别表示新增、删除、设置
  • 权限字符串:[r][w][x]

设置 test1 文件,使属主和属组拥有读写执行、其它用户没有任何权限:

1
chmod u=rwx,g=rwx,o-rwx test1

设置 test2 文件,去除所有用户的可执行权限:

1
chmod a-x test2

2. chmod 使用数字修改权限

为简化权限修改操作,可以用数字代表权限:

  • r、w、x 分别用数字 4、2、1 表示
  • 通过数字的特殊设置,不同权限组合对应的数字总和一定是不同的,因此可以用数字总和唯一地代表权限
1
chmod [-R] 属主权限属组权限其它用户权限 文件名
  • -R:可选项,表示同时作用于文件其下的所有子文件
  • 为简化权限修改操作,用数字代表权限:
    • r、w、x 分别用数字 4、2、1 表示
    • 通过数字的特殊设置,不同权限组合对应的数字总和一定是不同的,因此可以用数字总和唯一地代表权限
    • 将属主权限、属组权限、其它用户权限依次排列,即可代表文件的所有权限

设置 test1 文件,使属主和属组拥有读写执行、其它用户没有任何权限:

1
chmod 770 test1

参考