Linux权限
Linux权限的概念
Linux下有两种用户:
- 超级用户(root):在Linux系统下做任何事情,不受限制
- 普通用户:在Linux系统下做有限的事情
超级用户的命令提示符是"#“:
普通用户的命令提示符是”$":
su指令
语法:su [用户名]
功能:切换用户
eg:要从root用户切换到普通用户user,则使用 su user 。要从普通用户user切换到root用户则使用su - 或者su。
su和su -的区别:
-
su 身份变化,把普通用户变成root
-
su - 重新登录root
root用户切换普通用户不用密码,普通用户切换root用户需要密码。
切换之后可以使用 exit / ctrl+d 切换回来。
eg:
Linux权限的管理
文件访问者的分类(角色、权限身份)
文件类型和访问权限(事物属性)
注意: Linux系统不论后缀,但是Linux系统上运行的软件需要。
文件类型
- d: 目录
- -: 普通文件 --> 文本文件、可执行文件、库
- b:块设备文件 --> 硬盘、光驱
- p:管道文件 --> 用来通信
- c:字符设备文件 --> 屏幕等串口设备
- s:套接口文件
- l:软连接 --> 类似Windows的快捷方式
基本权限
- 读(r / 4):read,对于文件来说,具有读取文件内容的权限。对于目录来说,具有浏览目录信息的权限。
- 写(w / 2):write,对于文件来说,具有修改文件内容的权限。对于目录来说,具有删除、移动目录内文件的权限。
- 执行(x / 1):execute,对于文件来说,具有执行文件的权限。对于目录来说,具有进入目录的权限。
- ( - ):表示不具备该项权限
文件权限值的表示方法
字符表示方法
八进制数值表示方法
因为一个文件的一个符号要么有权限要么没有权限,所以可以使用01进行替代。
eg:
权限符号(读、写、执行) | 八进制 | 二进制 |
---|---|---|
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
- - - | 0 | 000 |
对事物属性进行解读
文件访问权限的相关设置方法
chmod(权限)
注意:只有文件的拥有者和root才可以改变文件的权限
语法:chmod [参数] [权限] [文件名]
功能:设置文件的访问权限
常用选项:R — 递归修改文件目录的权限
chmod命令权限值的格式
- 用户标识符+/-=权限字符
- +:向权限范围增加权限代号所表示的权限
- -:向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限
- 用户符号:
- u:拥有者
- g:所属组
- o:其他用户
- a:所有用户
eg:
- 三位八进制数字
eg:
chown(拥有者)
注意:改变拥有者需要使用root或者使用可以提权的普通用户。
语法:chown [参数] [用户名] [文件名]
功能:修改文件的拥有者
常用选项:R — 递归操作文件或目录的拥有者
eg1:
eg2:(同时修改拥有者和所属组)
chgrp(所属组)
语法:chgrp [参数] [用户名] [文件名]
功能:修改文件或目录的所属组
常用选项:R — 递归修改文件或目录的所属组
eg:
注意: 当拥有者和所属组一致,只看拥有者的权限,就算所属组的权限更大也不能使用。
umask(权限掩码)
语法:umask 权限值
功能:查看或修改文件掩码
新建文件的默认权限== 666
新建目录的默认权限== 777
但实际上所创建的目录或文件,看到的权限并不是上面这个值。原因是创建文件或目录时受到umask影响。
权限掩码说明:凡是umask出现的权限不会在最终的文件权限存在。
所以如果默认权限是mask,则实际创建出来的文件权限是:mask & (~umask);
添加:超级用户默认掩码值为0022,普通用户默认掩码值为0002。
eg:
umask的改变,影响创建文件的默认权限。
目录权限
- 可执行权限:进入目录。
- 可读权限:可以用ls等命令查看目录的文件内容
- 可写权限:可以在目录中创建文件、删除文件和更改
但是,出现了问题:
但是当具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限。–> 张三创建的文件,李四也可以删。
eg:
粘滞位
解决目录权限的问题,Linux提出了粘滞位。
粘滞位的作用:
当一个目录被设置粘滞位(chmod +t),则该目录只能由
- 超级管理员删除
- 该目录的所有者删除
- 该文件的所有者删除
关于权限的注意
- 目录的可执行权限表示你可否在目录下执行命令
- 如果目录没有可执行权限,则无法对目录执行任何命令,甚至不能进入目录,即使目录有 r 权限。
- 而目录有可执行权限,没有可读权限,则可以执行目录,进入目录。但是在目录下执行ls命令也没有权限读出目录下的文档
- 这里还有个sudo,对一些指令提权。上面内容提及,普通用户没法执行sudo,系统不信任,除非把该普通用户添加到系统的信任白名单