一篇关于权限的学习笔记~
- 1、权限的概念
- 2、权限管理
- 2.1 角色的不同分类
- 2.2 文件权限原理剖析
- 2.2.1 熟悉指令
- 2.2.2 普通用户只能更改自己的文件权限,但是sudo提权可以更改其他文件权限
- 2.2.3 没有权限,系统拒绝访问
- 2.2.4 权限匹配
- 2.2.5 root用户不受任何限制,可以进行任意操作
- 2.2.6 可执行权限的剖析
- 2.2.7 系统默认不能直接给其他用户文件,除非高权限用户
- 2.2.8 使用进制数也可以修改文件权限
- 2.3 目录权限原理剖析
- 2.3.1 进入一个目录需要的是可执行权限
- 2.3.2 如果一个目录没有w权限,就不能在指定目录内部创建新文件
- 2.3.3 多个普通用户之间是互不影响的
- 2.3.4 文件修改只与所在目录是否有w权限有关,与文件本身无关(修改包括增加与删除)
- 2.4 缺省权限
- 2.5 粘滞位
1、权限的概念
首先我们要知道在linux中有超级用户(root)与普通用户(user)这两种用户
超级用户 | 普通用户 |
---|---|
可以再linux系统下做任何事情,不受限制 | 在linux中做有限定的事 |
命令提示符是‘#’ | 命令提示符是‘$’; |
创建一个普通用户的指令
sudo adduser 用户名
超级用户与普通用户之间的互相转换指令
1、超级用户转为普通用户
su 普通用户名
2、普通用户转换为超级用户(需要输入超级用户的密码)
su
3、普通用户的短暂提权指令
使用短暂提权指令可以让普通用户短暂拥有超级用户的一定权限来进行一些操作,比如安装、卸载软件等等
sudo 指令
但是注意sudo并不是一定可以让普通用户拥有超级用户的权利,在系统中有一个白名单,只有在“白名单”中的普通用户才能执行sudo提权后的指令
注意下面只是演示,如果对vim操作不熟练建议先学习vim操作后自行修改避免出错
2、权限管理
权限=角色+事物属性
关于权限,首先权限限制的是角色,也就是一个人本身;其次是事物属性,也就是这个人的身份
linux下一切皆文件,所以下面我们关于权限需要借助文件做详细分析
2.1 角色的不同分类
对于文件属性进一步分析
Linux中的不同文件类型
linux中显示的 | 文件类型 |
---|---|
d | 文件夹 |
- | 普通文件 |
l | 软链接(类似Windows的快捷方式) |
b | 块设备文件(例如硬盘、光驱等) |
p | 管道文件 |
c | 字符设备文件(例如屏幕等串口设备) |
s | 套接口文件 |
文件权限值的表示方法
1、字符表示方法
Linux表示 | 说明 |
---|---|
r– | 只读 |
-w- | 仅可写 |
–x | 仅可执行 |
rw- | 可读可写不可执行 |
-wx | 可写可执行不可读 |
r-x | 可读可执行不可写 |
rwx | 可写可读可执行 |
— | 无任何权限 |
2、进制数值表示方法
权限符号 | 二进制 | 八进制 |
---|---|---|
r | 100 | 4 |
w | 010 | 2 |
x | 001 | 1 |
rw | 110 | 6 |
wx | 011 | 3 |
rx | 101 | 5 |
rwx | 111 | 7 |
— | 000 | 0 |
2.2 文件权限原理剖析
了解文件访问权限的相关设置方法:
指令 | 作用 | 格式 |
---|---|---|
chmod | 设置文件的访问权限 | chmod [参数] 权限 文件名 |
chown | 修改文件的拥有者 | chown [参数] 用户名 文件名 |
chgrp | 修改文件或目录的所属组 | chgrp [参数] 用户组名 文件名 |
2.2.1 熟悉指令
2.2.2 普通用户只能更改自己的文件权限,但是sudo提权可以更改其他文件权限
2.2.3 没有权限,系统拒绝访问
2.2.4 权限匹配
在确定权限时会首先确定用户角色,是拥有者、所属组还是其他。在Centos下只会确定一次,判断匹配顺序是拥有者、所属组和其他
2.2.5 root用户不受任何限制,可以进行任意操作
2.2.6 可执行权限的剖析
有可执行权限不意味着文件一定可执行。这句话的进一步解释是:一个文件必须是可执行文件,并且该可执行文件有可执行权限才能执行,二者缺一不可。
2.2.7 系统默认不能直接给其他用户文件,除非高权限用户
2.2.8 使用进制数也可以修改文件权限
2.3 目录权限原理剖析
2.3.1 进入一个目录需要的是可执行权限
2.3.2 如果一个目录没有w权限,就不能在指定目录内部创建新文件
2.3.3 多个普通用户之间是互不影响的
任何用户都不能进入其他用户的家目录
2.3.4 文件修改只与所在目录是否有w权限有关,与文件本身无关(修改包括增加与删除)
2.4 缺省权限
文件类型 | 默认权限 |
---|---|
普通文件 | 起始权限666,默认不带可执行权限 |
目录文件 | 起始权限777,默认带可执行权限 |
但是实际上我们自己验证时可能是664与775,并不是上面说到的666与777,这是因为系统默认存在一个权限掩码umask(通常是0002)的概念,而最终权限的计算公式为:最终权限 = 起始权限 & (-umask),通常以二进制计算
umask的价值是:在umask中出现的权限不会出现在最终权限中,可以灵活满足需要,保证代码可控
umask是可以修改的,并且umask是内存级的,重启后会恢复,修改指令就是直接使用: umask 修改值
2.5 粘滞位
通常在用户之间进行文件协作时,不能将目标文件放在任何一个私人账号下,而是放在公共的临时资源区域中,那么现在面临一个尴尬的问题就是如果有人要删除该共享类文件时可以的,因为该文件的目录具有w权限,那如果把该文件目录的w权限去掉用户就不能进入该文件,所以这就需要粘滞位来满足我们的需求,也就是:任何一个人都可以在共享目录下创建文件但是不能让非拥有者删除文件
使用方法就是在共享文件前 +t 即可
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作