我是否正确理解 Linux/Unix 中的目录权限?

Rom*_*man 4 linux unix permissions chmod

我是否正确理解 Linux/Unix 中的目录权限?

  1. 如果您的目录只有r(读取)权限,您可以查看目录的内容(哪些文件位于那里),但您不能这样做,因为您无法 ( cd) 到此目录(因为没有x权限)。您也无法从目录外部(例如通过ls directoryname/*)看到目录的内容(哪些文件位于那里)。您也将无法使用catmore命令读取(查看)位于此类目录中的文件的内容(即使您有读取这些文件的权限)。您也将无法修改(写)文件(即使你有写权限给他们),如果这些文件都位于这样的目录(不管你是什么cat >>echo >>cp或一些文本编辑器)。因此,在我看来,只有r对目录的权限相当于对目录完全没有权限。

  2. 如果您的目录只有x(执行)权限,您可以进入 ( cd) 目录,但不允许您查看 ( ls) 目录的内容(因为您没有读取目录的权限)。如果一个目录只有x权限并且它包含一个您拥有r(读取)和w(写入)权限的文件,您仍然无法使用(至少某些)文本编辑器(例如mcedit)打开此文件。但是您将能够使用诸如cat或 之类的命令读取文件的上下文more。你们都可以使用echo >>或修改文件的内容cat >>。所以,在我看来,它是x 什么允许用户“读取”和“写入”目录中的现有文件(如果文件也具有相应的权限)。

  3. 如果目录具有rx权限但没有w(写)权限,则不能更改目录的内容(位于那里的文件集)。例如,您不能在那里创建新文件或删除目录中的现有文件。但是您仍然可以更改现有文件的内容。因此,您需要w在目录中创建或删除文件的权限。

    添加:

  4. 值得一提的是w,对目录的权限是必要的,但不足以创建和删除目录中的文件。如果目录只有w权限,您将无法在目录中添加/删除文件。为了能够这样做,您需要对x目录具有权限(除w权限外)。

Chr*_*isF 5

达特茅斯学院的这个页面

请记住,要读取文件,您需要对其所在目录的执行访问权限以及对文件本身的读取访问权限。要写入文件,您需要执行对目录的访问和对文件的写访问。要创建新文件或删除文件,您需要对该目录进行写访问。您还需要将所有父目录的执行访问权返回到根目录。如果父目录完全私有,组访问将中断。

因此,从我对您的问题和此页面的阅读来看,您似乎已经明白了。


小智 2

问题说:

如果您的目录只有“r”(读取)权限,您可以查看该目录的内容(哪些文件位于该目录),但您无法执行此操作,因为您无法转到(“cd”)该目录(因为缺少“x”权限)。

是的,你可以这样做,你可以看到该目录包含的文件列表:

$ mkdir mydir
$ echo text > mydir/myfile
$ chmod a-wx mydir
$ ls -lA
total 4
dr--r--r-- 2 hcs hcs 4096 2010-02-28 22:12 mydir
$ ls -lA mydir
ls: cannot access mydir/myfile: Permission denied
total 0
-????????? ? ? ? ?                ? myfile
Run Code Online (Sandbox Code Playgroud)

但您无法从文件中访问除其名称之外的任何其他信息,如列表所示。