无法读取文件,尽管它在我的组中并且设置了组读取权限

Lag*_*aer 17 permissions nfs group files

我在 unix/linux 机器上遇到一个奇怪的问题:

我是一个组的成员,我们称之为组 A 并且某个文件(具有不同的所有者)也属于组 A。该文件的权限是

-rw-rw----
Run Code Online (Sandbox Code Playgroud)

所以我希望我应该能够打开那个文件,但我不能:当我尝试查看文件的内容(使用 cat)时,我会收到“权限被拒绝”错误消息。

由于权限似乎是正确的,还有什么可能导致这种情况?是否存在“覆盖”权限限制?如果是这样,我将如何发现?

cas*_*cas 9

自从您被添加到 A 组后,您是否已注销并重新登录?

如果没有,您当前的登录过程将只具有登录时的组成员身份,此后没有任何更改。并且该登录的任何子进程都将具有相同的组成员资格(即,如果您登录到 X,那么每个应用程序,包括您的终端模拟器和 shell)

您可以通过在另一个控制台或通过 ssh 或类似方式再次登录来测试这一点exec sudo -u $(id -u -n) -i(有效地杀死当前的 shell 并将其替换为新的 shell - 属于该 shell 的任何后台进程都将被孤立)


Ada*_*hon 5

正如您在评论中指出的,您没有阅读权限/home/username。但是要 read /home/username/path1/path2/file,您需要整个路径的执行权限。

要对此进行调试,请namei -l /home/username/path1/path2/file以读取文件的用户身份运行。


Sté*_*las 3

可能是 ACL。看

getfacl the-file
Run Code Online (Sandbox Code Playgroud)

可能由于某种原因,您应该加入的组没有正确设置。检查与

id -a
Run Code Online (Sandbox Code Playgroud)

关于什么

namei -xl "$(readlink -f the-file)"

getfattr -dm- the-file

sudo lsattr the-file
Run Code Online (Sandbox Code Playgroud)

它所在的文件系统是什么类型?

系统中是否有 apparmor、SELinux 或任何其他强制访问控制?

您确定该文件不包含文本“权限被拒绝”,对吗;-)?