Masalahnya
id perintah menunjukkan UID dan GID yang berbeda pada server sssd yang berbeda untuk pengguna Windows Active Directory yang sama. Setelah membersihkan cache sssd dengan sss_cache, UID dan GID masih berbeda.
1. Keluaran dari satu server:
# id ad_test_user uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_group2),[GID](ad_test_group)
# sss_cache -u ad_test_user
# id ad_test_user uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_group2),[GID](ad_test_group)
2. Keluaran dari server lain:
# id ad_test_user uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_groups),[GID](ad_test_group3),[GID](ad_test_group4),[GID](ad_test_group5), [GID](ad_test_group2),[GID](ad_test_group)
# sss_cache -u ad_test_user
# id ad_test_user uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_groups),[GID](ad_test_group3),[GID](ad_test_group4),[GID](ad_test_group5), [GID](ad_test_group2),[GID](ad_test_group)
Kemungkinan dampak ke server Linux:Pengguna AD tidak dapat masuk ke Linux
# su - ad_test_user Last login: Fri Sep 11 11:11:11 COT 2015 from 10.10.xx.xx on pts/1 Last failed login: Tue Mar 13 13:13:13 COT 2015 from 10.10.10.2 on ssh:hostname There were 1 failed login attempts since the last successful login. su: warning: cannot change directory to /home/ad_test_user: Permission denied id: cannot find name for group ID [GID] -bash: /home/ad_test_user/.bash_profile: Permission denied -bash-4.2$
Solusinya
UID dan GID pengguna Linux berasal dari Windows AD SID. SSD tidak akan mengubahnya. Fitur pemetaan ID memungkinkan sssd untuk bertindak sebagai klien Active Directory tanpa mengharuskan administrator untuk memperluas atribut pengguna guna mendukung atribut POSIX untuk pengidentifikasi pengguna dan grup.
Active Directory menyediakan objectSID untuk setiap pengguna dan objek grup dalam direktori. ObjectSID ini dapat dipecah menjadi komponen yang mewakili identitas domain Direktori Aktif dan pengidentifikasi relatif (RID) dari objek pengguna atau grup. Algoritme pemetaan ID sssd mengambil rentang UID yang tersedia dan membaginya menjadi bagian komponen berukuran sama – yang disebut “slices “-. Setiap irisan mewakili ruang yang tersedia untuk domain Direktori Aktif.
Ketika entri pengguna atau grup untuk domain tertentu ditemukan untuk pertama kalinya, sssd(8) mengalokasikan salah satu irisan yang tersedia untuk domain tersebut. Untuk membuat penugasan irisan ini dapat diulang pada mesin klien yang berbeda, algoritma berikut digunakan:string SID dilewatkan melalui algoritma murmurhash3 untuk mengubahnya menjadi nilai hash 32-bit. Kemudian ambil modulus nilai ini dengan jumlah total irisan yang tersedia untuk memilih irisan.
Catatan :Dimungkinkan untuk menemukan tabrakan dalam hash dan modulus berikutnya. Dalam situasi ini, irisan yang tersedia berikutnya digunakan, tetapi mungkin tidak mungkin untuk mereproduksi set irisan yang sama persis pada mesin lain karena urutan yang ditemui akan menentukan irisannya. Dalam situasi ini, disarankan untuk beralih menggunakan atribut POSIX eksplisit di Active Directory (menonaktifkan pemetaan ID) atau mengonfigurasi domain default untuk menjamin bahwa setidaknya satu selalu konsisten. Lihat “Konfigurasi” untuk detailnya.Saat ID-mapping diaktifkan di sssd(8), atribut uidNumber dan gidNumber diabaikan. Ini untuk menghindari kemungkinan konflik antara nilai yang ditetapkan secara otomatis dan yang ditetapkan secara manual. Jika Anda perlu menggunakan nilai yang ditetapkan secara manual, SEMUA nilai harus ditetapkan secara manual.
Catatan :mengubah opsi konfigurasi terkait pemetaan ID akan menyebabkan ID pengguna dan grup berubah. Saat ini, sssd(8) tidak mendukung perubahan ID, jadi database sssd harus dihapus. Karena kata sandi yang di-cache juga disimpan dalam database, penghapusan database hanya boleh dilakukan saat server otentikasi dapat dijangkau, jika tidak, pengguna mungkin akan terkunci. Untuk men-cache kata sandi, otentikasi harus dilakukan.sssd.conf file pada klien Linux harus konsisten. Terutama dua parameter berikut harus konsisten di semua sssd.conf karena mereka mempengaruhi algoritma pemetaan ID sssd:
1. ldap_idmap_default_domain_sid (string)
Tentukan SID domain dari domain default. Ini akan menjamin bahwa domain ini akan selalu ditetapkan ke irisan nol di peta ID, melewati algoritma murmurhash yang dijelaskan di atas.
Default:not set
2. ldap_idmap_default_domain (string)
Tentukan nama domain default.
Default:tidak disetel