关闭

Linux文件权限学习总结

发表于:2015-4-08 10:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:清风崔    来源:51Testing软件测试网采编

  一、用户对文件或目录都有哪些权限?
  四种:读、写、执行、没有权限
  二、如何表示这四种权限?
  如果用十进制数字表示,分别为: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
  二、各个权限具体的操作试验结果如下:
  目录的可读权限:可列出目录里的文件,不可重命名、复制、移动、删除其中的文件,不可进入目录
  目录的可写权限:不可列出目录里的文件,不可重命名、复制、移动、删除其中的文件,不可进入目录
  目录的可执行权限:不可列出目录里的文件,不可重命名、移动、删除其中的文件,可复制其中的文件,可进入目录。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号