问题:创建一个目录,进入目录,在目录里创建文件并ls显示出来各需要什么权限?
1.创建目录需要什么权限?
建一个目录temp,将目录文件属性的拥有者和所属组都设置成超级用户root(此操作要在root模式下执行)
回到普通用户模式,进入temp目录中创建一个目录看能否成功?
会发现没有权限,此时目录文件属性的拥有者和所属组都是root ,在当前普通用户模式下(即你自己)是没有没有权限在temp里新建目录的。
我们再将目录文件属性的拥有者改回普通用户模式试一下(在root模式下改回来),再回到普通用户模式,看此时能否在temp下建新目录?
发现成功了,那么就是说用户创建目录必须是在目录的拥有者属性是自己的时候,才能创建新目录。但是也有例外。那就是根目录下的tmp目录。
tmp的拥有者属性是root,普通用户模式下,我们在它里面新建目录就可以,但是其他目录的拥有者也为root时,普通模式下操作就不行,没有权限。
结论:用户要创建目录必须是在目录的拥有者属性是自己的时候或是在tmp目录下。
2.进目录需要什么权限?
(1)普通用户模式下
在主工作目录下创建好了文件夹code,显示文件属性
为了探究进目录需要什么权限,我们先把目录文件拥有者文件属性都置为000,即拥有者的文件属性为:不可读不可写不可执行
我们现在要进目录,发现权限不够,如下:
那么现在我们挨个试一下,看拥有者是要得到什么权限才能进入目录。
先更改拥有者的文件属性为:可读不可写不可执行
进入code,发现拥有者的读权限是不能进入目录文件的。
那我们再次更改拥有者的文件属性为:不可读可写不可执行
进入code,发现拥有者的写权限也是不能进入目录文件的。
再次更改拥有者的文件属性为:不可读不可写可执行
进入code,发现拥有者的可执行权限可以进入目录文件的。
(2)在超级用户模式下
在超级用户模式下,我们也是先把code目录文件拥有者文件属性都置为000然后进入code目录,发现成功了,也就是说root模式下,code拥有者的属性不需要可执行性,也就是说这些权限是用来约束普通用户的,超级用户root不受约束。
结论:
在普通用户下,进入目录需要给目录拥有者可执行权限。
在超级模式下,进入目录不受权限约束。
(3)在目录中创建文件需要什么权限?
接着上面的,普通用户下进入目录要给目录拥有者属性一个可执行权限。
那就先只给code目录拥有者属性可执行权限,先进入目录,看此时能否创建文件。
发现目录拥有者属性只有可执行权限时,是无法创建文件的,那么我们再给它加上写权限,试一下看能否成功?
发现成功了。
结论:要在目录下创建文件还需要在拥有者属性有可执行权限的基础上,增加写权限。
(4)将目录中的文件ls显示出来需要什么权限?
接上,我们要将code目录中的test文件显示出来,看能否成功?
发现目录拥有者属性有可执行权限以及写权限时,是无法ls显示文件的,那么我们再给它加上读权限,试一下看能否显示成功?
发现成功了。
结论:要在目录下ls显示文件还需要在拥有者属性有可执行权限和写权限的基础上,增加读权限。