前言
本文将简单介绍一下Linux系统的权限问题。掌握Linux权限相关知识,是用好Linux系统的关键
一:超级用户和普通用户
- 超级用户:想干什么就干什么
- 普通用户:权限受到部分限制
普通用户切换到超级用户
切换到其他用户
(2)Linux权限管理
A:文件访问者的分类
Linux把文件的访问者分为如下三类
- u(user):文件或文件目录的所有者
- g(group):文件和文件目录的所有者所在组的用户
- o(other):其他用户
B:文件类型和访问权限
使用ls-al列出文件的属性 信息
各种信息所展示的含义如下
A:文件类型
缩写 | 表示类型 |
d | 文件夹 |
l | 软链接(可以理解Windows中的快捷方式) |
s | 套接字文件 |
b | 块设备文件;二进制文件 |
c | 字符设备文件 |
p | 命名管道文件 |
- | 普通文件 |
B:基本权限
权限 | 说明 |
读(r) | 对于文件就是读文件;对于目录就是浏览目录信息 |
写(w) | 对于文件就是修改文件内容;对于目录就是移动删除目录内的文件 |
执行(x) | 对文件就是执行文件;对于目录就是进入目录 |
- | 无权限 |
C:权限的表示方法
字符表示方法
8进制表示方法
示例
D:权限的设置
(只有文件的拥有者和root才可以更改权限)
命令一:chmod(修改权限)
//基本格式
chmod [参数][权限][文件名]
//[权限]格式
[用户符号](+/-/=)[权限字符]
其中的用户符号
- u:拥有者
- g:拥有者
- o:其他用户
- a:所有用户
其中的权限字符
- +:增加权限符号所代表的权限
- -:去掉权限符号所代表的权限
- =:向权限范围赋予权限符号所代表的权限
示例一:去掉拥有者的读权限
示例二:批量化操作
示例三:目录权限与文件权限
- 目录的读权限:是指允许查看目录下的文件(和目录下的文件没有关系)
- 目录的写权限:是指允许在该目录下创建文件(和目录下的文件没有关系)
- 目录的执行权限:就是指是否可以cd这个目录。由于目录的读写权限都是建立在执行权限上的,所以一旦执行权限被关闭,那么其读写权限也同样会被关闭
命令二:chown(修改文件拥有者和组)
chown [-参数(-R是递归,修改目录时加上)][目标用户名][文件名]
chgrp [-参数(-R是递归,修改目录时加上)][目标用户组名][文件名]
命令三:umask(默认权限)
创建普通文件或目录是他们的默认的权限是下面这样的
这些权限的默认值是由umask的值来决定的,可通过终端输入查看umask的值
对于root用户,其umask值为0022,对于普通用户则为0002
umask一共有四个数组,第一位用于定义特殊权限,剩下的三位与权限有关。对于目录,用户所能拥有的最大权限为777,对于文件则是目录的最大权限去掉执行权限,是666,因为执行权限是目录所必须要有的,而对于普通文件则不必要。
由于root的umask默认为022,如下,使用root创建目录时,其权限就是最大权限777去掉相应位置umask的权限,对于所属组和其他人则去掉写权限;而使用root创建文件时,也是如此,即为644
设定计算默认权限时,不应该直接将最大权限减去umask值,计算公式为mask& ~umask。比如目录的最大权限是777,对应则为"111 111 111",umask值被设为2,对应为“000 000 010”,~umask则为“111 111 101”,进行与操作,则为“111 111 101”,则为775,对应权限字符为“rwx rwx r-x”。再比如文件的最大权限为666,对应则为“110 110 110”,进行与操作则为“110 110 100”,对应的权限字符为“rw- rw- r--”
再比如将umask值设置0003,会是多少呢?对于文件:则为“110 110 100”,即为664,对于目录则为“111 111 100”,则为774
E:粘滞位
(注意:设置粘滞位一般是给目录设置的)
如下:test2这个文件夹隶属于root,但是普通用户却可以删除,这一点不可不谓危险
可以通过粘滞位解决,只需对目标目录设置粘滞位
chmod +t [目标目录]
当一个目录被设置粘滞位时,只有由以下三种人删除
- 超级管理员
- 该目录所有者
- 该文件的所有者