例:没开VIP你就看不了VIP才能看的电影,没有宿舍的门禁卡就进不了宿舍楼,图书馆不是管理员就只能借阅图书,而不能添加图书等…这些都是权限,官方一点:对某事项进行决策的范围和程度.
文件权限=权限+对其操作的角色
权限:比如r(读) w(写) x(执行) 权限
操作的角色:比如owner(拥有者) group(所属组) other(其他人)
执行权限可能有点迷:运行C程序生成一个a.out ./a.out这个过程就是在执行,若是没有这个权限则无法运行
下面是ll打印的三个文件的信息
解释:前面的owner、group、other代表该类的权限,为三个字符为一组
后面的owner、group代表文件具体的owner和group,比如上图具体化到个体的owner和group为 ck和ck
为什么owner和group相等? 因为一个人的默认分组就是一组,组员也就只有他…
rw-rw-r– :代表owner拥有读写权限,不具有执行权限(前三个),group拥有读写权限,不具有执行权限(中三个),other拥有读权限,不具有写和执行权限(后三个)
‘-’就代表不具备该权限,rwx就代表具有所有的权限
group的意义:在保证项目安全的前提下,方便组内协同
1. 加减等号改变权限
u+x表示给用户,也即owner加上”x(可执行)权限”
u代表用户
g+r表示给group加上 “r(读)权限”
group代表组
o-r表示给other去掉 “r(读)权限”
o表示other
小结:chmod 可以根据 ‘+’,‘-’ 和 ‘=’ 来更改权限
例:(假定文件名为file.txt)
(file.txt)操作前的权限 | 操作 | 操作后的权限 |
---|---|---|
rw- rw-r– | chmod u+x file.txt | rwxrw-r– |
rwxrwxrwx | chmod u-x,g-x,o-r file.txt | rw-rw–wx |
rw- rw-rw- | chmod u=x file.txt | –xrw-rw- |
rw-rw-rw- | chmod g+x,o-rw file.txt | rw-rwx— |
2. 二进制改变权限
'-'代表不具备该权限,代表0,反之代表具有该权限,代表1
三位代表一类权限比如 — 等同于 八进制的000 等同于十进制的0
九位代表文件权限,也就是九个二进制数,三个八进制
例:
000(八进制) | 000000000(二进制) | ---------(权限) |
---|---|---|
001 | 000000001 | --------x |
123 | 001010011 | –x-w–wx |
666 | 110110110 | rw-rw-rw- |
可以自己试试
使用:
chmod 000 file.txt
chmod 666 file.txt
chmod 123 file.txt
官方文档:
报错:cat: file.txt: Permission denied
一般权限不够会报一些not permitted denied之类的错
不懂sudo命令的可以看看上一篇的基本指令:[基本指令概况]((8条消息) Linux学习笔记(1)_m0_53005929的博客-CSDN博客)
注:root,也就是超级用户,基本上可以使用所有的权限,完成操作时权限不足一般都直接提升为root
1. chown
输入命令:chown root file1.txt
报错,表示权限不够,解决自然是sudo提升权限到root
更改成功
2. chgrp
同理更改所属组,比如改成root
简便写法
file命令:展示文件更加详细的信息
如:file file1.txt
还记得上面讲过的二进制和八进制表示文件权限吗
下面讲普通文件和目录的默认权限
普通文件默认从666开始
默认的值转化过来应该是110 110 100也就是664,与666并不相同
再接着往下看
目录文件默认从777开始
针对上述两种情况的原因,是因为存在umask (umask的默认值为0002,我们看后三位002)
以普通文件为例:创建文件时,002先按位取反得到一个结果,这个结果会与666进行按位与(&)运算,所以默认显示的权限并不是666
运算过程:
同理:777与(~002)的结果为:775
既然我们知道umask有默认值,那我们能不能更改它呢,答案是可以的!
小结:更改umask的默认值后,创建文件时的默认权限自然也会跟着改变,变化后的默认权限也可通过计算得到。
必须具有w权限
必须具有r权限
必须具有x权限
推导:rwx三个权限一个一个删,看删掉哪一个后不能进行相应操作
假若有很多普通用户,他们在同一个目录下有着许多文件,权限各不相同,他们只能访问自己对应的权限,假若普通用户觉得:既然我看不了,那大家都别看了,之后进行了删除文件的操作,那他能实现吗?
换种说法,普通用户可以删掉超级用户(root)权限的文件吗
答案是可以的
此时为了防止误删等情况,就出现了粘滞位,粘滞位可起到保护的作用
用法:
这个t就是粘滞位,取代了x,可以理解为一种特殊权限。 t加上去之后,用户就只能删除自己权限范围内的。可以自己举例尝试一下,基本思路:先不用粘滞位,把拥有者权限和所属组权限提升至root,此时普通用户访问该目录就是other,尝试删除,应该删除成功,再次创建目录,加上粘滞位后再进行删除,删除失败!
小知识: /tmp目录下放了很多临时文件,大多都加了粘滞位,也即t
注:粘滞位是加在目录上的,保护目录里面的文件,测试发现加在文件上出现T,还是能删
操作的前提都是权限,只要权限合格才能进行操作
我们知道要在目录里读取文件必须要r权限,此时如果我们去掉x权限,能否读取成功
答:不能,x权限决定能不能进目录,也就是目录都进不去还读什么
同理缺少x权限就不能在目录下创建文件(需要w权限)
所以缺少x权限下我们不能进行任何操作