Linux权限的概念
Linux下有两种⽤⼾:
超级⽤⼾(root)、普通⽤⼾。
• 超级⽤⼾:可以再linux系统下做任何事情,不受限制(除了操作不了正在运行的文件,不过也有办法)。
• 普通⽤⼾:在linux下做有限的事情。
• 超级⽤⼾的命令提⽰符是"#",普通⽤⼾的命令提u⽰符是"$"。

命令:su ⽤⼾名
功能:切换⽤⼾
例如,要从root⽤⼾切换到普通⽤⼾user 用户,则使⽤su user。
要从普通⽤⼾user切换到root⽤⼾则使⽤su root(root可以省略),此时系统会提⽰输⼊root⽤⼾的密码。
Linux权限管理
1. ⽂件访问者的分类(角色)
• ⽂件和⽂件⽬录的所有者:u---User(拥有者)
• ⽂件和⽂件⽬录的所有者所在的组的⽤⼾:g---Group(所属组)
• 其它⽤⼾:o---Others(外人)
用ll查看:

为什么没有Others?因为不是拥有者,不是所属组那就是Others
2. ⽂件类型和访问权限(事物属性)
⽂件类型:
d:⽂件夹
-:普通⽂件
l:软链接(类似Windows的快捷⽅式)
b:块设备⽂件(例如硬盘、光驱等)
p:管道⽂件
c:字符设备⽂件(例如屏幕等串⼝设备)
s:套接⼝⽂件
用ll -a或ll查看文件属性

基本权限:
读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限"-"表示不具有该项权限
用ll -a或ll查看文件属性

其中我们发现框起来的有9个格子,且有rwx ,rw-,---的组合分别是什么意思?
9个格子分成3份,分别,每三份分别代表拥有者,所属组,Others

而每一份中分别代表着对应角色对改文件的读(r),写(w),执行(x)权限。-代表无权。
由上可知,r,w,x的去、状态是二态的,除了有权就是无权(-)。
因此,可以用二进制来表示三种权限:
1 1 1 0 0 0
r w x - - -
其中0表示不具有该权限,1表示具有该权限。
如果将二进制当十进制来看,例如1 1 0相当于是6,其中r为4,w为2,x为0。
如果r ,w ,x都有权限,用十进制表示就是7。
权限修改
chmod
功能:设置⽂件的访问权限
格式:chmod [参数] 权限⽂件名
常⽤选项:
• R->递归修改⽬录⽂件的权限
• 说明:只有⽂件的拥有者和root才可以改变⽂件的权限,普通用户只能改自己文件权限。
⽤⼾表⽰符+ / - = 权限字符
+:向权限范围增加权限代号所表⽰的权限
-:向权限范围取消权限代号所表⽰的权限
=:向权限范围赋予权限代号所表⽰的权限
⽤⼾符号:
u:拥有者
g:拥有者同组⽤
o:其它⽤⼾
a:所有⽤⼾
示例:
修改所有者权限:
bash
chmod u-r a

修改所属组权限:
bash
chmod g+w demo.txt

chown
功能:修改⽂件的拥有者
格式:chown [参数] ⽤⼾名 ⽂件名
实例:
• chown user1 f1
• chown -R user1 filegroup1
将a文件的拥有者权限给user1:

chgrp
功能:修改⽂件或⽬录的所属组
格式:chgrp [参数] ⽤⼾组名 ⽂件名
常⽤选项:-R递归修改⽂件或⽬录的所属组
实例: chgrp users /abc/f2
将a文件的所属组权限给user1:

!!!如果你是文件的拥有者,你也无法修变文件的拥有者,除了root用户。
umask
功能:
• 查看或修改⽂件掩码
• 新建⽂件夹起始权限=666(不带x)
• 新建⽬录起始权限=777(带x)
• 但实际上你所创建的⽂件和⽬录,看到的权限往往不是上⾯这个值。原因就是创建⽂件或⽬录的 时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的⽂件权限是:mask& ~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产⽣建⽴⽂件时预设权限。
超级⽤⼾默认掩码值为 0022,普通⽤⼾默认为0002。

例如我创建一个普通文件,新建文件夹默认权限=666:


其中umask可以修改,但是关闭xshell后还是会回复默认初始值。
重点部分
1.能改任何人的文件权限吗?
除了root用户,普通用户只能更改自己的文件权限。

- 如果不具有该权限,我们仍然执行会怎么样?
系统会自动拦截

- 确认权限时,如果既是所有者又是所属组,如何确认权限?
在Centor下,用户角色只确定一次,顺序是:所有者,所属组,Others
4.root用户权限?
不收权限约束
- 如何理解x可执行权限位?
可执行权限!=文件可以执行,就算文件有x权限位,文件本身不支持执行但仍然执行,就会报错
6.一个文件能否被删除与文件本身权限无关,与文件所处目录的w权限有关。
举例:root用户在我的目录下创建了一个不让我读不让我写的文件,只要我这个目录能写,就能删这个root的文件。
粘滞位
如果两个用户进行文件间的协作开发,就需要在同一个目录(此目录是公共目录,不在任何私人账号下)下修改文件,也就是说此目录的w权限必须放开,假如我的文件被别人不小心删了怎么办?所以Linux就有一个叫做粘滞位的权限位:t
当⼀个⽬录被设置为"粘滞位"(命令:chmod +t 文件名),则该⽬录下的⽂件只能由
-
超级管理员删除
-
该⽬录的所有者删除
-
该⽂件的所有者删除

在公共目录下,该目录有粘滞位,谁都删/改不了别人的文件,只能读取。