Bagaimana Anda memberi tahu jika pengguna "diizinkan masuk" di Linux?

12

Pertanyaannya sederhana, saya ingin mendaftar semua akun pengguna yang dapat masuk ke sistem saya, tetapi saya tidak yakin apakah semua pengguna di / etc / passwd adalah pengguna "bisa login"?

Detail:

Saya dapat melihat pengguna yang memiliki shell /usr/sbin/nologindan /bin/falsemasuk /etc/passwd, apakah itu berarti mereka tidak bisa login?

Saya juga tahu bahwa saya dapat mengatur kata sandi pengguna yang terenkripsi menjadi *atau !masuk /etc/shadowuntuk menonaktifkan akun, jadi "pengguna yang dinonaktifkan" juga harus diperlakukan sebagai pengguna "tidak bisa masuk", kan?

Harryz
sumber

Jawaban:

13

Banyak dari ini tergantung pada definisi Anda tentang "masuk" - secara teknis setiap pengguna yang ada di /etc/passwd& /etc/shadowadalah "pengguna yang valid" dan secara teoritis dapat masuk di bawah keadaan yang tepat.

Metode yang Anda bicarakan termasuk dalam kategori luas berikut:

  • Pengguna dengan akun "terkunci"
    Seorang pengguna yang kata sandinya disetel ke *,, !atau hash lain yang tidak akan pernah cocok adalah "dikunci" (di hari-hari Minggu konvensi itu sering *LK*, untuk "Terkunci").
    Pengguna ini tidak dapat masuk dengan mengetikkan kata sandi , tetapi mereka masih bisa masuk menggunakan mekanisme otentikasi lainnya (misalnya kunci SSH).

  • Pengguna dengan shell "non-interaktif"
    Seorang pengguna yang akunnya memiliki "shell non-interaktif" ( /bin/false, /sbin/nologin) tidak dapat login secara interaktif - yaitu mereka tidak bisa mendapatkan prompt shell untuk menjalankan perintah di (ini juga mencegah SSH eksekusi perintah jika pengguna memiliki kunci SSH pada sistem).
    Pengguna ini mungkin masih dapat masuk untuk melakukan hal-hal seperti membaca / mengirim email (melalui POP / IMAP & SMTP AUTH). Mengatur shell non-interaktif untuk pengguna yang tidak perlu menggunakan shell (dan untuk sebagian besar "akun layanan") umumnya dianggap praktik yang baik.

Jadi tergantung pada kriteria Anda untuk "bisa masuk", Anda mungkin ingin memeriksa satu atau kedua hal ini.

voretaq7
sumber
6

Ada perbedaan antara menonaktifkan pengguna dan mengatur shell ke / bin / false atau serupa.

Mengatur shell ke / bin / false mencegah pengguna mendapatkan shell, tetapi mereka masih bisa masuk ke sistem jika pengguna lokal digunakan untuk sesuatu yang lain (otentikasi mail, ftp, dan sebagainya). Menonaktifkan pengguna membuatnya tidak mungkin untuk menggunakan layanan apa pun dari server yang menggunakan pengguna lokal.

Pentium100
sumber
jadi, sebenarnya semua pengguna di / etc / passwd adalah pengguna "bisa login", tetapi beberapa dari mereka dinonaktifkan (*!) dan beberapa dari mereka dibatasi (/ bin / false)?
harryz
3

Selain hal di atas, pengguna dapat dikunci dari sistem meskipun entri kata sandi mereka terlihat benar menggunakan beberapa metode berbeda.

/etc/security/access.conf dapat digunakan untuk membatasi siapa yang bisa login.

Ada banyak modul PAM yang dapat dikonfigurasi untuk membatasi pengguna tertentu, atau mengubah perilaku login berdasarkan kebutuhan. (mis. tidak ada direktori home di server yang melarang login.)

billq
sumber