Bagaimana saya bisa melakukan pemetaan UID NFSv4 lintas sistem dengan ketidakcocokan UID?

11

Saya bekerja di lab dengan tiga sistem Ubuntu, dan saya ingin melakukan cross-mount beberapa sistem file melalui NFS. Namun, sementara sistem memiliki beberapa nama pengguna yang sama, UID dan GID tidak cocok, karena ketiga sistem tersebut diatur secara terpisah. Ketika saya memasang sistem file NFS dari satu sistem ke sistem lainnya, kepemilikannya salah. Sebagai contoh, jika UID 1000 adalah alice pada server1 dan UID yang sama, 1000, adalah bob pada server2, maka ketika server1 me-mount sistem file yang diekspor server2, file bob tampaknya dimiliki oleh alice.

Jadi, apakah ada cara untuk membuat NFS (v4) mengonversi UID di antara server melalui nama pengguna yang terkait? Googling untuk ini, saya telah melihat banyak referensi untuk Kerberos, LDAP, atau NIS, yang tampaknya seperti kerja keras yang sangat besar untuk tugas sederhana seperti itu, dan mungkin tidak mungkin karena sistem ini tidak dikelola secara terpusat. Tautan ini tampaknya menunjukkan bahwa apa yang saya minta tidak mungkin. Apakah itu benar?

Sunting: Saya sudah mencoba setiap konfigurasi untuk /etc/idmapd.confitu yang dapat saya pikirkan atau temukan di internet, dan sementara proses idmapd berjalan dengan jelas, sejauh ini saya belum melihat bukti bahwa NFS berusaha untuk menggunakannya sama sekali, dan tidak pernah memiliki efek apa pun pada ID pengguna yang dilaporkan pada NFS mounts.

Ryan C. Thompson
sumber
1
Saya percaya bahwa hal termudah bagi Anda adalah membawa semua barang-barang Anda. Anda dapat tetap menggunakan skema auth saat ini karena Anda hanya memiliki tiga kotak, tetapi Anda perlu menyinkronkan semua UID / GID pengguna di seluruh kotak Anda. sebenarnya ini bukan tugas yang sulit.
Serge
Ya, itulah yang akhirnya saya lakukan.
Ryan C. Thompson

Jawaban:

5

Tanpa administrasi pengguna terpusat, cara "terbaik" yang saya lihat adalah memaksa Anda semua server untuk menggunakan GID dan UID yang sama untuk setiap pengguna. Sekarang ... Saya hanya berbicara tentang file dan / atau direktori.

Apa yang akan saya lakukan dalam kasus ini adalah:

  • Daftarkan setiap UID dan GID yang sedang digunakan.
  • Edit /etc/passwddan /etc/groupcocokkan grup di semua server. Lebih disukai untuk UID dan GID baru sehingga langkah selanjutnya akan lebih cepat
  • Jalankan ini (ini akan memakan waktu):

    find / -group <OLD_GID> -exec chgrp <NEW_GID> '{}' \+
    find / -user  <OLD_UID> -exec chown <NEW_UID> '{}' \+
    
BitsOfNix
sumber
Ummm, pernyataan "find" dimulai dari direktori root. Perintahnya adalah mengubah kepemilikan setiap direktori pada sistem. Perubahan yang disarankan untuk perintah ini akan mencakup setiap file di sistem. Saya sarankan Anda membatasi direktori mana yang dijalankan oleh perintah ini atau Anda akan mengalami hari yang sangat buruk.
2
Dari find man: -group gname Benar jika file tersebut milik grup gname. Jika gname adalah numerik dan tidak muncul dalam basis data grup (4), ia diambil sebagai ID grup.
BitsOfNix
1

NFSv4 mendukung pemetaan id. Saat diaktifkan, NFS akan mengirimkan nama pengguna alih-alih nomor id. Host memiliki numeric uid yang berbeda untuk pengguna yang sama bukan masalah, karena nama pengguna dipetakan ke uids pada host.

Pemetaan id selalu digunakan dengan mode keamanan Kerberos ( sec=krb5).

Pemetaan id juga dapat digunakan dalam mode AUTH_UNIX (default sec=sys). Saya telah menjelaskan detail konfigurasi sebagai jawaban untuk: Cara mendapatkan NFSv4 idmap bekerja dengan sec = sys .

sebasth
sumber