ls: tidak dapat mengakses .gvfs: Izin ditolak

11

Setiap kali saya menjalankan aplikasi di terminal sebagai root (seperti sudo gedit /etc/default/varnish), kemudian ketika saya membuka terminal lain saya mendapatkan "ls: tidak dapat mengakses .gvfs: Izin ditolak" kesalahan di baris atas terminal.

Saya menemukan solusi di internet

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

tetapi itu hanya memperbaiki masalah sementara.

Tampaknya saya memiliki dua instance mount gvfs di sistem saya

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

Saya tidak tahu apakah ini terkait, beberapa bulan yang lalu saya harus mengubah izin di folder rumah saya seperti

  sudo chown -R $USER:www-data

Tolong bantu saya memperbaikinya.

EDIT: Setelah saya unmount /run/user/1000/gvfssaya tidak mendapatkan kesalahan itu.

kenn
sumber
1
Dan itulah salah satu alasan mengapa Anda tidak harus menjalankan sudodengan program grafis.
muru
@muru Terima kasih atas tautannya, ini menjelaskan dengan baik mengapa saya tidak harus menjalankan sudo untuk membuka aplikasi grafis. Tetapi saya masih bertanya-tanya mengapa saya mulai mendapatkan pesan kesalahan itu
kenn
Mengutip jawaban teratas dalam pertanyaan yang ditautkan: "Ini kadang-kadang akan menghasilkan file konfigurasi yang dimiliki oleh root dan dengan demikian tidak dapat diakses oleh Anda (ketika Anda kemudian menjalankan program seperti diri Anda sendiri dan bukan sebagai root)."
muru
1
Saya menduga situasi khusus ini mungkin sebenarnya tidak terkait dengan menjalankan program grafis dengan sudo lurus . Izin / akses pada .gvfsfolder pengguna selalu menarik dan (bagi sebagian dari kita) mengejutkan .
Eliah Kagan

Jawaban:

9

Menjalankan aplikasi grafis dengan sudoterkadang dapat menyebabkan masalah seperti ini.

Penjelasan

sudomenjalankan program dengan hak superuser (seperti menjalankan sebagai root), tetapi program masih melihat direktori home saat ini sebagai direktori home Anda .

Jadi, ketika perangkat lunak menulis file konfigurasinya, pada akhirnya akan membuat file di direktori home Anda yang dimiliki oleh pengguna root . Anda berakhir dengan file yang Anda sendiri tidak dapat edit atau hapus, dan perangkat lunak berjalan karena Anda tidak akan dapat memodifikasinya, yang mengarah ke lebih banyak masalah.

Apa solusi terbaik?

Ada alternatif: gksudo.

Varian sudo ini akan mengatur variabel lingkungan, seperti direktori home, sedemikian rupa sehingga membuat menjalankan aplikasi grafis sebagai root jauh lebih aman dan tidak akan membingungkan program untuk membuat file yang dimiliki oleh root di direktori home Anda.

Mengapa ini mempengaruhi aplikasi grafis?

Ini tidak hanya mempengaruhi aplikasi grafis, juga tidak mempengaruhi semua aplikasi grafis. Ini mempengaruhi aplikasi yang menyimpan konfigurasi di dalam direktori home pengguna saat ini. Ini hanya lebih umum di antara aplikasi grafis.

Terkadang aplikasi akan dapat mendeteksi jika mereka dijalankan dengan sudo dan menyesuaikan perilakunya sesuai, tetapi ini tidak umum dengan aplikasi grafis yang biasanya tidak diharapkan untuk dijalankan dengan sudo.

Bagaimana cara saya memperbaiki masalah?

Anda harus menemukan file yang dimiliki root dan direktori dalam direktori home Anda dan menghapusnya. Lebih baik untuk menghapus mereka daripada mengubah kepemilikan mereka menurut saya, karena mereka tidak ditujukan untuk pengguna Anda, tetapi pengguna root, jadi mungkin ada efek yang tidak terduga jika Anda mengubah kepemilikan. Anda tentu saja dapat mendukungnya jika Anda memutuskan ada sesuatu yang Anda inginkan di dalamnya nanti.

Untuk menemukan file yang dimiliki oleh root di direktori home Anda:

find ~ -user root

Jika Anda masih mengalami masalah dengan beberapa aplikasi (berjalan sebagai pengguna Anda), coba reboot untuk menghapus /tmpdan apa pun masih berjalan. Kadang-kadang beberapa aplikasi mungkin telah merusak file konfigurasi yang ada dan mengharuskan Anda untuk menghapus semua konfigurasinya di direktori home Anda, tetapi mudah-mudahan ini tidak menjadi masalah bagi banyak orang.

thomasrutter
sumber
Terima kasih atas penjelasannya. Bagaimana saya bisa memperbaikinya? Atau semua orang memiliki masalah yang sama dengan saya?
kenn
3
Dengan menggunakan gksudoalih-alih sudosaat menjalankan program grafis.
thomasrutter
Jadi tidak ada yang salah dalam sistem saya.
kenn
2
Ya, selain kemungkinan Anda sekarang memiliki file yang dimiliki oleh root di direktori home Anda yang seharusnya tidak dimiliki oleh root.
thomasrutter
2

Cukup berikan izin pengguna ke .gvfs/dan itu harus memperbaikinya.

sudo chown -R $USER.$USER ~/.gvfs/
Rajeev Sharma
sumber