文章目录
- 1. 权限的概念
- 2. Linux 的用户分类
- 3. Linux 的文件属性
-
- 3.1 文件类型
-
- file -- 查看文件类型
- 3.2 拥有者 & 所属组 & others
-
- chown -- 修改拥有者
- chgrp -- 修改所属组
- 4. Linux 文件权限
-
- chmod -- 文件权限修改
- 5. ??目录的权限
-
- 5.1 ??默认权限 和 权限掩码
- 5.2 ??粘滞位
1. 权限的概念
权限是用来约束“人”的行为的,同时有些访问对象天然就不具备一些“属性”。
2. Linux 的用户分类
用户分类:
- root:就是我们平时所称的 “超级管理员”,几乎可以干任何事情
- 普通用户:在操作系统中 root 只有一个,普通用户可以有很多个
-
su 用户名 :在同一个 bash 下进行身份切换,不加用户名默认切换为 root -
su - :让 root 重新登陆 -
exit 或
ctrl + D :退出命令 -
sudo :普通用户没有权限的行为,可以用 sudo 对单条指令进行提权(前提是该普通用户在 root 的信任列表里)
关于用户的切换 tips:
3. Linux 的文件属性
文件可以有的属性是:读
r 、写w 、执行x ,- 代表该位置没有权限,读写执行三个字符的位置含义是确定的

3.1 文件类型
在 Linux 下,操作系统 不用文件后缀区分文件类型,而是用 文件属性中,第一列的第一个字符 来区分文件类型
注:我们使用程序的时候还是需要文件后缀的,例如我们 gcc mycode.c
-
- :普通文件 – 文本、可执行、归档文件… -
d :目录 -
b :块设备(block) – 磁盘… -
c :字符设备 – 键盘、显示器 -
p :管道文件 -
s :网络文件(socket) -
l :链接文件(link)
文件类型介绍:
file – 查看文件类型
3.2 拥有者 & 所属组 & others
- 文件拥有者
- 文件所属组:对 others 进行权限的分组
- 文件的 others:除了拥有者以外的用户都是 others
角色划分:
注意:任何类型的用户都可以扮演不同的角色~
chown – 修改拥有者
choose owner.
root 下,更改指定用户为文件拥有者:
非 root 用户在前面加 sodu
chgrp – 修改所属组
choose group.
root 下,更改指定用户为文件所属组:
# 普通用户下,将 mytest.txt 的拥有者和所属组都给 Kevin $ sodu chown Kevin:Kevin mytest.txt
4. Linux 文件权限

chmod – 文件权限修改
-
添加文件权限:
chmod 角色+rwx 文件名 -
减少文件权限:
chmod 角色-rwx 文件名 角色对应:所有者 u,所属组 g,others o,所有角色 a 其实 chmod 还有一个权限位置,作 t,粘滞位,见文末粘滞位篇。这里主要介绍 ugo
-
用 8 进制转化成权限进行设置:
chmod 8进制的三位数 文件名 将有权限作1,没有作0,r-x 可以写作 101,转换成 8 进制就是 5 将 rwxr-xr-x 写作二进制 111 101 101,转化成 8 进制就是 755
方式一:
方式二:
# 添加相应权限 $ chmod u+x,g+r,o+x mytest.txt # 去掉所有权限 $ chmod a-rwx mytest.txt # 将权限设作 rwxr-xr-x $ chmod 755 mytest.txt # 去掉所有权限 $ chmod 000 mytest.txt
5. ??目录的权限
如果我们要进入一个目录,只有一种权限是必须的,就是 x 执行程序
-
r:
查看 目录里的 文件名 + 文件属性 的权限 -
w:向该目录中
创建新文件 的权限 -
x:
进入 目录的权限
目录权限的解读:
5.1 ??默认权限 和 权限掩码
先观察下面代码:

为什么 我们创建的普通文件(不包括可执行文件),为什么默认权限是从 644 开始的? 为什么 目录的默认权限,是从 755 开始的? (注:不同的操作系统,默认权限可能不同,我们重点关注默认权限的生成过程)
这里引入两个概念:
?? 起始权限:是系统设定的
普通文件 的起始权限:从 666 开始
目录文件 的起始权限:从 777 开始
关于我们所看到的 默认权限,也就是 最终权限,其实 是由 起始权限 转换而成的。
转化是通过 权限掩码 得来的。
-
1.查看权限掩码的命令为
umask ,他是可修改的,修改命令为
mask 0xxx (x 为 8 进制的数字) - 2.权限掩码是系统为了更好的控制文件权限专门设置的
- 3.不同系统的权限掩码可能不同
权限掩码:
?? 最终权限 / 默认权限 = 起始权限 & (~umask)
该公式的计算逻辑:
- 在起始权限中,去掉在 umask 中出现的权限,且不能影响其他权限
??定义看蒙了没关系~
??举例,上图:

可以看到笔者输入 umask 后显示为 0022,对应文件权限的八进制的三位数,取后三位。故,笔者系统此时的权限掩码为 022,我们以此进行举例讲解。

5.2 ??粘滞位
一些背景:
- 在使用 Linux 的时候,未来可能会有一些
共享目录,被所有的普通用户共享,用来保存普通用户产生的临时数据。- 共享的目录通常是由 root 提供的,普通用户作为 others 访问。值得注意的是,文件被所有人共享的时候,受文件权限约束,但是别人可以随意删除!!!??
- 粘滞位 就是为了让用户们共享文件,且可以保护 共享文件 不受别人删除。
为什么拦不住别人删除??是权限的 bug 吗?我们可以回顾一下 w 权限
实际上
总结:粘滞位是 只能 添加给 共享文件 的权限
命令为:chmod +t 共享文件名
设置粘滞位后,能删除文件的就只有 所有者 和 root 了