【linux篇】操作系统的第一道防线:权限
目录
什么是权限:
为什么要有权限:
权限的理解:
文件的权限:
文件的角色:
文件权限:
修改文件权限:
修改文件属性:
字符修改法:
编辑
进制修改法:
修改角色:
chowm(改变文件或目录的拥有者):
chown还能同时修改文件的拥有者和所属组:
chgrp(改变文件或目录所属组):
root 用户的权限:
如何理解可执行
权限的三个问题
目录的权限:
目录的rwx属性:
Linux 多用户之间的隔离
缺省权限:
unask 的目的是什么?
粘滞位:
关于权限的总结
什么是权限:
权限本质:能或不能做某些事情。
权限决定了能还是不能做的问题。
为什么要有权限:
为了控制用户的行为,防止错误的发生。
权限规则的设定永远时最顶级的上层人设计,比如写 Linux 的程序员,以限制普通用户的行为,防止混乱和错误的发生
权限的理解:
1.校长能进校长办公室,而你不能。说明权限限制的是“人”。
若校长叫“老王”,那校长能进办公室是因为他叫老王还是因为它是校长?
所以,重要的不是你是谁,而是你扮演的是什么角色。权限首先限制的是角色
2.我无法在vs上看电影,也无法在爱奇艺上写代码,是因为访问的目标对象天然没有目标属性,那
么也不具备对应的权限,即使我有爱奇艺的vip,也无法在爱奇艺上写代码。所以:权限要求对应
的目标必须具备对应的属性
权限=角色+对应的权限属性
文件的权限:
文件的角色:
权限=角色+对应的权限属性
对于文件的属性:读权限,写权限,执行权限
文件的角色:拥有者,所属组,other
文件权限:
一个文件所具备的属性就三种:读(r)属性,写(w)属性,执行(x)属性
在表述文件的权限时,要把角色和属性结合起来:“某某文件的拥有者具有读写属性”
第一个字符表示文件类型,后面字符没三个为一组,第一组表示拥有者具有的文件属性,第二组表示所属组的具有的文件属性,第三组表示other具有的文件属性
-
每一组第一个字符表示:读(r)
-
第二个字符:写(w)
-
第三个字符:执行(x)
修改文件权限:
修改文件属性:
字符修改法:
chmod [选项] 权限 文件名
修改file.txt的other用户的写属性
用户字符:
u:拥有者
g:所属组
o:其他用户
a:所有用户
进制修改法:
利用8进制修改文件属性
每个文件的每一组的字符对于的属性只有两种状态“rwx”或"---",也就是“是和否”。我们可以用“1”表示是,“0”表示否。如“r--”就等于“100”“rw-”等于“110”,“rwx”等于“111”,转换成八进制就是“4”,“6”,“7”
用八进制修改file.txt文件属性
修改角色:
chowm(改变文件或目录的拥有者):
chowm [选项] 用户名 文件名
修改file.txt的拥有者
chown还能同时修改文件的拥有者和所属组:
语法:「chown」 [选项] 拥有者:所属组 文件名
功能:更改文件或目录的拥有者和所属组
修改file.txt文件的拥有者和所属组
若指向修改文件的所属组,则用chgrp
chgrp(改变文件或目录所属组):
-
语法:「chgrp」 [选项] 用户组名 文件名
-
功能:修改文件或目录的所属组
修改file.txt文件的所属组
修改文件的拥有者与所属组时需要高权限,若是root用户可以修改,若是普通用户则无法修改,因为没有权限。若普通用户想修改,则需要用sudo对指令提权。
在修改文件时只能修改属于自己的文件,若拥有者不是自己,则此文件无法修改,但root能修改,因为它是超级管理员,拥有最高权限
确定权限位规则:用户a既是file.txt的“拥有者”也是”所属组“,此时“拥有者”的属性是“---”,”所属组“的属性是”rw-”。现在用户a对file.txt文件进行“读写”操作,这是不被允许的,因为没有权限。原因:在 ubunto 和 centos 下用户角色的确定,只确定一次,顺序依次是拥有者、所属组、other。一旦确定用户是拥有者,只看拥有者对应的权限
为什么拥有者也要设权限:有时候我们是需要将拥有者的权限关闭的。有些文件比较重要,这时为了防止自己误操作,就可以将自己的权限关闭。
root 用户的权限:
root用户拥有最高权限,哪怕文件不属于root,哪怕把root用户对某一文件的权限全关闭,root用户也能正常操作,因为它是超级用户,拥有最高权限。
> 所有的规则权限都是用来限制普通人的,总要有一个超用户权限来进行一些错误的修正
如何理解可执行
文件有一个属性:执行权限
但哪怕文件具备了这一权限,文件也不一定可以执行,因为该文件可能本身就不能被执行。给了执行权限只是表示该文件将来能被执行。
权限的三个问题
目录权限
缺省权限
粘滞位
目录的权限:
目录的rwx属性:
-
想进入一个目录,需要:执行权限(x)
-
想查看目录中的内容,需要:读权限(r)
-
想在在目录中创建新文件或目录,需要:写权限(w)
Linux 多用户之间的隔离
在我们的 Linux 系统中,我们每新建一个普通账号,这个普通账号都会在 home 目录下新建一个以该用户名命名的目录。当以某一用户登录时,默认所处家目录就是:/home/用户名
拥有者权限是全部开启,但是 所属组 和 other 关闭了全部的权限。这意味着任何其他用户都不能对其他用户的家目录进行修改
缺省权限:
缺省权限,也称为默认权限,指的是在创建新文件或目录时,如果没有明确指定权限,则系统会自动赋予的权限。这一机制在不同的操作系统和环境中可能有所不同
linux给普通文件设置的起始权限是"666",给目录文件设置的是"777",但当文件实际创建出来时,它的权限却于此有出入:(起始权限不等于最终权限)
-
创建一个文件时,它默认权限是”rw-rw-r--“八进制是”664“
-
创建一个新目录,它默认权限是”rwxrwxr-x“八进制是”775“
因为系统中有一个概念叫:权限掩码(权限掩码通过umask查看)
权限掩码并不是相同的:
权限掩码有四位数字,第一位数字与uid有关,后面后面三位才与文件权限有关。
- 文件最终权限 == 起始权限 &( ~umask )
以普通用户的权限掩码为例:
002转换成二进制:000 000 010 ,普通文件起始权限“777”二进制就是“111 111 111”。文件最终权限 == 起始权限 &( ~umask )= =111 111 111&111 111 101==775
修改umaks:umask+修改的权限掩码
unask 的目的是什么?
-
增加权限的灵活性
-
应对新需求的灵活性
粘滞位:
当一个目录被设置了粘指位(chmod +t)则该目录下的文件只能由:
-
超级用户删除
-
该目录的所有者删除
-
该文件的所有者删除
关于权限的总结
-
目录的可执行权限是表示你可否在目录下执行命令。
-
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
-
而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档