Direktori yang dapat dibaca pengguna, tetapi root tidak bisa?

9

Ada direktori di bawah homedir saya yang disebut ".gvfs". Sebagai akun pengguna reguler saya, saya dapat membacanya dengan baik:

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

Namun, sebagai root saya tidak bisa "ls" atau bahkan "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

Dan, hanya untuk memastikan:

# echo $UID $EUID
0 0

Ini hanyalah instalasi rumah sederhana dari Ubuntu 8.10, tidak ada NFS atau yang aneh seperti itu. Saya melihat bahwa direktori tersebut ditandai sebagai tidak dapat dibaca dunia (dan tidak dapat digunakan oleh dunia), tetapi saya pikir tidak ada satupun yang diterapkan ketika Anda melakukan root. Sebagai contoh, saya dapat membuat direktori mode-000 di / tmp dan memberikannya kepada pengguna non-root, dan root tidak kesulitan membacanya, menulisnya, apa pun.

Adakah yang tahu apa yang terjadi?

raldi
sumber
Menariknya, Anda mendapatkan gejala yang sama saat menggunakan sshfs sebagai pengguna biasa, dan kemudian mencoba segala jenis operasi pada titik pemasangan sebagai root. Pengguna root tidak memiliki izin untuk melihat titik pemasangan sama sekali. Anda bahkan tidak dapat melihat izin, ls-l mengembalikan semua tanda tanya untuk semua bit izin.
GodEater
1
"Ini hanyalah instalasi rumah sederhana dari Ubuntu 8.10, tidak ada NFS atau sesuatu yang aneh seperti itu". Uhm, sumbu adalah "sesuatu yang aneh seperti itu"
Thomas

Jawaban:

21

Dari: http://bugzilla.gnome.org/show_bug.cgi?id=534284

Ini semua disayangkan, tetapi ini merupakan keputusan yang telah diambil oleh orang-orang sekering di tingkat kernel (pengguna lain selain yang memasang fs tidak dapat mengaksesnya, termasuk root) dan tidak ada yang bisa kita lakukan untuk itu.

Lihat juga: https://bugs.launchpad.net/gvfs/+bug/225361

Solusinya tampaknya memperbarui /etc/fuse.conf Anda dan mengaktifkan opsi user_allow_other . Anda mungkin juga perlu mendapatkan gvfs untuk mengirimkan allow_root atau allow_other, tetapi saya tidak yakin bagaimana melakukan ini.

Tentu saja mungkin jauh lebih mudah untuk menyerah pada semua alat GUI seperti gvfs dan me-mount sistem file Anda dari baris perintah di mana Anda memiliki kontrol penuh tentang bagaimana sesuatu akan di-mount.

Sakit kepala
sumber
5

The .gvfsdirektori adalah Gnome VFS userspace filesystem yang menyediakan jalur langsung filesystem untuk filesystem virtual (misalnya jarak jauh samba gunung, WebDAV gunung) sehingga Gnome bisa lewat jalan untuk program yang tidak VFS-sadar ketika beroperasi pada file remote.

Karena ini adalah pemasangan & aplikasi FUSE, ia dapat menolak izin untuk melakukan root - agen yang melakukan pemeriksaan akses dalam hal ini adalah aplikasi FUSE, bukan kernel.

Secara default gvfsdaemon hanya memungkinkan pemilik untuk menelusuri direktori.

MikeyB
sumber
0

Bisa jadi beberapa hal, dalam urutan kemungkinan

  • periksa / var / log / messages (atau / var / log / syslog) untuk kemungkinan kerusakan sistem file
  • apakah Anda menggunakan SELinux?
  • google menyarankan lsattr ~ raldi / .gvfs dapat menunjukkan kemampuan khusus yang diterapkan pada file itu.
Dave Cheney
sumber
Saya menjalankan fsck pada disk dan tidak menemukan masalah. Saya tidak menggunakan SELinux. Jika saya menjalankan lsattr sebagai akun pengguna saya, tidak ada output. Jika saya menjalankannya sebagai root, saya mendapatkan kesalahan "izin ditolak".
raldi
Sepertinya Zoredache memiliki jawabannya
Dave Cheney