本文共 1700 字,大约阅读时间需要 5 分钟。
文件类型
之前我们创建文件和目录的时候,前面总有那么几行:

在Windows中我们用后缀来区分文件的类型,但在Linux中不是这样的,Linux是以
首字符来区分的(
上面的图像中红色框框中第一个字符):

这里是常见的文件类型:
文件权限
除开第一个字符表示文件类型,剩下的九个字符表示的是拥有者,所属组,其他人对这个文件的权限。
拥有者(u):表示这个文件的拥有者。
所属组(g):表示一群人对这个文件所拥有的权限 其他人(o):除拥有者和所属组的另外的人
我们来创建一个文件,来看看这些权限有什么用:
如果我们想要改变相应者的权限:chmod + (u,g,o) +/- 文件名
比如我们想去掉拥有者的r权限:

这是候我们想要打印TEST.txt里面的内容:

发现读取不了了,我们这时候把r加回去:

由此我们可以推出
r是读取的权限。
现在我们试试将TEST.txt的w权限去掉:

现在我们试试往TEST.txt里写点东西:

发现被拒了,我们再把它加回来:

可以写了,由此可知
w是写权限。
其实还有一个权限交
执行权限,以
x来表示,目前看不出来有什么用,之后在
目录的权限里有大作用。
chmod + XXX
除去首位字符表示文件类型,剩下的九位,我们用二进制表示(有字母为1,没有字母为0)
三位为一组,最大值为(111)最小值(000)对应为相应的八进制:

那么我想改对应的权限,就可以用数字了:
比如我想修改Test.txt的 拥有者,所属组,其他人的 读权限全部去掉:

umask 权限掩码
我们注意一下,我们新建文件和目录有默认的权限:
目录:777
文件:666
但是实际情况不是这样~
新建文件:

新建目录:

为什么呢,那是因为有一个东西叫
权限掩码 umask 
权限掩码的意义是:
权限掩码的每一位转化成三位二进制数后凡是位上为1的在最终的权限中不出现。 比如目录:

我们有一个公式:
最终权限 = 起始权限 & (~umask)

目录权限
我们之前已经讨论过权限了,但是目录的权限有点特别,我们单独拿出来说:
我们创建一个目录:

我们之前没有讨论过-x权限,我们现在把自己的-x去掉:

现在我们发现进不去了,所以由此可知**-x是能否进入目录的权限。**
我们再把-x加回来:

现在我们可以进入了。
我们返回上层将拥有者的-r去掉:

我们进入Newdir之后想查看一下这个目录里面有哪些文件:

我问由此可知
目录的-r是查看当前目录下信息的权限。 我们返回上层,将拥有者的-w权限去掉:
我们尝试在这个目录里创建文件:

我们发现我们创建不了文件了,我们尝试一下可不可以删除文件:

那么可不可以向test.txt中写东西呢?

唉~,可以,这是后大家就会有疑惑了,这是为什么呢?是因为:
一个文件能否被创建或者删除是取决于目录的-w权限,一个文件能否被写入是由他自身的-w决定的。
那就会有一个问题:一个文件能否被删除跟自己没有任何关系,跟自己的目录有关系! 如果有一些情况,我们的文件会有被别人删除的风险:
我们需要合作开发项目,我们要在一个公共的目录下工作。
我们来模拟一下这个情况:
我们假设在root账号下,设立一个公共区域;

我们注意看一下shared的权限:

对于其他人,有-r和-x的权限,就意味着我们可以进入这个目录和查看这个目录下的信息:
为了可以在这个文件夹下创建东西,我们加上-w权限:

现在我切换成普通用户1(My_Root):

现在我们以My_Root的账户创建文件:

我们现在看到My_Root的其他人的权限只有读权限,我们将其他人的-r权限去掉:

现在我们切换成普通用户2(My_Root_1):

我现在无法读,也无法写这个文件:

然后My_Root_1恼羞成怒:

把My_Root用户创建的文件删除了。这是非常荒谬的事情~,
我的文件可以被其他人删掉! 那么如何避免这种情况呢?我们专门为
目录设置了粘滞位-t解决这个问题。(注意:粘滞位只能给目录设置。)
我们切回root账号:

我们重复上面切不同账号建文件的操作:


这下可以完美解决这个问题。
转载地址:http://ktzfk.baihongyu.com/