【Linux学习笔记13】设置默认权限(umask命令)以及隐藏权限(chattr、lsattr命令)

这次给大家分享一下如何设置Linux系统中的默认权限。
那么,我首先通过创建一个目录,一个文件来看看它们的默认权限是什么
在这里插入图片描述
如果不知道为什么目录的权限我说是755 可以看笔记12
这里简单再介绍一下 r=4 w=2 x=1

这里延申一个知识点就是:
目录的权限中不管是那个用户级一定会有x权限(执行),如果没有这个x权限,那目录就连访问的权限也没有了,那就没有意义。
而文件就并不这样子,文件可以没有x权限(执行),因为用户级不够高,不能执行某个文件,相信大家可以理解这一点。

那么,这个默认权限是怎么来的呢?
首先我们来运行下列命令:umask
在这里插入图片描述
这里的0022,是root用户的umask值
通过这个值可以确定目录、文件的默认权限

那我们可以试试更改一下这个值:umask 0002
在这里插入图片描述
然后我们再创建一个新的目录以及一个新的文件,看看它们的默认权限。
在这里插入图片描述
那么为什么是这样子的呢?
有的朋友可能领悟到其中的一个规律:
系统创建目录与文件所分配的权限是这样的:
更改Umask前:
目录用:777-022(umask)=755
而文件呢:用666-022(umask)=644
而更改后:
目录用:777-002(umask)=775
文件用:666-002 (umask) =664

以上的说法看似规律很正确,但是不一定对。
我们来验证一下:
如果我们把umask改为0003,那么新的文件默认权限应该是666-003=663
在这里插入图片描述
由此说明,刚刚的规律不正确!

那么默认权限正确的操作是怎么样的呢?
那么其实系统是这样子做的,还是刚刚的例子
666其实写成这样才正确:rw-rw-rw
003写成这样:-------wx
再互相相减得到:rw-rw-r =664
这个才是系统正确的操作
目录的做法也是如此,这里就不多啰嗦了
不过,要提醒一点就是,如果是减 “-”(什么都没有)的话,是等于本身的
例如:rw- “-” =rw
或则 什么都没有减去任何东西依然是什么都没有。


设置隐藏权限(chattr命令)以及查看隐藏权限命令(lsattr)

除了ls能够查看出来的权限(rwx权限)之外,还有一些隐藏权限是ls不能查看出来的。
chattr +i :使文件或者目录更改为只读的隐藏权限
在Linux系统中用 chattr +i /tmp/CJlinux/1/a.txt给a.txt文件加了一个只读的隐藏权限。
在这里插入图片描述
那么chattr +i 这是一个只读权限(用户只能查看文件里面的内容不能改写)
可能有的朋友会有疑问,在Ls命令里面看到root用户明明是可以改写的,为什么变成只读了呢?下面我们来试一下:
在这里插入图片描述
那如果我运行 :wq! 来强制保存并退出,系统一样会报错:
在这里插入图片描述
所以最后只能:q!强制退出编辑这个文件

那我们试试另外一种方法:
head命令追加内容进去看看行不行:
在这里插入图片描述
系统显示:由于权限不够而拒绝!

无论我们是使用touch 命令,还是rm命令去修改删除这个带有隐藏权限 i 的文件都是不可以的,这里就不一一截图展示了。

去除隐藏权限:chattr -i
能够用chattr + i 来添加隐藏权限,自然也可以用chattr -i 来去除隐藏权限

chattr -i /tmp/CJlinux/1/a.txt

使文件只有追加权限的指令:chattr +a
在Linux系统中,使用chattr +a /tmp/CJlinux/1/a.txt给文件赋予一个只能通过追加来修改文件的隐藏权限
在这里插入图片描述
我们又来试试用Vi 命令来更改一下这个文件:
在这里插入图片描述
又是不能改写,那这次再试试一个touch命令来看看能不能修改文件的时间
(touch 一个存在的文件,能够更新这个文件的时间)
在这里插入图片描述
发现是可以更改文件的时间的。

那么我们来试试用head -n 来追加内容进去
在这里插入图片描述

总结一下:chattr +a 能够更改文件的时间,也只能通过追加命令给文件修改内容,这就是chattr +a 隐藏权限的作用了。
但是不能够改名字,通过Vi更改文件内容等。


前面的都是在讲文件,那么目录方面也大同小异。
chattr +i 这个只读权限与文件类似,这里就不多啰嗦了。
如果要查看本目录的隐藏权限,可以通过lsattr -d来查看
其实更加建议的是用Man 指令去看看一个命令的所有功能,哪里比较全,也比较详细。

还一个目录与文件不同的地方是:chattr +a 权限
使用chattr +a 去赋予一个目录只能追加权限的时候:
我们可以使用touch命令去给这个目录新建一个子文件
(其实可以这样理解,chattr +a 相当于是一个只能追加,不能更改的权限,
那么创建一个文件,也相当于给目录追加一个文件)
那么目录中的子文件能不能更改呢?
在这里插入图片描述在这里插入图片描述
由图中可以看到,其实是可以的。

那如果我们现在把a权限去掉,改为i 权限,我们还能继续编辑里面的文件吗?
在这里插入图片描述
这是为什么的,是因为i 权限是加在了2目录中,但是a.txt已经是之前创建了2目录中的子文件,i权限是只允许读目录2,但是不影响修改目录中原有的子文件。

总结:
1、使用chattr +i 给目录,目录只能读,但是不影响修改目录里面原有的文件
2、使用chattr +a给目录,目录只能追加,但是可以使用touch命令去创建子文件(相当于追加)


以上内容纯属本人小白初学Linux系统的一次学习笔记,如果对您有所帮助,我很高兴。若有写错或者说错的地方,请您多多包涵,望有更多大神来指点迷津,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值