标准答案

  1. 进程的有效 UID 和 GID 及 supplementary groups 决定它属于哪一类权限主体,匹配到属主后不会再回退到组或 other。
  2. 目录的读、写、执行分别影响列出名称、增删目录项和穿越目录;目录执行权限缺失时即使知道文件名也可能无法访问。
  3. umask 通常不会直接赋予权限,而是屏蔽应用请求的默认权限;最终权限还取决于应用创建时传入的 mode。
  4. 排查要从路径每一级目录、进程身份、ACL、挂载选项和 SELinux/AppArmor 等强制访问控制一起看。

题目解析

普通权限把访问者分为 owner、group 和 other;文件的读写执行位决定文件操作,目录的 r/w/x 分别影响列目录、修改目录项和穿越目录。一个文件即使自身可读,只要父目录缺少 x,进程仍然无法通过路径到达它。

umask 只在创建文件或目录时从默认权限中扣除,不会改变已有文件;ACL 可能在普通 owner/group 位之外继续授予或拒绝访问。排查要以服务真实运行用户和组为准,检查父目录、ACL、挂载和创建时的 umask,而不是直接扩大到 777。

常见误区

  • 误区:认为 chmod 777 能解决所有权限问题。改正:先确认运行用户、父目录、ACL、SELinux/AppArmor 和挂载策略,再授予最小权限。
  • 误区:只检查目标文件。改正:沿完整路径检查每级目录的搜索权限和符号链接。
  • 误区:把 umask 当成当前文件权限。改正:umask 只影响新建对象,已有文件要单独 chmod/chown 或通过 ACL 管理。

作者信息