权限的两种情况
对人操作:
root:只有一个,就有Linux下的最高权限(一般不受权限约束)
普通用户:可以有多个,要受权限的约束
root <--切换-->普通用户 ,潜台词就是需要切换当前的权限
对角色和文件操作
事务的基本属性决定了权限相关概念
就好比你不能在杯子上看电影,不能在真空呼吸一样
所以权限的核心 = 人+事务属性
当我们在Linux下创建文件时,会看到下面的内容,下图说明每一部分的内容分别代表什么
这里的第一位文件类型主要有下面几种:
d
:文件夹
-
:普通文件
l
:软链接(类似
Windows
的快捷方式)
b
:块设备文件(例如硬盘、光驱等)
p
:管道文件
c
:字符设备文件(例如屏幕等串口设备)
s
:套接口文件
除了第一位的文件类型外,剩下九个字母每三个组成一组,分别是拥有者,拥有者同组和其他成员
r:
Read
对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
w
:
Write
对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
x
:
execute
对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“—”
表示不具有该项权限
由于三个为一组,也就是说至少需要三位二进制来表示该组的权限,所以这里采用一位八进制来代表一组的权限。三组就可以用三个八进制数来表示。
umask:
当我们新建一个文件夹时,基础权限码是0666,当我们创建一个目录文件时,基础权限码是0777(这里的0表示八进制)。但当我们查看该文件的权限时会发现,文件夹是0664,目录是0775。这是因为有umask的存在,当你创建文件或者目录时还要受到umask的影响,
假设默认权限是
mask
,则实际创建的出来的文件权限是:原来的初始权限 &(~umask)。这里umask默认为002.
目录的权限:
可读权限:如果用户没有可读权限,则无法用ls等命令查看目录中的内容
可写权限:如果用户没有可写权限,则无法在该目录下创建或者删除文件
可执行权限:如果用户没有可执行权限,则无法cd到目录中
可是当我们需要和别人共享一个目录下,完成一定的工作时,这个时候我们两个人都同时拥有可写权限,也就是说,我写的代码可以被别人删掉。同时也意味着,在目录下,删除文件不与文件的权限有关,只与该目录的权限有关。于是这里我们需要借助粘滞位来实现。
当一个目录被设置为
"
粘滞位
"(
用
chmod +t),
则该目录下的文件只能由
一、root删除
二、该目录的所有者删除
三、该文件的所有者删除