Каталог, который пользователь может прочитать, но 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

Однако, как root я не могу "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 или чего-то странного. Я вижу, что каталог помечен как нечитаемый для мира (и не-доступный для мира), но я думал, что ничего из этого не применимо, когда вы root. Например, я могу создать каталог mode-000 в / tmp и отдать его пользователю без полномочий root, и root не будет иметь проблем с его чтением, записью и прочим.

Есть идеи, что происходит?

Raldi
источник
Интересно, что вы получаете те же симптомы, когда используете sshfs в качестве обычного пользователя, а затем пытаетесь выполнить какую-либо операцию в точке монтирования от имени пользователя root. Пользователь root не имеет никаких прав для просмотра точки монтирования вообще. Вы даже не видите разрешения, ls -l возвращает все вопросительные знаки для всех битов разрешений.
GodEater
1
«Это простая домашняя установка Ubuntu 8.10, без NFS или чего-то странного». Эмм, предохранитель является «что - то странно как то»
Томас

Ответы:

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, но я не уверен, как это сделать.

Конечно, может быть намного проще просто отказаться от всех инструментов GUI, таких как gvfs, и смонтировать свои файловые системы из командной строки, где у вас есть полный контроль над тем, как что-то монтируется.

Zoredache
источник
5

.gvfsКаталог является Gnome VFS файловой системы в пользовательском пространстве обеспечивает прямой путь файловой системы для виртуальных файловых систем (например , удаленные самбы монтируют, WebDAV монтирует) так Гном может пройти пути к программам, которые не VFS-известны при работе с удаленными файлами.

Поскольку это приложение монтирования и FUSE, оно может запретить полномочия root - агент, выполняющий проверки доступа в этом случае, является приложением FUSE, а не ядром.

По умолчанию gvfsдемон только позволяет владельцу просматривать каталог.

MikeyB
источник
0

Это может быть несколько вещей, в порядке вероятности

  • проверьте / var / log / messages (или / var / log / syslog) на предмет возможного повреждения файловой системы
  • вы используете SELinux?
  • Google предлагает lsattr ~ raldi / .gvfs может указывать на специальные возможности, применяемые к этому файлу.
Дейв Чейни
источник
Я запустил fsck на диске, и он не нашел никаких проблем. Я не использую SELinux. Если я запускаю lsattr как свою учетную запись, выходных данных нет. Если я запускаю его как root, я получаю сообщение об ошибке «Отказано в доступе».
Ралди
Похоже, у Зоредача есть ответ
Дейв Чейни