Mengapa tidak dapat menemukan read / run / user / 1000 / gvfs meskipun sedang dijalankan sebagai root?

34

Dapatkah seseorang memberi tahu saya apa yang saya lakukan salah, apa ini, atau bagaimana cara memperbaikinya? Saya menjalankan Fedora 18 dan menampilkan kesalahan

[root@servername /]# find . -name ngirc
find: `./run/user/1000/gvfs': Permission denied
[root@servername /]# 
[root@thinktank /]# pwd
/
[root@thinktank /]# ls -ltr ./run/user/1000
ls: cannot access ./run/user/1000/gvfs: Permission denied
total 0
d?????????? ? ?    ?      ?            ? gvfs
lrwxrwxrwx. 1 root root  17 May 28 12:30 X11-display -> /tmp/.X11-unix/X0
drwx------. 2 kal  kal  120 May 28 12:30 keyring-QjDw4b
drwx------. 2 kal  kal   40 May 28 12:30 gvfs-burn
drwx------. 2 kal  kal   60 May 28 12:30 krb5cc_5f0bcaf94f916d6b61696e2251a4dbb3
drwx------. 2 kal  kal   60 May 28 18:25 dconf
kal
sumber
Anda tidak melakukan kesalahan apa pun dan saran saya adalah mengabaikan kesalahan itu. Jika itu tidak dapat diterima, bagaimana dengan mengecualikan titik mount GVFS di findbaris perintah?
tripleee

Jawaban:

33

Anda tidak melakukan kesalahan, dan tidak ada yang bisa diperbaiki. /run/user/$uid/gvfsatau ~$user/.gvfstitik mount untuk antarmuka FUSE ke GVFS . GVFS adalah implementasi sistem file virtual untuk Gnome, yang memungkinkan aplikasi Gnome untuk mengakses sumber daya seperti server FTP atau Samba atau konten file zip seperti direktori lokal. FUSE adalah cara untuk mengimplementasikan driver sistem file sebagai kode pengguna (bukan kode kernel). Gerbang GVFS-FUSE membuat driver sistem file GVFS dapat diakses oleh semua aplikasi, tidak hanya yang menggunakan pustaka Gnome.

Mengelola batas-batas kepercayaan dengan filesystem FUSE sulit, karena driver filesystem berjalan sebagai pengguna yang tidak berhak, sebagai lawan dari kode kernel untuk sistem file tradisional. Untuk menghindari komplikasi, secara default, sistem file FUSE hanya dapat diakses oleh pengguna yang menjalankan proses driver. Bahkan root tidak bisa melewati batasan ini.

Jika Anda mencari file hanya pada sistem file lokal, sampaikan -xdevke find. Jika Anda ingin melintasi beberapa sistem file lokal, sebutkan semuanya.

find  / /home -xdev -name ngirc

Jika file telah ada sejak kemarin, Anda dapat mencoba locate ngircsebagai gantinya ( locatemencari melalui database nama file yang biasanya diperbarui setiap malam).

Jika Anda ingin melintasi titik pemasangan GVFS, Anda harus melakukannya sebagai pengguna yang tepat.

find / -name ngirc -path '/run/user/*/gvfs' -prune -o -path '/home/*/.gvfs' -prune -o -name ngirc -print
for d in /run/user/*; do su "${d##*/}" -c "find $d -name ngirc -print"; done
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Terima kasih atas penjelasan hebat tentang GVFS dan FUSE. Saya mencoba menjalankan 'temukan' seperti pada contoh Anda dan itu berhasil.
kal
Bagaimana FUSE mencegah root mengakses file? Tentunya root memiliki kemampuan untuk menonaktifkan proteksi semacam itu.
Akinos
1
@Nat Root dapat mengubah fsuid prosesnya menjadi uid target, jadi dalam arti keamanan mem-bypass perlindungan itu sepele. Tetapi fungsi kontrol akses di kernel menolak akses ke root. Fenomena ini juga terjadi dengan sistem file lain, misalnya root tidak dapat mengakses direktori pribadi di NFS tanpa beralih ke UID pemilik.
Gilles 'SO- stop being evil'
2
untuk "menghindari komplikasi" ... Yah itu pasti membuat satu komplikasi besar karena saya tidak bisa menggunakan perintah mount untuk memetakan path share ke nama folder yang lebih bersih .. Akses ditolak untuk me-root ketika menggunakan sudo mount.
Nuzzolilo
@ Nuzzolilo Saya tidak tahu apa yang Anda bicarakan. Jika Anda memiliki masalah, ajukan pertanyaan baru, dan pastikan untuk menjelaskan skenario Anda.
Gilles 'SANGAT berhenti menjadi jahat'
10

Ini masalah sekering . Tidak ada pengguna kecuali pemilik dapat membaca. Untuk mengatasi konfigurasi default, coba aktifkan opsi user_allow_other. Opsi ini ditentukan dengan menambahkannya ke /etc/fuse.conf. Tidak memiliki nilai, cukup tentukan opsi pada baris kosong.

Christopher
sumber
Terima kasih. Saya tidak benar-benar mengerti apa itu sekering, tetapi setelah membaca sedikit dari laporan bug di komentar Anda dan komentar don_crissti, saya kira ini ada hubungannya dengan hard drive USB yang saya pasang atau server samba saya? Apakah ada masalah keamanan yang harus saya pertimbangkan ketika mengaktifkan "user_allow_other" dan apakah ada opsi lain untuk pemasangan yang harus saya pertimbangkan? Terima kasih.
kal
1
Terima kasih, tetapi ini bukan solusi bagi saya jika tidak ada orang lain yang dapat menggunakan sistem. Bagaimana saya bisa tahu siapa pemiliknya? Saya mencoba melepas / melepas sambungan hard drive eksternal saya dan mematikan server samba saya. Yang saya benar-benar ingin lakukan adalah dapat mencari seluruh filesystem untuk file tanpa mengorbankan keamanan. Apakah ada alternatif untuk FUSE dan apakah ada cara untuk mengetahui dengan tepat untuk apa ia digunakan? Terima kasih.
kal
askubuntu.com/questions/715637/... Saya mencoba saran dari @Christopher tetapi opsi baris perintah tidak dihormati. Saya curiga bahwa peluncur otomatis daemon dikonfigurasikan dengan cara tertentu, tetapi saya tidak dapat menemukan dokumentasi konfigurasi untuk melakukannya
Nuzzolilo
3

Jika Anda mendapatkan izin dan detail lainnya untuk gvfs seperti berikut ini

d?????????? ? ?    ?      ?            ? gvfs

kemudian lepaskan gvf Anda menggunakan perintah berikut. Masalah Anda akan terselesaikan setelah mengikuti proses ini.

umount ~/gvfs(umount /run/user/112/gvfs in my case).

GVFS (Sistem File Virtual GNOME) adalah sistem file virtual untuk desktop GNOME, yang memungkinkan pengguna akses mudah ke data jarak jauh melalui SFTP, FTP, WebDAV, SMB, dan data lokal melalui integrasi udev sehingga Anda tidak perlu takut saat melepas ini .

Mohd Meesam
sumber
3

ini adalah utas lama tetapi dalam laporan bug gnome ini merupakan masalah terbuka baru-baru ini sehingga mungkin bermanfaat bagi siapa pun yang mencari berjam-jam solusi untuk memperbaiki masalah gvfs-fuser - yang semuanya tampaknya terkait erat.

Kesalahan Msg dari berbaur:

Error copying '/media/root/5FDA03906F33F217/SAVE/rsyncTEST-usb/allusers' to '/run/user/0/gvfs/ftp:host=192.168.0.103/var/ftp/ftpd/images/PersistenceUSBs/rsync-meld/allusers'

[Errno 95] Operation not supported: '/run/user/0/gvfs/ftp:host=192.168.0.103/var/ftp/ftpd/images/PersistenceUSBs/rsync-meld/allusers'.

Saya mengalami masalah gvfs-fuser mencoba menggunakan meld / diff / kdiff over ftp. Tampaknya masalahnya adalah antara fuser dan gvfs. Masalahnya tampaknya tidak terjadi pada 3.15.1 tetapi mulai dilaporkan dalam 3.15.2. (Python ver baru?) Solusi adalah solusi bukan perbaikan - file / direktori akan menyalin tetapi kesalahan masih ditampilkan.

Jawaban Christopher mendefinisikan masalah dan memberikan solusi.

Solusi lain yang mungkin adalah menggunakan sshfs (lihat komentar ini dan utas ini ). Untuk informasi lebih lanjut tentang gvfs-commands, lihat Apa perbedaan antara perintah gvfs dan perintah umum seperti cat, ls, cp?

Bug yang mungkin terkait termasuk GNOME # 317875 dan GNOME # 768281 .

keraguan
sumber