Linux NFS membuat mask dan memaksa pengguna setara

11

Saya memiliki dua server Linux:

fileserver
Debian 5.0.3 (2.6.26-2-686)
Samba versi 3.4.2

apache
Ubuntu 10.04 LTS (2.6.32-23-generic)
Apache 2.2.14

Saya memiliki sejumlah saham Samba di server file sehingga saya dapat mengakses file dari PC Windows. Saya juga mengekspor /data/www-datake server apache , tempat saya menginstalnya /var/www.

Penyiapannya oke, kecuali ketika saya datang untuk membuat file di NFS mount. Saya berakhir dengan file yang tidak dapat dibaca oleh Apache, atau yang tidak dapat dimodifikasi oleh pengguna lain di sistem saya.

Dengan Samba, saya dapat menentukan force user, force group, create maskdan directory mask, dan memastikan bahwa semua file yang dibuat dengan izin cocok untuk web server Apache saya. Saya tidak dapat menemukan cara untuk melakukan ini dengan NFS. Apakah ada cara untuk memaksa izin dan kepemilikan dengan NFS - apakah saya kehilangan sesuatu yang jelas?

Walaupun saya telah menghabiskan cukup banyak waktu dengan Linux, dan saya menyapih diri saya dari Windows, saya masih belum cukup terbiasa dengan izin Linux ... Jika ini bukan cara yang tepat untuk melakukan sesuatu, saya terbuka untuk saran alternatif.

Mike
sumber

Jawaban:

12

Mengingat Anda berasal dari Windows, Anda akan menemukan bahwa NFS .... berbeda.

Masalah yang Anda hadapi cukup umum. NFS meneruskan UID dan GID dari file / direktori bolak-balik antara mesin dengan asumsi bahwa ID pengguna dan grup dipetakan secara identik pada keduanya . Ini berarti bahwa Anda bisa mendapatkan situasi di mana UID / GID di server diteruskan kembali ke klien NFS, tetapi tidak dapat dicocokkan dengan klien /etc/passwdatau /etc/group, yang berarti tidak ada akses.

Di masa lalu (jauh) ini adalah co-ornnated dengan NIS dan NIS +, meskipun ada skema lain yang telah dimasukkan ke dalam kerangka kerja ini (Winbind Samba menjadi salah satu dari mereka). Namun, ini membutuhkan server ID pusat, diikuti oleh banyak izin perbaikan tangan.

Ada berbagai cara untuk memperbaikinya, tetapi yang termurah / tercepat adalah membuat grup dengan nomor ID grup yang sama di kedua mesin - katakanlah, grup ID 50000 - dan tetapkan bit grup pada server file sambil menambahkan pengguna yang sesuai ke grup pada klien; kemudian gunakan izin grup pada file untuk mengontrol akses. Bukan solusi hebat tetapi akan berhasil. Perhatikan bahwa Anda dapat memiliki masalah dengan layanan yang secara eksplisit mengubah grup mereka saat runtime (alias drop hak istimewa) dan Anda mungkin perlu mengubah pengaturan yang mengontrol grup apa yang diasumsikan pada saat runtime untuk memastikan itu adalah grup yang telah Anda buat.

Untuk file-file yang masuk melalui share Windows (alias Samba) cukup memaksa grup untuk menjadi sama dengan yang Anda buat. Dengan begitu semua file secara otomatis mendapatkan GID "benar".

Avery Payne
sumber
Terima kasih atas tanggapan yang dipertimbangkan. Saya akan melihat metode bit grup, dan memberi tahu Anda bagaimana caranya.
Mike
Saya membuat www-datagrup di File server, menugaskan pengguna yang diperlukan, kemudian mengatur www-dataID grup yang sama di kedua server. Saya juga mengatur bit grup pada /data/www-datafolder dengan chmod -R g+s /var/www-data. Sekarang bekerja dengan sempurna. Terima kasih atas bantuan Anda.
Mike
Senang mendengarnya!
Avery Payne
Akan lebih baik jika NFS dapat melakukan ini untuk klien Mac.
d -_- b
9

Anda juga dapat menggunakan all_squashopsi yang membuat anonim (pengguna & grup) semua file & folder yang diekspor, dan melampirkannya ke GID & UID tertentu.

/data/www-data apache(rw,all_squash,anonuid=<your UID>,anongid=<your GID>,sync)

Masalahnya adalah bahwa semua pengguna di apacheserver akan melihat titik mount Anda dengan nobody nobodysebagai pengguna & grup, dan bisa menulis di mount (tetapi bagaimanapun, pada server Samba, file akan dibuat sebagai <your UID>/ <your GID>).

Anthony O.
sumber
Itu memecahkan masalah saya!
Luciano Andress Martini