差异b / w目录执行和文件读取权限

时间:2013-12-07 12:19:06

标签: unix file-permissions

目录的执行权限与该目录中的读取权限有什么区别? 好像两者都设置了,我们只能读取文件。

3 个答案:

答案 0 :(得分:5)

读取权限允许我们读取目录,获取目录中所有文件名的列表。当执行权限是我们尝试访问的路径名的组件时,执行权限允许我们通过该目录。

例如 1)如果您的目录只有执行权限,则可以在路径解析中使用该目录来访问文件名,但是您无法列出/读取目录中的文件。 2)如果您的目录只具有读取权限,则可以列出/读取目录中的文件,但不允许您使用该目录进行路径解析。

答案 1 :(得分:1)

如果设置了读取权限,则可以读取(列出)目录。如果设置了x权限,则可以使用通过目录的路径。

答案 2 :(得分:1)

  1. 读取:允许受影响的用户列出目录中的文件
  2. 执行:允许受影响的用户输入目录。 (即,将某个目录设为当前工作目录) 需要在目录上执行以访问其中文件的inode信息。
  3. 描述可能令人困惑。我正在添加一些例子来澄清这一点。

    说我有以下树:

    dir0
    ├── dir1
    │   ├── dir2
    │   │   └── test2.txt
    │   └── test1.txt
    └── testFile.txt
    
    • dir0开始执行chmod 100 dir1/ 现在,用户在execute上只有 dir1 权限。
      1. 现在我可以使用dir1命令输入cd。但是,
      2. ls会给我以下错误:
        ls: cannot open directory '.': Permission denied
        用户可以输入目录,但无法列出内容
    • dir0开始执行chmod 400 dir1/ 现在,用户在read上只有 dir1 权限。
      1. 现在,如果我尝试cd dir1, 我会收到以下错误:
        bash: cd: dir1/: Permission denied
      2. 但是,ls dir1会起作用,但会显示错误信息以及结果 ls: cannot access 'dir1/test1.txt': Permission denied
        ls: cannot access 'dir1/dir2': Permission denied
        dir2 test1.txt
        请注意,它已在最后一行中正确列出了内容 发生错误是因为没有执行权限,用户无法通过目录。