在使用ls -l命令输出的结果中,其10位权限字符串里,第1位用于表明文件类型,像“-”代表普通文件,“d”则表示目录。而后边的9位权限字符,每3位为一组,它们依次对应的是所有者、所属组以及其他用户对于该文件或目录的读(r)、写(w)、执行(x)权限。

Linux怎么查看具体的文件权限位

ls -l 看清 10 位权限字符串

直接运行 ls -l filename 命令,输出的第一列就是你需要的权限位,总共10个字符。例如 -rw-r--r-- ,其中第1位表示文件类型,后面9位分为三组,每组3个字符,分别对应所有者(u)、所属组(g)、其他用户(o)的 r(读)、w(写)、x(执行)状态。

常见陷阱:

stat 输出里找八进制和符号权限的原始值

stat 不依赖 shell 解析,直接从 inode 读取权限数据,更可靠。运行 stat filename,在 “Access” 行能看到两套表示:

例如:Access: (0644/-rw-r--r--)Uid: ( 1000/user) Gid: ( 1000/user)

其中 0644 是八进制权限值,-rw-r--r-- 是符号表示,二者严格等价。注意前导 0 表示八进制,不是“十进制 644”。

实用技巧:

区分 rwx 在文件和目录中的真实含义

同一权限字符,在文件和目录上效果完全不同,这是最容易出错的地方:

权限位被 ACL 或 setuid 影响时怎么确认真实状态

当文件设置了 ACL(getfacl 可见)或特殊位(如 setuid),ls -l 的第 3 组权限位可能被修改(比如 rwx 变成 rws),但这些变化不改变底层 9 位权限值。

关键判断点:

真正决定访问是否成功的,是内核在 open()/execve() 时综合基础权限 + ACL + capability + SELinux 等多层检查的结果,单看 ls -l 的 10 位只是起点。

本文转载于:https://www.php.cn/faq/3013444.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。