您的位置:首页 > 运维架构 > Linux

【Linux】文件权限管理

2017-03-25 13:45 148 查看
问题:创建一个目录,进入目录,在目录里创建文件并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显示文件还需要在拥有者属性有可执行权限和写权限的基础上,增加读权限。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息