我在配置 Linux 上的程序以便程序能够访问某些文件时遇到了麻烦。我们将其称为 pgm A。它的 uid 为 uA,gid 为 gA。此外,uid uA 在 /etc/group 中列为组 gX 的成员。问题是 pgm A 无法访问 uid 为 root 且 gid 为 gX 的文件,但只有当 pgm A 从另一个程序 pgm B(也以用户 uA 身份运行)调用时才可以。
如果我以用户 uA 身份运行并从 bash 运行 pgm A,则可以毫无问题地访问组 gX 中的文件。
但是,如果另一个程序 pgm B(也以用户 uA 的身份运行)分叉并执行 pgm A,则 pgm A 无法访问这些文件。我已验证 pgm A 从 pgm B 启动时确实以用户 uA、组 gA 的身份运行。那么,如果 uA 是组 gX 的成员,为什么该程序无法访问组 gX 可读的文件?这就像操作系统忽略了用户 uA 也属于组 gX 的事实。
答案1
将用户添加到组后,您可能需要再次登录,因为组权限仅在登录时读取。