13、Linux 基本权限

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

一、基本权限介绍

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

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

  • 第一组:适用于文件的属主,图中属主的权限是 rwx。

  • 第二组:适用于文件的属组,图中属组的权限是 r-x。

  • 第三组:使用于其它用户权限位,图中其它用户权限位是 r-x。

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

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

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

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

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

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

所以上面给出的权限 rwxr-xr-x 换成数字的表示方式就是 755。

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

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

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

bash 复制代码
[root@long90 ~]# ls -l

总用量 12

drwxr-xr-x. 2 root root    6 11月 23 14:55 公共
drwxr-xr-x. 2 root root    6 11月 23 14:55 模板
drwxr-xr-x. 2 root root    6 11月 23 14:55 视频
drwxr-xr-x. 2 root root    6 11月 23 14:55 图片
drwxr-xr-x. 2 root root    6 11月 23 14:55 文档
drwxr-xr-x. 2 root root    6 11月 23 14:55 下载
drwxr-xr-x. 2 root root    6 11月 23 14:55 音乐
drwxr-xr-x. 2 root root    6 11月 23 14:55 桌面
-rw-------. 1 root root 1471 11月 23 00:48 anaconda-ks.cfg
-rw-r--r--. 1 root root 1998 11月 23 01:01 initial-setup-ks.cfg
-rw-r--r--  1 root root   16 11月 24 11:09 text_ln
drwxr-xr-x. 2 root root   75 11月 24 14:42 workdir

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

2.1、chmod命令:修改文件权限

|----|--------------|
| 缩写 | 含义 |
| 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

2.2、chown 命令:改变文件或文件夹的所有者

bash 复制代码
[root@long90 workdir]# ll
总用量 8

-rw-r--r--. 1 root root  0 11月 23 00:48 hello_linux
-rw-r--r--  1 root root 11 11月 24 11:19 link
-rw-r--r--  1 root root 10 11月 24 12:56 test
[root@long90 workdir]# chown long90 test

[root@long90 workdir]# ll
总用量 8

-rw-r--r--. 1 root   root  0 11月 23 00:48 hello_linux
-rw-r--r--  1 root   root 11 11月 24 11:19 link
-rw-r--r--  1 long90 root 10 11月 24 12:56 test

2.3、chgrp 命令: 改变文件或文件夹属组

bash 复制代码
[root@long90 workdir]# ll
总用量 8

-rw-r--r--. 1 root   root  0 11月 23 00:48 hello_linux
-rw-r--r--  1 root   root 11 11月 24 11:19 link
-rw-r--r--  1 long90 root 10 11月 24 12:56 test

[root@long90 workdir]# chgrp long90 test

[root@long90 workdir]# ll
总用量 8

-rw-r--r--. 1 root   root    0 11月 23 00:48 hello_linux
-rw-r--r--  1 root   root   11 11月 24 11:19 link
-rw-r--r--  1 long90 long90 10 11月 24 12:56 test

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

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

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

  • 文件的最大权限是 666

  • 目录的权限是 777

使用 umask 查看

相关推荐
罗政3 小时前
CentOS 7.6 系统源码部署 HivisionIDPhotos
linux·运维·centos
cililin3 小时前
第4章 文件管理
linux·服务器·网络·操作系统·unix
薰衣草23334 小时前
linux练习-2
linux·运维·服务器
驰羽4 小时前
C++网络编程(三)TCP通信流程
服务器·网络·tcp/ip
shylyly_5 小时前
Linux-> TCP 编程1
linux·网络·tcp/ip·echo·tcp编程
夏日漱石_5 小时前
tcp 服务器的设计思路
服务器·网络·tcp/ip
abcooxj5 小时前
Linux I2C 子系统
linux
无敌最俊朗@5 小时前
Qt 多线程与并发编程详解
linux·开发语言·qt
DrugOne6 小时前
Amber24 安装指南:Ubuntu 22.04 + CUDA 12.4 环境
linux·运维·ubuntu·drugone