ls -ld是查看目录自身权限的唯一正确命令,因ls -l 目录名会列出其内部项而非目录本身权限;加-d强制将目录视为文件,只显示其元数据,避免新手误判。

直接看权限字符串最可靠,ls -ld 是查目录本身权限的唯一正确命令,不是 ls -l。
为什么必须用 ls -ld 而不是 ls -l
用 ls -l dir_name 实际列出的是该目录下所有子项的权限,根本没显示 dir_name 自身的权限 —— 这是新手最常踩的坑。只有加 -d 才强制把目录当作“文件”处理,只输出它自己的元数据。
-
ls -l mydir/→ 显示mydir/里有哪些文件、它们各自什么权限 -
ls -ld mydir/→ 显示mydir/这个目录本身的权限(比如drwxr-xr-x) - 如果目录名带空格或特殊字符,记得用引号包裹:
ls -ld "my dir"
stat 能看到权限的数字表示和精确时间戳
当需要确认八进制权限值(如 755)、判断是否被 SELinux 或 ACL 影响时,stat 比 ls 更权威。它的输出里明确区分了 “Access: (0755/drwxr-xr-x)” 和 “Uid: ( 1000/ user)”,避免符号法和数字法之间的换算误差。
-
stat mydir/会显示完整元数据,包括最后访问(Access)、修改(Modify)、状态变更(Change)三类时间 - 若看到权限字段末尾有
.(如drwxr-xr-x.),说明启用了 SELinux;有+(如drwxr-xr-x+)则表示设置了 ACL - 想脚本化提取权限数字?用
stat -c "%a %n" mydir/,输出就是755 mydir/
目录的 x 权限到底控制什么
对目录来说,x 不是“执行”,而是“能否进入”和“能否访问子项的 inode”。没有 x,哪怕有 r 也 ls 不出来内容,cd 直接报 Permission denied。
-
drw-r--r--:能ls列出内容(有r),但cd不进去、ls file.txt会报No such file or directory(缺x) -
dr-xr-xr-x:能cd、能ls子项名,但不能创建/删除/重命名(缺w) - 常见安全配置:
700(仅所有者可进可操作)、755(所有人可进可读,仅所有者可改)
真正容易被忽略的是:目录权限不光影响 cd 和 ls,还决定你能否打开其下的文件——即使文件本身权限是 644,若父目录没 x,cat subdir/file.txt 一样失败。查权限必须从根路径一级级 ls -ld 往下看,不能只盯目标文件。











