这次给大家分享一下如何设置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系统的一次学习笔记,如果对您有所帮助,我很高兴。若有写错或者说错的地方,请您多多包涵,望有更多大神来指点迷津,谢谢。