本文主要是介绍Linux权限(umask掩码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
强烈建议全文阅读!
1、外壳程序
2、文件权限
1、快速修改权限
2、修改权限的第二种方式:
3、关于目录文件权限,umask掩码
4、目录添加粘滞位
1、外壳程序
外壳是什么?
用户->外壳->内核(kernel)
为什么有外壳?
1、user不擅长os
2、判断user的comande,保护内核
怎么办?
bash创建一个子进程(shell不能挂)
不是bash直接去执行用户的命令
而是子进程完成
bash是一款具体的shell程序
为什么有权限?因为要拦住一部分人,有些人不能,有些人能
权限的本质:和人无关,只和角色有关;同时和事物属性有关
2、文件权限
权限:人(角色)+事物属性
不是拥有者、所属者,就是other
文件属性第一列:10个字符
第一个字符:文件类型,-普通文件、d目录文件
文件属性:一般有三种类型:
读r、
写w、
x可执行权限
三三为一组,分别对应:拥有者、所属组、other。这三种角色所对应的权限
因为这三种角色一定是具体的人来承担,而这个人只能是root用户或者普通用户
所以,具体的来说,权限就是具体的角色对应具体的文件
权限 = 用户角色(具体的人) + 文件权限属性
excute:执行
rwx:
r:是否具有可读权限
w:是否具有去写权限
x:是否具有可执行权限
如果一个文件有对应的权限,就显示对应的字母;没有权限就对应-
三者字母的位置是固定死的
因此,我们描述权限,要具体说明:那个人对那个文件有那些权限
1、快速修改权限
文件拥有者/root可以改
chmod u-r test.txt #对usr拥有者的test.txt减去r读权限
chmod g-r test.txt #对usr所属组的test.txt减去r读权限
chmod o-r test.txt #对usr其他人的test.txt减去r读权限
chmod a-rmx text.txt #对三个拥有者的test.txt同时减去r读权限
如果是加权限,将-换+即可
权限存在的意义:保护普通用户的文件
对用户身份识别只识别一次
如果不是owner,再去匹配所属组
匹配成功就不再往后匹配,如果匹配不成功,就会再往后匹配
修改用户拥有者/所属组需要用root
chgrp/chown:改变所属组/拥有者
只有root有权限可以改变拥有者
而普通用户是没有权限的,这个时候可以使用sudo
sodu/su:强制提升权限(短暂的变成root)
同时修改own和grp:chown/chgrp name1:name2 filename
现在可以修改文件的权限,也可以修改文件的拥有和所属
2、修改权限的第二种方式:
每一个角色的权限对应的是rwx三位,分别对应读、写、执行。
如果有权限,为1
没有权限,为0
那么:
---:000(0)
r--就是:100(4)
rw-就是:110(6)
rwx就是:111(7)
所有,如果我要修改三个角色的权限,设置为rwx,可以直接chmod 777 filename #意味着将三个角色全部设置为有权限
wimdows依靠文件后缀名管理区别文件
到那时Linux不依靠文件后缀名管理文件
那么Linux通过什么管理文件?
ls-l 文件类型第一列就是文件的属性
Linux文件类型:
-:普通文件、文本文件、可执行程序、库等都叫做普通文件
d:目录文件
b:块目录文件(典型的就是磁盘/dev(设备))
c:字符设备文件(显示器就是典型的字符设备,例如printf接口,在屏幕上打印的就是字符)
而屏幕本质上就是一个字符设备。
例如在/dev/pts/目录下就是一个终端设备
这个终端设备就是用户账号
当我们成功登录了一个设备之后,就会在该目录下显示该终端设备
这是因为终端设备也是一个文件(一切皆文件)
所以,我们就可以通过访问该终端文件对这个用户进行操作
p:管道文件(mkfifi 管道文件)
L:链接文件
在windows系统下,桌面图标仅仅只是一个链接,指向.exe这个可执行程序的链接
例如,我们想要删除QQ
如果你只是把QQ拖动到回收站内
你觉得删除了吗?
没有。
好,你又在回收站内把拖进去的QQ给删除了
那现在总算删除了吧?
不,删了一部分,只删了qq.exe文件,仅此而已。
要把QQ删除,需要把安装路径相关的文件数据全部删除干净
同时,按理来说,在安装的时候,会把qq.exe文件放在对应的路径下
你要打开QQ就需要找到qq.exe文件对应的位置,然后打开
可是,这会极大的增加计算机初学者的学习门槛和负担
所以工程师们为了解决这个问题
所以就设计了链接文件
桌面上的文件就是指向qq.exe文件路径
当你双击桌面的这个图标时,windows系统就会自动链接到对应的路径下的程序,然后执行
其实,桌面上所有的图标都是这个道理
能执行:具有可执行权限 + 文件本身就是一个可执行文件
因此,你有权限执行a文件,但是a文件不是一个可执行文件,所以执行不了。
3、关于目录文件权限,umask掩码
r:所属者角色能否查看目录(-ls)
x:能否进入目录
w:能否增、删、改文件
目录也是一个文件
而文件=内容+属性
那么,文件有对应的属性,很简单
文件的内容是什么?是目录里面的所有的文件信息详情数据
所以,对应的
r就是对目录文件内容的能否读权限
w就是对目录文件内容的能否写权限
x就是对目录文件能否进入的权限
Linxu创建文件/目录的时候为什么会有默认的权限?
普通文件起始创建的权限:0666
目录文件起始创建的权限:0777
创建文件的时候,要从其实权限中,过滤掉(不是简单的减法)在umask中出现的权限(002)
umask权限不同,所以文件/目录初始权限也会不同
002对应的2进制为:000 000 010
666对应的2进制为:110 110 110
对应的按位与umask码之后为:110 110 100
即权限为664,也就是rw-rw-r--
因此:
最终权限 = 起始权限 & (~umask)(~按位取反)
umask:Linux默认的权限掩码
删除、修改一个文件和目标没有关系,只和文件所在的目录权限有关
目录也是一个文件,这个目录文件也有拥有者、所属者和other
所以,只要是对应的这三个角色有对应的目录权限
那么,自然就可以对相应的目录进行对应的权限操作
例如,我是other
我不是A目录下b文件的拥有者、也不是所属者、自然就是other
但是,b文件对other设置为没有任何权限
但是,我是b所在目录A的other,而且这个other有rwx都有
所以,我可以对目录A下的b文件进行相应的rwx操作
如何理解呢?
可以这么理解:
因为文件=内容+属性
目录也是文件
目录的内容就是详细的文件信息
我对目录文件有rwx
相应的,就可以对目录文件的内容,即目录下的的文件
进行相应的权限操作。
删除一个文件的本质,是改变一个目录的内容
所以,我们如果想要创建一个多用户共同构建的共享文件,就只能在非用户目录下创建
一个文件能不能被删除跟这个文件本身没有关系,是跟这个文件在的地方有关
也就是其所在的目录有关,那么目录对应的角色和对应的权限就可以对文件进行操作
一个用户在创建的时候,默认只会给自己权限打开,所属组和其他权限为0,
所以不用担心其他人修改我们的文件
如果想要创建一个共享文件,可以设置在非用户家目录的地方,任意地方都可以。
但是需要把other的所有权限全部打开
删除文件,是对特定的用户是否对该文件所在的目录是否有写权限
所以我们在建立共相文件的时候
就会出现一个问题:
那就是不相关的用户,也可以对该文件进行干预,乃至于删除
例如,甲乙在共享一个文件A
这个时候丙很不爽,他就把文件A给删除掉了
为什么丙能够删除这个文件A呢?
因为,共享文件A一定是在一个目录下的
而这个目录一定是将other的rwx对应的权限给放开了
所以,甲乙作为other才能一起共建这个文件
我们说,删除/修改/读写一个文件跟目标文件本身无关
而是跟文件所在目录有关
可以这么理解:文件就是目录的内容
一个用户对这个目录有什么权限
就可以对这个目录的内容,即文件执行对饮的权限操作
所以,甲乙丙作为other,都对共享文件有共同的处理的权限
但是这样就很不好
我俩在共享文件好好的,你突然把桌子掀了,把共享文件直接干掉了
那么怎么解决呢?
4、目录添加粘滞位
将目录设置为粘滞位:chmod +t /dir
这样,该目录下的文件就只能:
1、超级管理员删除
2、该目录的所有者删除
3、该文件的所有者删除
也就是说,other和所属组的用户都不能进行删除了,解决了上述的困难
虽然不能删除,但是都可以新建
这篇关于Linux权限(umask掩码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!