ls: не может получить доступ .gvfs: в доступе отказано

11

Всякий раз, когда я запускаю приложение в терминале от имени пользователя root (например, sudo gedit /etc/default/varnish), впоследствии, когда я открываю другой терминал, я получаю сообщение об ошибке «ls: not access .gvfs: Permission denied» в верхней строке терминала.

Я нашел решение в сети

  umount /path/to/.gvfs
  rm -rf .gvfs

но это только временно исправляет проблему.

Похоже, у меня есть два смонтированных экземпляра gvfs в моей системе

  $ sudo mount |grep gvfs
    gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=33)
    gvfsd-fuse on /home/****/.gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)

Я не знаю, связано ли это с тем, что несколько месяцев назад мне пришлось изменить разрешение в моей домашней папке, например:

  sudo chown -R $USER:www-data

Не могли бы вы помочь мне исправить это?

РЕДАКТИРОВАТЬ: После размонтирования /run/user/1000/gvfsя не получаю эту ошибку.

кенна
источник
1
И это одна из причин, почему вы не должны работать sudoс графическими программами.
Муру
@muru Спасибо за ссылку, она хорошо объясняет, почему я не должен запускать sudo для открытия графических приложений. Но я все еще удивляюсь, почему я начал получать это сообщение об ошибке
kenn
Цитирую верхний ответ в связанном вопросе: «Это иногда приводит к тому, что файлы конфигурации принадлежат пользователю root и, следовательно, недоступны для вас (когда вы позже запустите программу от имени пользователя, а не от имени пользователя root»).
Муру
1
Я подозреваю, что эта конкретная ситуация может на самом деле не иметь отношения к запуску графических программ с прямым sudo . Разрешения / доступ к .gvfsпапкам пользователей всегда были интересными и (для некоторых из нас) удивительными .
Элия ​​Каган

Ответы:

9

Запуск графических приложений с sudoпомощью иногда может привести к таким проблемам.

объяснение

sudoзапускает программу с правами суперпользователя (например , работают как корень), но программа все еще видит текущий домашний каталог в вашем домашнем каталоге.

Таким образом, когда программное обеспечение записывает свои файлы конфигурации, оно в конечном итоге создает файлы в вашем домашнем каталоге, которые принадлежат пользователю root . В результате вы получите файлы, которые сами не можете редактировать или удалить, а также программное обеспечение, которое вы не сможете изменить, что приведет к большему количеству проблем.

Какое лучшее решение?

Существует альтернатива: gksudo.

Этот вариант sudo будет настраивать переменные среды, такие как домашний каталог, таким образом, что сделает работу графических приложений от имени root намного безопаснее и не будет путать программы с созданием корневых файлов в вашем домашнем каталоге.

Почему это влияет на графические приложения?

Это касается не только графических приложений, но и не всех графических приложений. Это влияет на приложения, которые хранят конфигурацию в домашнем каталоге текущего пользователя. Это чаще встречается среди графических приложений.

Иногда приложения смогут определить, запускаются ли они с помощью sudo, и соответствующим образом изменить свое поведение, но это не характерно для графических приложений, которые, как правило, не ожидают запуска с помощью sudo.

Как мне решить проблему?

Вам нужно найти корневые файлы и каталоги в вашем домашнем каталоге и удалить их. На мой взгляд, лучше удалить их, чем менять владельца, поскольку они предназначены не для вашего пользователя, а для пользователя root, поэтому могут возникнуть непредвиденные последствия, если вы просто смените владельца. Вы можете, конечно, поддержать их на тот случай, если потом решите, что в них есть что-то, что вам нужно.

Чтобы найти корневые файлы в вашем домашнем каталоге:

find ~ -user root

Если у вас по-прежнему возникают проблемы с некоторыми приложениями (запускаются как пользователь), попробуйте перезагрузить компьютер, чтобы очистить /tmpи все еще работающее приложение. Иногда некоторые приложения могли испортить свои существующие конфигурационные файлы, и вам нужно удалить все их настройки в вашем домашнем каталоге, но, надеюсь, это не будет иметь место для многих.

thomasrutter
источник
Спасибо за объяснение. Как я могу это исправить? Или у всех такая же проблема как у меня?
Кенн
3
Используя gksudoвместо того, чтобы sudoпри запуске графических программ.
Томасруттер
Так что в моей системе нет ничего плохого.
Кенн
2
Да, за исключением того, что у вас есть домашние файлы в корневом каталоге, которые не должны быть корневыми.
Томасруттер
2

Просто дайте пользователю права на .gvfs/и он должен это исправить.

sudo chown -R $USER.$USER ~/.gvfs/
Раджив Шарма
источник