Masalah dengan saran lainnya adalah itu
- mereka hanya berfungsi ketika Anda memiliki akses ke LAN perusahaan (atau VPN)
- Anda harus memelihara file sudoers di setiap komputer setiap saat
- sebagai bonus, mereka tidak bekerja untuk saya - sama sekali
Sebaliknya, saya menginginkan sesuatu yang
- cache kredensial dan akses sudo
- dikelola secara terpusat
Solusi aktual menggunakan SSSD dan memperluas skema AD. Dengan cara ini SSSD mengambil pengaturan sudo dan kredensial pengguna secara berkala dari AD dan menyimpan cache lokal. Aturan sudo kemudian disimpan dalam objek AD, di mana Anda dapat membatasi aturan untuk komputer, pengguna dan perintah, bahkan - semua itu tanpa pernah menyentuh file sudoers di workstation.
Tutorial yang tepat terlalu panjang untuk dijelaskan di sini, tetapi Anda dapat menemukan panduan langkah demi langkah dan beberapa skrip untuk membantu otomatisasi di sini:
TL; DR:
IKLAN
Ambil rilis sudo terbaru , dapatkan file doc / schema.ActiveDirectory , lalu impor (pastikan untuk memodifikasi jalur domain sesuai dengan nama domain Anda):
ldifde -i -f schema.ActiveDirectory -c "CN=Schema,CN=Configuration,DC=X" "CN=Schema,CN=Configuration,DC=ad,DC=foobar,DC=com" -j .
Verifikasi dengan ADSI Edit: buka konteks penamaan Skema dan cari kelas sudoRole .
Sekarang buat sudoers OU pada root domain Anda, OU ini akan menampung semua pengaturan sudo untuk semua workstation Linux Anda. Di bawah OU ini, buat objek sudoRole. Untuk membuat objek sudoRole Anda harus menggunakan ADSI Edit, tetapi begitu dibuat, Anda dapat menggunakan Pengguna dan Komputer Direktori Aktif untuk memodifikasinya.
Mari kita asumsikan saya memiliki komputer bernama foo32linux , seorang pengguna bernama stewie.griffin dan saya ingin membiarkan dia menjalankan semua perintah dengan sudo di komputer itu. Dalam hal ini, saya membuat objek sudoRole di bawah sudoers OU. Untuk sudoRole Anda dapat menggunakan nama yang Anda inginkan - saya tetap menggunakan nama komputer karena saya menggunakan aturan per-komputer. Sekarang atur atributnya sebagai berikut:
- sudoHost : foo32linux
- sudoCommand : ALL
- sudoUser : stewie.griffin
Untuk perintah, Anda dapat menggunakan entri tertentu juga, seperti / bin / kurang atau apa pun.
SSSD
Tambahkan ke /etc/sssd/sssd.conf Anda , setidaknya:
[sssd]
services = nss, pam, sudo
[domain/AD.FOOBAR.COM]
cache_credentials = True
SSSD menyegarkan cache lokal dengan aturan yang diperbarui setiap beberapa jam, tetapi cara paling sederhana untuk mengujinya adalah dengan hanya me-reboot komputer. Kemudian masuk dengan pengguna AD dan periksa:
sudo -l
Seharusnya daftar semua entires terkait yang Anda tambahkan ke pengguna dan komputer itu. Mudah sekali!
%Domain^Admins ALL=(ALL) ALL