Mengapa tidak dapat melakukan rooting pada satu mesin mengubah konten yang dipasang di nfs dari komputer lain?

14

Di server NFS saya, saya memiliki ekspor yang ditentukan sebagai berikut:

#NFS exports Database
/shared -alldirs -network=192.168.1 -mask=255.255.255.0

Di klien NFS saya:

192.168.1.7:/shared /shared nfs rw 0 0

Jelas, sebagai root di server, saya dapat melakukan apa pun yang saya inginkan. Namun pada klien, pengguna reguler saya 'gabe' dapat membuat perubahan pada mount nfs (dengan asumsi saya memiliki izin), tetapi root tidak bisa.

Sebagai pengguna reguler saya:

gabe@client$ cd /shared
gabe@client$ ls -l
total 8
drwxrwxrwx  4 gabe  wheel   512 Mar 20 19:20 tmp
gabe@client$ cd tmp
gabe@client$ touch test.txt
gabe@client$ rm test.txt

Sebagai root:

# cd /shared/tmp
# touch test.txt
touch: test.txt: Permission denied

Sekali lagi, ini semua ada di sisi klien NFS , dan saya kira mungkin ini ada hubungannya dengan opsi -maproot. Ini adalah pertama kalinya saya mengatur NFS dan saya baru menyadari keanehan ini. Saya akan melakukan beberapa bacaan sekarang, untuk melihat apakah saya bisa mengetahuinya, tetapi jika ada yang punya wawasan, saya akan sangat menghargainya.

gabe
sumber

Jawaban:

18

NFS dirancang dengan gagasan bahwa id pengguna dan grup akan sama pada semua mesin di seluruh jaringan. Untuk pengguna biasa, itu berfungsi baik. Tetapi root UID selalu 0, dan hanya karena Anda memiliki root pada satu kotak, itu tidak berarti bahwa Anda harus memiliki akses root ke setiap mesin di jaringan.

Karena itu, NFS memperlakukan root secara khusus. Secara default, root dipetakan ke nobodypengguna, yang biasanya tidak memiliki akses tulis. The -maprootpilihan memungkinkan Anda untuk mengubah cara root ditangani. BSD -maproot=rootsesuai dengan no_root_squashopsi Linux .

cjm
sumber
Ya memang. Ini memperbaiki masalah saya. Halaman manual yang saya baca sedikit samar (atau pemahaman saya) sehubungan dengan apa yang dilakukan maproot sebenarnya. Terima kasih!
gabe.
Noob lain di sini. Saya bertanya-tanya apakah kalian mungkin tahu cara untuk mengetahui apakah drive NFS telah dikonfigurasi untuk menggunakan -maprootopsi tanpa memiliki akses ke Server NFS.
John
@ John, itu cukup berbeda sehingga Anda harus mengajukan pertanyaan baru alih-alih menambahkan komentar.
cjm
5

Itu perilaku umum dengan implementasi NFS tradisional. Pemetaan pengguna NFS dilakukan terlepas dari konteks, sehingga semua akses oleh root klien harus dipetakan ke pengguna tertentu (biasanya nobodysecara default). Oleh karena itu perilaku aneh ini, di mana root klien tidak dapat mengakses file Anda secara langsung, tetapi dapat su gabemengaksesnya.

(Versi “NFS” terbaru, yaitu NFSv4 dan mungkin NFSv3, memungkinkan perilaku yang lebih waras jika didukung di kedua sisi, tetapi saya tidak tahu detailnya.)

Gilles 'SANGAT berhenti menjadi jahat'
sumber