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


14

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

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

-rw-rw----

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

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


2
那目录权限呢?
卡森(Karlson)2012年

如果您位于多个组中,那么您当前的组是否设置为A?
Code-Guru

2
@Karlson,如果出现目录权限,那么您将首先无法看到文件的权限。
cjm 2012年

请向我们显示完整路径和文件名。
jippie 2012年

它在/home/theotheruser/somefolder/bla.txt中,我属于多个组。
Lagerbaer 2012年

Answers:


8

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

如果不是,您当前的登录过程将仅具有登录时具有的组成员身份,此后没有任何更改。并且该登录名的任何子进程将具有相同的组成员身份(即,如果您登录到X,则每个应用程序,包括终端仿真器和Shell)

您可以通过在另一个控制台上再次登录或通过ssh或类似方法exec sudo -u $(id -u -n) -i(通过有效地杀死并用新的shell替换当前的shell-属于该shell的任何后台进程)来测试此情况。


不,那不是问题;我注销并重新登录,但仍无法解决。
Lagerbaer 2012年

3

使用NFS,这取决于您使用哪种安全模式,但是在传统的安全模式中,用户所属的组列表是由客户端发送到服务器的,并且可以发送的组数是有限制的( 16我上次检查)。

因此,客户说:我是uid 1234,顺便说一句,我是12、13、14组的成员...如果您属于16个以上的组,则该列表将被截断,并且会有多个组服务器不知道您是该服务器的成员。

这可能是对此的解释。只有本地和/或远程计算机的系统管理员才能通过更改安全模型或NFS服务器的设置或减少您所属的组的数量来执行此操作。


我有一种强烈的感觉,这就是原因,因为我所在的组出现在“ groups”命令输出的第19位。我将向系统管理员显示此答案,看看是否有帮助。:)
Lagerbaer 2012年

您将如何更改NFS上的“安全模型”以解决此问题?
丹尼

2

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

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


就我而言,这就是问题所在。我想授予其他用户权限,以对其主目录的子文件夹进行操作,但是主目录具有访问权限700,因此他们的任何命令均获得“权限被拒绝”。
Cerberus

1

可能是ACL。看到

getfacl the-file

可能由于某种原因,您要进入的组设置不正确。检查与

id -a

关于什么

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

getfattr -dm- the-file

sudo lsattr the-file

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

系统中是否有任何Apparmor,SELinux或任何其他强制性访问控制?

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


不,没有特殊的ACL,它只是重复标准标志告诉我的内容,而id -a告诉我我属于该文件组
Lagerbaer 2012年

奇怪的是,我可以看到属于组B的另一个用户的文件,我也是该组的成员...
Lagerbaer 2012年

文件系统似乎是nfs4。namei给我/和属于root,root的家。/ home / username属于用户名和组X(我不是我的成员),其余的是/ home / username / path1 / path2 / file,其中path1属于用户名和组X,path2属于用户名,并且我是其中的A组。
Lagerbaer 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.