Perintah getent Linux: cari pengguna, kelompok, dan host melalui NSS

Perintah getent membaca entri pengguna, kelompok, host, dan basis data lain melalui Name Service Switch (NSS), yaitu mekanisme pemilihan sumber informasi nama pada sistem. Gunakan getent untuk memeriksa hasil pencarian yang mengikuti konfigurasi sistem, termasuk sumber eksternal yang memang dikonfigurasi. Hasilnya dapat berbeda dari membaca satu berkas lokal saja.

Sintaks dan peran NSS

getent DATABASE [KUNCI...]

DATABASE dan KUNCI adalah penanda yang diganti dengan nama basis data serta nilai pencarian. Misalnya, passwd memilih basis data akun dan alice memilih nama akun yang dicari. Nama basis data ditulis sebelum kunci.

Pada implementasi GNU C Library atau glibc yang dibahas di sini, konfigurasi NSS berada dalam /etc/nsswitch.conf. Konfigurasi itu menentukan sumber, urutan pencarian, dan tindakan terhadap hasilnya. Getent tidak mengaktifkan sumber eksternal yang belum dikonfigurasi, dan keberhasilan menemukan identitas akun bukan pengujian bahwa kata sandi akun dapat dipakai untuk login.

Periksa getent --help, getent --version, dan man getent pada sistem tujuan. Implementasi atau basis data yang tersedia dapat berbeda menurut sistem.

Cari akun pengguna

getent passwd alice

Alice adalah nama contoh, bukan akun yang pasti tersedia. Ganti dengan nama yang ingin diperiksa. Pencarian dapat memperoleh data dari berkas lokal maupun sumber NSS lain, seperti direktori berbasis Lightweight Directory Access Protocol (LDAP), jika modul dan konfigurasinya tersedia.

Jika tidak ada keluaran, periksa status perintah dan konteks pencarian sebelum menyimpulkan akun tidak ada. Sumber eksternal dapat tidak tersedia atau konfigurasi dapat menyebabkan pencarian berhenti sebelum sumber lain dicoba.

Cari kelompok

getent group editors

Editors adalah kelompok contoh. Hasil pencarian group memuat entri kelompok yang ditemukan. Nama dan daftar anggota yang tercatat pada entri perlu dibaca sesuai sumbernya; jangan menganggap satu baris itu selalu sama dengan seluruh kelompok efektif proses pengguna.

Untuk memeriksa identitas dan kelompok proses saat ini, gunakan id untuk membaca UID, GID, dan kelompok. Pencarian entri akun atau kelompok tidak memperbarui keanggotaan kelompok shell yang sudah berjalan.

Cari host melalui jalur NSS

getent hosts localhost

Contoh ini mencari nama localhost melalui konfigurasi hosts sistem. Hasil alamat dan nama yang terlihat mengikuti sumber pencarian yang tersedia. Pencarian hosts tidak boleh selalu dianggap sebagai permintaan langsung ke Domain Name System (DNS), karena NSS dapat memakai berkas lokal atau layanan lain.

Keberhasilan mengubah nama menjadi alamat juga tidak membuktikan bahwa layanan jaringan pada alamat itu dapat dihubungi. Jika tujuan Anda memeriksa nama, baca hasil getent; jika tujuan Anda memeriksa layanan, lakukan pemeriksaan layanan yang sesuai secara terpisah.

Baca satu entri passwd

getent passwd root

Berikut contoh keluaran untuk menjelaskan bidang. Direktori rumah, shell, dan informasi lain pada komputer Anda dapat berbeda.

root:x:0:0:root:/root:/bin/bash

Entri memakai tujuh bidang yang dipisahkan titik dua:

  1. root: nama login pada contoh.
  2. x: penanda bidang kata sandi, bukan kata sandi asli yang ditampilkan.
  3. 0: user ID (UID), yaitu nomor identitas pengguna.
  4. 0: group ID (GID) utama dalam contoh, yaitu nomor kelompok utama.
  5. root: bidang komentar atau keterangan pengguna.
  6. /root: direktori rumah pada contoh.
  7. /bin/bash: program shell login pada contoh.

Perintah ini membaca informasi akun; kata passwd sebagai nama basis data berbeda dari menjalankan perintah penggantian kata sandi. Bentuk tujuh bidang dan arti penanda x dijelaskan dalam manual format entri passwd Linux.

Basis data dan opsi layanan pada glibc

Nama atau opsi Kegunaan
passwd Mencari entri akun pengguna.
group Mencari entri kelompok.
hosts Mencari informasi nama dan alamat host.
-s LAYANAN Mengganti pilihan layanan untuk seluruh basis data pada pemanggilan glibc tersebut.
-s DATABASE:LAYANAN Mengganti layanan hanya untuk basis data yang disebutkan.

LAYANAN adalah penanda sumber pencarian. Kedua bentuk -s mempunyai cakupan berbeda; jangan menyebut -s LAYANAN sebagai pengaturan satu basis data saja. Penggantian itu berlaku pada pemanggilan getent tersebut dan bukan penyuntingan permanen /etc/nsswitch.conf.

Opsi dan basis data yang didukung dijelaskan dalam manual getent untuk pencarian NSS. Gunakan opsi khusus glibc setelah memastikan implementasi terpasang mendukungnya.

Bedakan kunci tidak ditemukan dari masalah pencarian

Periksa status segera setelah getent selesai, misalnya dengan printf '%s\n' "$?". Pada implementasi glibc, status 0 menunjukkan keberhasilan, 1 argumen kurang atau basis data tidak dikenal, 2 satu atau lebih kunci tidak ditemukan, dan 3 enumerasi tidak didukung.

Status kunci tidak ditemukan bukan diagnosis lengkap keadaan direktori eksternal. Baca juga konfigurasi NSS serta kondisi sumber yang digunakan. Berkas lokal tidak harus berisi setiap akun yang dapat ditemukan melalui NSS, dan hasil kosong tidak selalu menjelaskan apakah masalahnya nama, sumber, atau jalur pencarian.

Urutan layanan dan tindakan seperti melanjutkan atau menghentikan pencarian dibahas dalam manual konfigurasi Name Service Switch. Mulailah dengan membaca konfigurasi dan hasil pencarian yang relevan sebelum mempertimbangkan perubahan sistem.

Mengapa pencarian satu nama berbeda dari enumerasi?

Jika kunci dihilangkan, getent mencoba menampilkan entri basis data secara keseluruhan bila enumerasi didukung. Dukungan itu berbeda menurut basis data dan sumbernya. Pencarian satu nama yang berhasil tidak menjamin sumber mengizinkan daftar seluruh entri.

Untuk menyelidiki satu akun atau kelompok, gunakan kunci spesifik terlebih dahulu. Enumerasi dapat menghasilkan keluaran besar dan tidak selalu tersedia; daftar yang tidak lengkap tidak boleh langsung dianggap sebagai bukti bahwa entri tertentu tidak ada.

FAQ

Apa beda getent passwd alice dan grep alice /etc/passwd?

Getent mencari kunci akun melalui NSS yang dikonfigurasi. Grep hanya mencari teks pada berkas lokal; pencarian alice juga dapat cocok dengan teks lain yang mengandung kata itu. Pada sistem dengan sumber akun eksternal, keduanya dapat memberikan hasil berbeda.

Apakah getent yang berhasil berarti login pasti berhasil?

Tidak. Pencarian identitas dan proses autentikasi adalah pemeriksaan berbeda. Hasil entri yang ditemukan belum membuktikan kata sandi, kebijakan akun, atau akses suatu layanan mengizinkan login.