用户可以读取但root不能读取的目录?


9

我的主目录下有一个名为“ .gvfs”的目录。作为我的普通用户帐户,我可以正常阅读它:

~ $ ls -lart ~raldi/.gvfs
total 4
dr-x------  2 raldi raldi    0 2009-05-25 22:17 .
drwxr-xr-x 60 raldi raldi 4096 2009-05-25 23:08 ..
~ $ ls -d ~raldi/.gvfs
dr-x------ 2 raldi raldi 0 2009-05-25 22:17 /home/raldi/.gvfs

但是,作为根,我不能“ ls”甚至“ ls -d”:

# ls ~raldi/.gvfs
ls: cannot access /home/raldi/.gvfs: Permission denied
# ls -d ~raldi/.gvfs
ls: cannot access /home/raldi/.gvfs: Permission denied

并且,只需确保:

# echo $UID $EUID
0 0

这只是Ubuntu 8.10的简单家庭安装,没有NFS或类似的东西。我看到该目录被标记为无法被世界读取(并且不能被世界使用x),但是我认为当您是root用户时,都不会应用该目录。例如,我可以在/ tmp中创建一个mode-000目录,并将其分配给非root用户,而root在读取,编写它等方面都没有问题。

知道发生了什么吗?


有趣的是,当以普通用户身份使用sshfs并以root身份在安装点上尝试任何类型的操作时,您会得到相同的症状。root用户根本没有权限查看安装点。您甚至看不到权限,ls -l返回所有权限位的所有问号。
GodEater

1
“这只是Ubuntu 8.10的简单家庭安装,没有NFS或类似的东西”。嗯,导火索 “奇怪的东西像”
托马斯

Answers:


21

来自:http : //bugzilla.gnome.org/show_bug.cgi?id=534284

这都是不幸的,但是它是内核级别的融合人员(不是安装fs的用户无法访问它的用户,包括root用户)做出的决定,我们对此无能为力。

另请参阅:https : //bugs.launchpad.net/gvfs/+bug/225361

解决方案似乎是更新/etc/fuse.conf并启用user_allow_other选项。然后,您可能还需要使gvfs传递allow_root或allow_other,但是我不确定如何执行此操作。

当然,简单地放弃所有gvfs之类的GUI工具并从命令行安装文件系统可能会容易得多,在命令行中您可以完全控制文件的确切安装方式。


5

.gvfs目录是Gnome VFS用户空间文件系统,该文件系统为虚拟文件系统提供了直接的文件系统路径(例如,远程samba挂载,webdav挂载),因此Gnome可以在操作远程文件时将路径传递给不支持VFS的程序。

由于它是FUSE挂载和应用程序,因此可以拒绝root用户权限-在这种情况下,执行访问检查的代理是FUSE应用程序,而不是内核。

默认情况下,gvfs守护程序仅允许所有者遍历目录。


0

可能是几件事,按照可能性的顺序

  • 检查/ var / log / messages(或/ var / log / syslog)是否存在文件系统损坏
  • 您在使用SELinux吗?
  • google建议lsattr〜raldi / .gvfs可能表示该文件已应用了特殊功能。

我在磁盘上运行了fsck,但没有发现任何问题。我没有使用SELinux。如果我以用户帐户身份运行lsattr,则没有输出。如果我以root用户身份运行,则会收到“权限被拒绝”错误。
拉尔迪

看起来Zoredache有了答案
Dave Cheney
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.