一、权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以在 linux 系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
命令:su [用户名]
功能:切换用户,从普通用户切换到超级用户需要输入超级账户的密码,反之则不需要
示例:
二、Linux 权限管理
2.1 文件访问者权限
- 拥有者 u
- 所属组 g
- 其他人 o
目的是为了细粒度管理
2.2 文件权限
文件权限=使用者属性+文件属性
2.2.1 文件类型和访问权限
对于这十个字母来说,第一个表示文件类型(d表示是文件夹,-表示普通文件),而后的每三个字母为一组,第一组是拥有者对文件的权限,第二组是所属组对文件的权限,第三组是其他人对文件的权限。(r/-表示是否有可读权限,w/-表示是否有可写权限,x/-表示是否有可执行权限)。
示例:
2.2.2 更改文件权限
语法:chmod [选项] [权限] 文件名
功能:设置文件的访问权限
常见选项:
+:向目标文件添加权限
- :给目标文件移除权限
=:给目标文件赋予权限
u:拥有者
g:所属组
o:其他用户
a:所有用户
示例:
除了这样的移除(添加)权限,还能使用八进制数来操作权限:
特例:
root无视任何权限
2.2.3 更改用户权限
1. chown
语法:chown [用户名] [文件名]
功能:改变文件的拥有者
示例:
2. chgrp
语法:chgrp [用户名] [文件名]
功能:改变文件的所属组
示例:
超级用户可以随意修改文件的所有者、所属组,但是普通文件却做不到,除非提权
2.3 目录权限
- r/-表示能否查看目录信息
- w/-表示能否创建/删除目录
- x/-表示能否进入目录
2.4 为什么目录对应的权限是775,文件对于的权限是644?
其实新建目录的默认权限是0777,新建文件的默认权限是0666,但是实际上看到的往往不是这个值,这是因为权限掩码的存在,那么权限掩码怎么查看呢?
语法:umask [权限值]
结论:权限=起始权限&(~权限掩码)
2.5 粘滞位
上图我们可以看出:尽管caryon是other,但是由于文件在caryon的目录下,caryon仍然可以对dir进行删除。
上图我们能知道:其他人对不归属自己的文件是不可访问的(root除外)。
假想这样一个场景:两个用户通过同一台及其进行通信时,如何操作呢?
两个用户之间的交流需要w功能,因此我们需要给他们赋予这个权限。我们可以将文件建立在/下,我们接下来尝试一下:
两个人对于root建立的文件来说都是other,因此他们目前具有的权限是7:
但是此时假如有另外的一个人他也是other,它同样对该文件的权限是7,这样的话就表示它可以删除这个目录,这样就有些不合理了,因此就有了粘滞位。
粘滞位目录只能由root或该目录(文件)所有者删除,这样其他人就无法对文件进行删除,搞破坏了。
语法:chmod +t 目录名
因此就达到了我们开始的目的。