ls: nie można uzyskać dostępu do .gvfs: odmowa dostępu

11

Ilekroć uruchamiam aplikację w terminalu jako root (np. sudo gedit /etc/default/varnish), A następnie, gdy otwieram inny terminal, pojawia się błąd „ls: access to .gvfs: Permission denied” w górnej linii terminala.

Znalazłem rozwiązanie w sieci

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

ale to tylko tymczasowo naprawia problem.

Wygląda na to, że mam dwa zamontowane wystąpienia gvfs w moim systemie

  $ 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)

Nie wiem, czy jest to powiązane, kilka miesięcy temu musiałem zmienić uprawnienia w moim folderze domowym jak

  sudo chown -R $USER:www-data

Czy mógłbyś mi pomóc to naprawić?

EDYCJA: Po odmontowaniu nie pojawia /run/user/1000/gvfssię ten błąd.

kenn
źródło
1
I to jest jeden z powodów, dla których nie powinieneś uruchamiać sudoprogramów graficznych.
muru
@muru Dziękuję za link, dobrze wyjaśnia, dlaczego nie powinienem uruchamiać sudo, aby otwierać aplikacje graficzne. Ale nadal zastanawiam się, dlaczego zacząłem otrzymywać ten komunikat o błędzie
kenn
Cytując najwyższą odpowiedź w połączonym pytaniu: „Czasami spowoduje to, że pliki konfiguracyjne będą własnością root i przez to będą niedostępne dla ciebie (kiedy później uruchomisz program jako ty, a nie jako root)”.
muru
1
Podejrzewam, że ta konkretna sytuacja może w rzeczywistości nie być związana z uruchomieniem programów graficznych przy użyciu prostego sudo . Uprawnienia / dostęp do .gvfsfolderów użytkowników zawsze były interesujące i (dla niektórych z nas) zaskakujące .
Eliah Kagan

Odpowiedzi:

10

Uruchamianie aplikacji graficznych sudomoże czasem prowadzić do takich problemów.

Wyjaśnienie

sudouruchamia program z uprawnieniami administratora (jak uruchomiony jako root), ale program nadal widzi aktualny katalog domowy w swoim katalogu domowym.

Kiedy więc oprogramowanie zapisuje swoje pliki konfiguracyjne, kończy tworzenie plików w twoim katalogu domowym, które są własnością użytkownika root . Skończysz z plikami, których sam nie możesz edytować ani usuwać, a oprogramowanie działa, ponieważ nie będziesz mógł go modyfikować, co prowadzi do dalszych problemów.

Jakie jest najlepsze rozwiązanie?

Istnieje alternatywa: gksudo.

Ten wariant sudo skonfiguruje zmienne środowiskowe, takie jak katalog domowy, w taki sposób, że sprawia, że ​​uruchamianie aplikacji graficznych jako root jest znacznie bezpieczniejsze i nie myli programów z tworzeniem plików root w twoim katalogu domowym.

Dlaczego wpływa to na aplikacje graficzne?

Nie dotyczy to tylko aplikacji graficznych, ani nie wpływa na wszystkie aplikacje graficzne. Wpływa na aplikacje przechowujące konfigurację w katalogu osobistym bieżącego użytkownika. Jest to po prostu bardziej powszechne w aplikacjach graficznych.

Czasami aplikacje będą w stanie wykryć, czy działają z sudo i odpowiednio dostosować swoje zachowanie, ale nie jest to powszechne w aplikacjach graficznych, które zwykle nie powinny być uruchamiane z sudo.

Jak rozwiązać problem?

Będziesz musiał znaleźć pliki i katalogi będące własnością roota w swoim katalogu domowym i usunąć je. Moim zdaniem lepiej je usunąć niż zmienić ich własność, ponieważ nie były one przeznaczone dla twojego użytkownika, ale użytkownika root, więc mogą wystąpić nieoczekiwane skutki, jeśli po prostu zmienisz własność. Możesz oczywiście wykonać ich kopię zapasową na wypadek, gdybyś zdecydował, że jest coś, co chcesz w nich później.

Aby znaleźć pliki należące do katalogu głównego w swoim katalogu domowym:

find ~ -user root

Jeśli nadal masz problemy z niektórymi aplikacjami (działającymi jako użytkownik), spróbuj ponownie uruchomić komputer, aby usunąć /tmpi wszystko nadal działa. Czasami niektóre aplikacje mogły uszkodzić istniejące pliki konfiguracyjne i trzeba usunąć całą ich konfigurację z katalogu domowego, ale mam nadzieję, że dla wielu nie będzie tak.

thomasrutter
źródło
Dziękuję za wyjaśnienie. Jak mogę to naprawić? Czy wszyscy mają ten sam problem co ja?
kenn
3
Używając gksudozamiast sudopodczas uruchamiania programów graficznych.
thomasrutter
Więc nie ma nic złego w moim systemie.
kenn
2
Tak, oprócz możliwości posiadania plików root w katalogu domowym, które nie powinny być rootem.
thomasrutter
2

Wystarczy dać użytkownikowi uprawnienia .gvfs/i powinien to naprawić.

sudo chown -R $USER.$USER ~/.gvfs/
Rajeev Sharma
źródło