r目录权限在Linux上应该如何工作?


11

我已创建目录,一个创建的具有这些权限-其他用户具有

drwxr--r-- 5个用户用户4096 2012-09-15 19:30站点

什么时候以另一个用户的身份在目录上执行ls -l

ls -l / home / user / sites

这是目录输出。我以为没有在该目录上设置x位,文件名将根本不会显示。

d????????? ? ? ? ?                ? dev.user.com  
-????????? ? ? ? ?                ? user.20120914_082804.sql.gz   
d????????? ? ? ? ?                ? shared  
-????????? ? ? ? ?                ? shared.tar.gz  
-????????? ? ? ? ?                ? www.20120914_083256.tar.gz
d????????? ? ? ? ?                ? www.user.com

这里有一些不一致之处吗?

Answers:


16

x给你权限实际上是目录和访问的目录中的文件,r使您有权查看该目录的内容。

如果通过给目录指定x位并删除r位来扭转这种情况,则用户可以打开shared.tar.gz(假设文件本身具有适当的权限),但前提是他事先知道文件名,因为ls它将无法列出目录中的文件。


1
我将对此进行测试,并尽快回复您。我一直发现Linux文件共享的这一方面令人困惑。
vfclists 2012年

这种行为不是Linux独有的。它的历史可以追溯到UNIX的早期-Linux是与UNIX兼容的系统,它的工作方式是-和Windows NT ACL条目具有相似的权限位。

2

对权限的这种解释可以追溯到早期的Unix文件系统。最初,只有文件。(以及设备,管道和...,但我想在这里讲一个故事,并不是100%严格准确;此外,设备和管道以及其他所有内容都适用,因为所有内容都是文件,甚至目录)。

目录只是文件系统用来保存描述目录树及其所包含文件的元数据的文件。目录中的每个文件都由一个简单的数据结构描述,其中包含文件名(最初为14个字符,IIRC)的空间以及存储数据的索引节点号,文件的大小,时间戳和权限字。每个目录都以名为.和的两个条目开头..,第一个指向该目录的索引节点,第二个指向其父目录的索引节点。

权限字有9位来描述所有者,同一组的其他成员以及整个世界的待遇。相关用户是否可以读取,写入或执行文件的每个标志的三位。(您可能会注意到,我忽略的16位权限字中还有5位。这些位最终得到了分配的意思,但与故事的这一部分无关。)(此外,对这9位的解释在包括Linux在内的早期Unix的所有后代中,bits几乎相同。)

因此,如果目录实际上只是一种特殊的文件,并由某个目录中的条目描述,那么它显然也具有权限位,这些位可能意味着某些东西。但是问题是,到底是什么。为这些位分配含义的最简单方法是首先不更改它们的含义。这实质上就是完成的工作。

因此,读取位意味着用户可以读取目录本身。传统上,这使读者可以访问每个文件数据的文件名,时间戳,大小和索引节点号。具体来说,使用rset可以ls查看目录中所有文件的名称,但这不足以打开(或以任何方式使用)列出的任何文件。

执行位意味着用户可以“执行”目录。由于目录是特殊的,执行实际上意味着按名称查找条目并使用它。这意味着您可以尝试打开x已设置的文件,但是如果r找不到它们,则无法找到它们的名称。当然,请求的文件的权限也会影响访问,因此即使x在目录上,您也无法读取文件,除非它也向您提供r

写位意味着用户可以写入目录,但自然只能由文件系统本身来介导。这意味着使用wset可以在该目录中创建新文件,或编辑现有文件的目录条目。但是,如果没有x设置,您实际上将无法使用任何文件,而且r也无法看到它们。

随着更复杂的用户身份模型在Unix及其后代中不断发展,这些相同的基本描述已成功地保持不变。

简而言之,r意味着您可以看到其内容,x意味着可以使用它,w甚至可以针对目录进行修改。


我想您可以多说明mode_t一点(特别是其中权限和文件类型存储在同一32bit字段中的部分)
SaveTheRbtz 2012年

1
我是80年代积极的unix用户和开发人员。我并不是要讲述完整的故事,而是要把它放在历史背景中,而是要暴露出我的娱乐性,即今天我既可以问我第一次学习unix时所面临的难题,也可以通过基本的答案来回答。我从当地的大师们在1983年左右东西越多零钱同样的解释,他们就越保持不变....
RBerteig
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.