由于一些原因,我将centos更换为了ubuntu,但是这些指令的操作都是一样的!
在上一篇文章中,我们已经了解了基本的权限操作,在此篇文章中,我们将继续深入探讨下权限!
一、理论理解
1.Linux下一切皆是文件,文件权限=用户+文件属性!而其中,文件属性又主要是指权限属性,即r/w/x,即读/写/可执行(顺序不可以变!)
注:这里的x是可执行权限,与能执行是两码事,一个可执行文件=可执行权限+本身能执行
2.我们先在Linux上创建几个文件,如图所示,下面我们来具体理解一下!
我们着重看后两行,下面对其进行解释!
首先,白色框内代表文件名,红色框内代表上一次修改的时间,绿色框代表字节数,在这里由于我没有写入,故为0,以上三者不在赘述,下面主要介绍黄框还有粉框,之间的1先暂时不介绍!
3.对黄框的解释:
首先我们知道,linux中,用-表示普通文件,用d表示目录文件,所以,以上两个文件都是普通文件,除去这个字符外,还剩下9个字符,我们刚好可以分成3*3组,即3个一组,每一组都是rwx功能(-为不具备对应的功能),而每组我们又可以分别起一个名字,分别叫拥有者,所属组,以及other其他,而粉框第一个代表拥有者,第二个代表所属组,接下来我将对这三个组加以解释。
4.对三个组别的解释:
在这里我可以打个比方,假设张三李四都进入了某家公司,而且被分别分入AB两组,各自编写各自的代码,而由于资金短缺,只能用一台Linux机器,于是便分别创立了zs账户和ls账户,各自编写,假设A组张三创建并编写了zs.txt文件,则张三便是这个文件的拥有者,而A组的其他人,则是所属组,只能读不能写这个文件,而B组的人,则为other其他,也许有人会问到,那为什么还要区分后两者呢?倘若现在要秘密进行A组的协作,则只需要将第二组改为rw-,第三组改为---即可,这就是设置所属组和other存在的意义!
5.总结
综上所述,log.txt为普通文件,对拥有者是可读可写的,对所属组以及Other是只可以读的,拥有者和所属组均为root,创建时间为2.18 14:42
二、实验操作(普通文件)
1.文件的权限属性
法一)chmod u/g/o[+/-]rwx filename, 多人用","隔开
chmod a[all] +/- rwx filename
示例1:
示例2:
示例3:
示例4:
示例5:
法二) chmod 八进制 filename
假设每一位上,若出现-,则代表0,否则为1,那么,r--则为100,即4,rwx则为111,即7,
如此,我们将其组合起来,便有了新的表示方式
示例1:
注意:
1)身份匹配只能匹配一次,从拥有者,所属组,other从左向右成功匹配一次
2)权限是对于普通用户才存在的!root为超级用户,不受权限的控制的!但是假设我作为一个文件的拥有者,但是我将rwx都设为---,那么我将无法在看这个文件,也就是说自己把自己杀掉了
2.权限的更改
假设我在root账号下,有rzh和wzd两个子账号,当rzh账号创建了一个文件并且想把拥有者和所属组都给wzd,应该怎么办呢?
如图,这是rzh账号创建的文件
下面改一下权限:
这样,我们完成了改造
三、实验操作(目录文件)
1.rwx的作用
r ------ 用户能否看到执行目录下的文件信息
w ------ 用户能否修改(属性)或删除执行目录下的文件
x ------- 用户能否进入一个目录
证明:(用控制变量法)
r作用的证明:
w作用的证明:
x作用的证明:
下面我们来探讨最后一个小问题:
2.为什么我们看到的缺省的权限是这个样子?
换句话讲,就是为什么我们创建完文件后的权限就是这样了呢?如图我新建了目录文件dir1以及普通文件newfile.txt
原因如下:
在创建之初,普通文件的起始权限为666,目录文件的起始权限为777,但是在Linux中,存在一个叫做权限掩码的东西, 并且在不同的系统中,umask的默认值可能是不一样的,我这里是0002。
umask的意思就是过滤掉在权限掩码中出现的权限,最终权限等于起始权限去掉umask
过程如下:
umask是一个八进制数字,我们只关注后三位,0002表示000 000 010,将其按位取反(~umask)后&初始权限
比如:普通文件:110 110 110
& 111 111 101
得到 110 110 100,即rw-rw-r--
目录文件:111 111 111
& 111 111 101
得到 111 111 101,即rwxrwxr-x
好了,那如果我们想建一个文件,但是还想取消他的所有权限,那我们就可以设置一下umask的值,改为777,这样按位取反后全为0,&一下就全为0了,权限就设置了
3.粘滞位(选学)
3.1引言
首先我们以rzh账号建立一个test文件夹,之后切到wzd账号,当我们想用这个账号在test文件夹创建一个wzd.txt文件时,会发现创建不了!如下图
然后我们把账号切回到rzh账号,修改root.txt文件,修改为000,之后发现这个文件既不能写也不能读,但是却可以删
这是因为这个test目录是rzh建的,有w权限,为此我们得出结论:一个文件是否被删,权限是依赖于所处目录的!
因此,若想进行多个普通账号的数据共享,就不能放在任何一个普通账户的路径下,以root账号创建,公共目录下,普通人以other身份共享!
由此我们设置一下粘滞位:
3.2粘滞位
以下课件内容由比特提供!