本文最后更新于 2024-08-31,文章内容可能已经过时。

Linux系统是一个典型的多用户操作系统,不同的用户处于不同的地位,为了保护系统的安全性,linux系统对于不同用户访问同一个文件或目录做了不同的访问控制。而这种控制就是通过权限实现的,本节课我们介绍linux权限的使用

一、基本权限的介绍

Linux中每个文件或目录都有3个基本权限位,控制三种访问级别用户的读、写、执行,所以linux的基本权限位一共有9个。基本权限位和另外3个可以影响可执行程序运行的3个特殊权限位一起构成了文件访问模式。三个属性规定了对应三种级别的用户能够如何使用这个文件,这三个基本权限位对于文件和目录的含义有所差别的,我们一起来看一下

| 字符 | 权限 | 对文件的含义 | 对目录的含义 |
| —- | —- | ——————————————– | —————————- |
| r | 读 | 意味着我们可以查看阅读 | 可以列出目录中的文件列表 |
| w | 写 | 意味着,对文件可以修改或删除 | 可以在该目录中创建、删除文件 |
| x | 执行 | 如果是文件就可以运行,比如二进制文件或脚本。 | 可以使用cd命令进入该目录 |

那三种访问级别都有哪些呢?每个文件都有三组不同的读、写和执行权限,分别适用于三种访问级别,其中每组中的三个栏位分别使用读取权限(r)、写入权限(w)、执行权限(x)或没有相应的权限(-)来表示,共9位来表示。

1571370358704.png

  • 第一组:适用于文件的属主,图中属主的权限是rwx。
  • 第二组:适用于文件的属组,图中属组的权限是r-x。
  • 第三组:使用于其它用户权限位,图中其它用户权限位是r-x。

当有人试图访问一个文件的时候,linux系统会按顺序执行如下步骤:

(1)使用者拥有这个文件吗?如果是,启用用户权限。

(2)用户是组所有者成员吗?如果是,启用组权限

(3)如果以上两个都不是,启用其它人权限

上面我们提到的是第一种表示方法,在linux中还有另外一种表示方法,八进制表示法,我们来看下字母和八进制表示方法的对应关系

| 字符表示法 | 八进制表示法 | 含义 |
| ———- | ———— | —- |
| r | 4 | 读 |
| w | 2 | 写 |
| x | 1 | 执行 |

所以上面给出的权限rwxr-xr-x换成数字的表示方式就是755,那权限如何设置呢?

二、基本权限的设置和查看

通过前面的学习我们知道,用户分为所有者,所有者组,其他人这三类,而每一类有包含三种基本权限,他们的对应关系是

| 权限位 | 含义 |
| ————– | ———————————————————— |
| 属主权限位 | 用于限制文件或目录的创建者 |
| 属组权限位 | 用于限制文件或目录所属组的成员 |
| 其它用户的权限 | 用于限制既不是属主又不是所属组的能访问该文件或目录的其他人员 |

当我们使用命令来查看文件或目录时,会看如下内容

[root@zutuanxue ~]# ls -l
总用量 13804
drwxr-xr-x.  2 root root        6 10月 11 06:36 公共
drwxr-xr-x.  2 root root        6 10月 11 06:36 模板
drwxr-xr-x.  2 root root        6 10月 11 06:36 视频
drwxr-xr-x.  2 root root        6 10月 11 06:36 图片
drwxr-xr-x.  2 root root        6 10月 11 06:36 文档
drwxr-xr-x.  2 root root        6 10月 11 06:36 下载
drwxr-xr-x.  2 root root        6 10月 11 06:36 音乐
drwxr-xr-x.  2 root root        6 10月 11 06:36 桌面
-rw-------.  1 root root     1214 10月 11 06:12 anaconda-ks.cfg
-rw-r--r--.  1 root root     1369 10月 11 06:17 initial-setup-ks.cfg

每一行显示一个文件或目录的信息,这些信息包括文件的类型(1位)、文件的权限(9位)、文件的连接数、文件的属主(第3列)、文件的所属组(第4列),大小以及相关时间和文件名。其中Linux 文件的权限标志位九个,分为3 组,分别代表文件拥有者的权限,文件所属用户组的权限和其它用户的权限,现在我们知道文件有三种权限((r)读取、(w)写入和(x)执行)和三种访问级别((u)用户、(g)主要组和(o)其它人)决定文件可以被如何使用。那如何修改?

  • chmod命令:修改文件权限

1571375694210.png

| 缩写 | 含义 |
| —- | ————– |
| u | User(用户) |
| g | Group (组) |
| o | Other(其它) |
| a | All(所有) |
| + | Add(加) |
| - | Remove(减去) |
| = | Set (设置) |
| r | Read (可读) |
| w | Write (可写) |
| x | Execute (执行) |

| 命令 | 作用 | 结果权限 |
| ——————- | ———————————— | ———- |
| chmod o-r a.file | 取消其他人的可读权限 | rw-rw— |
| chmod g-w a.file | 取消组的写入权限 | rw-r–r– |
| chmod ug+w a.file | 赋予用户和组写入权限 | rwxrwxr– |
| chmod o+w a.file | 赋予其他人写入权限 | rw-rw-rw- |
| chmod go-rwx a.file | 取消组和其他人的阅读、写入和执行权限 | rw——- |
| chmod a-w a.file | 取消所有人的写入权限 | r– r– r– |
| chmod uo-r a.file | 取消用户和其它人的阅读权限 | -w-rw–w- |
| chmod go=rw a.file | 将组和其他人的权限设置为阅读和写入 | rw-rw-rw- |

使用数字的表示方式类似chmod 755 a,执行完成后a这个文件的权限对应就是 -rwxr-xr-x,这是文件权限的两种修改方式,如果你想修改文件的所有者和所有者组需要使用的命令就是chown,chgrp

  • chown命令:改变文件或文件夹的所有者
[root@zutuanxue test]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 18 01:26 file1
[root@zutuanxue test]# chown oracle file1
[root@zutuanxue test]# ll
总用量 0
-rw-r--r-- 1 oracle root 0 10月 18 01:26 file1
  • chgrp命令: 改变文件或文件夹属组
[root@zutuanxue test]# chgrp oracle file1
[root@zutuanxue test]# ll
总用量 0
-rw-r--r-- 1 oracle oracle 0 10月 18 01:26 file1

这里,我们涉及到了三条与权限修改相关的命令

| 操作 | 可以执行的用户 |
| —– | ————————————– |
| chmod | Root用户和文件的所有者 |
| chgrp | Root用户和文件的所有者(必须是组成员) |
| chown | 只有root用户 |

以上是三种基本权限 -R

三、文件或目录的默认权限

每一个新产生的文件都会有一个默认的权限,这个权限是通过系统中的umask来控制的

文件的最大权限是666

目录的权限是777

使用umask查看