zoukankan      html  css  js  c++  java
  • Linux文件权限学习总结

    一、用户对文件或目录都有哪些权限?

      四种:读、写、执行、没有权限

    二、如何表示这四种权限?

      如果用十进制数字表示,分别为:4、2、1、0;如果用字符表示,分别为:r、w、x、-。个人觉得,使用chmod命令更改文件或目录权限时,数字表示法显然比字符表示法简洁明快

    三、对于文件和目录而言,这四种权限是否具有同样的含义?

      并非如此,如下所示:

      ---------------------------------------------------------------------------

                        普通文件                                       目录

      r:用户拥有读取该文件内容的权限        用户拥有列出其中文件列表的权限

      w:用户拥有修改该文件内容的权限       用户拥有在其中创建、删除文件的权限

      x:用户拥有执行该文件的权限             用户拥有进入该目录、复制其中文件的权限

      ----------------------------------------------------------------------------

      对目录的这些各个单项权限的操作,我都有一一试验,详细结果贴在了文末,图片就不再贴出。需要提醒的是:

      1、拥有某项权限,并不意味着就一定能够对文件或目录做相应的操作。

      2、普通文件拥有r、w、x权限或它们权限的组合,针对的是文件内容,与文件本身的操作无关。若想对文件本身进行删除、移动等操作,需要其上层目录的权限,下面会讲到。

    四、为什么要同时设定三组用户的权限?

      这是因为linux里文件或目录的权限是和用户管理联系在一起的。我们设定文件的权限时,除了设定属主的权限,还要设定属主同组用户的权限,以及其它用户的权限。关于Linux用户管理,请自行搜索相关资料。 

    五、为什么很多文件或目录的权限都是一个权限组合?

      前面讲到,拥有某项权限并不意味着一定能够完成相应操作,原因之一就是:单一权限无法保证我们完成相应的操作,所以设定文件或目录权限时,通常 使用权限的组合,这对目录的权限设定尤其重要。例如,从道理上讲,如果目录拥有w权限,我们就可以在其中新建、删除文件,但从实际的操作结果来看,这些操 作无法完成,只有当目录同时拥有了x权限时,才可以进行上述的操作。-wx权限,即是一个权限组合,对目录而言,表示用户可以在其中创建、删除文件;再如 常用的r-x组合:对目录来说,表示用户可以列出目录内容,复制其中的文件。可以讲,没有x权限的配合,目录的w权限就是一句空话,没有x权限的配合,就 无法对目录中的内容进行任何操作,至于对目录本身的操作,由其上层目录的权限决定。能理解吧?不能进入目录的话,何谈对目录中文件进行操作呢?!

      目录拥有权限组合rw-、r-x、-wx时,我们能对其中的文件或子目录作哪些操作呢?大家可以先猜测一下,然后动手试验一下,看看自己的猜测是否正确。rwx权限就不用考虑了,基本上是完全权限,当然,特殊权限除外。

    六、文件或目录的权限受哪些方面的影响?

      拥有某项权限并不意味着一定能够进行相应操作,并不仅仅是因为需要权限的组合,有时候就会出现这种情况:我们正确设置了文件或目录的权限组合, 却仍然不能对它们进行相应的操作。这是因为,能否对文件或目录进行各种操作不但取决于文件自身的权限,还要受到其上层目录的权限的影响。本文的第三、第五 部分都已经提到了这一点。要牢记它,这非常重要!

      先来看文件的操作,包括两部分:对文件本身的操作,以及对文件内容的操作。

      对文件本身的操作,一般是移动、复制、删除、重命名,这些所有的操作都是由其上层目录的权限决定的。能否理解?文件是目录中的文件,我们知 道,linux把目录也看成一个文件,那么目录里的所有东西都可看成文件的内容,因此,目录的权限决定了目录中的文件的操作,这主要是指对文件本身的操作,对文件内容的操作,还需要文件自身权限的配合。

      用户lqs的家目录里有一个目录000,其中有一个文件a.txt。家目录lqs已经设置了权限705,目录000权限设定为703,其中的 a.txt文件权限设定为700。其它用户normal成功地删除了文件a.txt,尽管文件的权限只是700!这是因为文件的删除等操作是由 上层目录的权限决定的,而文件的上层目录000的权限为703,它赋予了其它用户在其中添加、删除文件的权限。

      因此我们得出结论,能否对目录中的文件本身进行移动、删除、重命名等操作,取决于其上层目录的权限。这里的文件,不但指普通文件,还包括目录文件,即目录的子目录。

      对文件内容的操作,一般是指修改文件内容。对文件内容进行操作,首先其目录要有x权限,然后文件要有w权限。 

    对目录里的子目录的操作,与目录里文件的操作原理一致,但相应权限与前面讲到的目录操作的权限一致。这里不再一一列举。记住,要多用用chmod命令,这些东西你自然会知道。

    七、特殊权限

      linux里有一些特殊权限,比如s,它们需要4位十进制数字来表示。这里不谈,有兴趣可以自行了解一下。

      附录:

      一、权限字符表示是如何变成数字表示的?

      使用ls –l命令显示文件属性的长格式时,第一个字段就是用来表示文件的种类和权限的,该字段最常见的值为-rwxr-xr-x。一共有10个字符,第一位表示文 件类型,后面九位表示文件权限,这9位字符可分成3组,分别表示文件属主的权限,属主同组用户的权限,和其它用户的权限。

      rwxr-xr-x表示文件属主具有读、写、执行的全部权限,属主同组用户具有可读权限,其它用户具有可读权限,用十进制数字表示,就是755。

      那么,755是怎么来的?

      要得出这个十进制数字,需要先把rwxr-xr-x转换成二进制。把它们用二进制数字表示的话,有某项权限即为1,没有为0,那么rwxr-xr-x的二进制表示为111 101 101。

      再把111 101 101这三组二进制数字分别转换成十进制。转换算法还记得吗?从右到左,各位上的数字依次乘以2的n次方(n的取值从0开始)。如下所示:

      第一组:1x20 + 1x21 +1x22 = 7

      第二组:1x20 + 0x21 +1x22 = 5

      第三组:1x20 + 0x21 +1x22 = 5

      三组数字组合起来,即为755。

      其实不用每次都把每一个字符转换成二进制,再转换成十进制,没这么麻烦。因为我们可以算出:可读权限用十进制数字表示为4,可写权限表示为2,可执行权限表示为1,没有权限表示为0,记住它们就不必每次全部转来转去了。

      先来看可读权限r--,它的二进制表示为100,把它转换成十进制:0x20 + 0x21 +1x22 = 4

      再来看可写权限-w-,它的二进制表示为010,把它转换成十进制:0x20 + 1x21 +0x22 = 2

      最后看可执行权限--x,它的二进制表示为001,把它转换成十进制:1x20 + 0x21 +0x22 = 1

        二、各个权限具体的操作试验结果如下:

      目录的可读权限:可列出目录里的文件,不可重命名、复制、移动、删除其中的文件,不可进入目录

      目录的可写权限:不可列出目录里的文件,不可重命名、复制、移动、删除其中的文件,不可进入目录

      目录的可执行权限:不可列出目录里的文件,不可重命名、移动、删除其中的文件,可复制其中的文件,可进入目录。

    文章出处:http://www.examda.com/linux/fudao/20100707/094403862-1.html

  • 相关阅读:
    Html禁止粘贴 复制 剪切
    表单标签
    自构BeanHandler(用BeansUtils)
    spring配置中引入properties
    How Subcontracting Cockpit ME2ON creates SD delivery?
    cascadia code一款很好看的微软字体
    How condition value calculated in sap
    Code in SAP query
    SO Pricing not updated for partial billing items
    Javascript learning
  • 原文地址:https://www.cnblogs.com/vincent-blog/p/4388370.html
Copyright © 2011-2022 走看看