Buat akun baru bernama test :
$ sudo useradd test
test tidak memiliki kata sandi sekarang. Jadi
$ su test
tidak bekerja. Jika Anda mencoba, Anda akan diminta untuk test kata sandi. Itu tidak memiliki satu. Itu tidak sama dengan kata sandinya yang kosong jadi jika Anda memasukkan kata sandi kosong dengan menekan enter, Anda mendapatkan pesan “su:Authentication failure”.
Hal yang sama berlaku jika Anda beralih ke tty dan mencoba masuk sebagai test :Kata sandi kosong tidak diterima.
Sekarang tetapkan test kata sandi kosong:
$ sudo passwd -d test
Anda sekarang dapat masuk sebagai test pada tty dengan memberikan string kosong sebagai kata sandi. Namun, jika Anda mencoba
$ su test
lagi, Anda masih mendapatkan pesan “su:Authentication failure” sesi tidak beralih ke pengguna test .
Mengapa ini?
Jawaban yang Diterima:
Dari keluaran ldd /bin/su , su biner dikompilasi dengan pam perpustakaan (libpam* ), sehingga otentikasi, manajemen akun, inisiasi sesi, dll. akan dikelola oleh pam .
Berikut ini adalah bagaimana sistem su khas Ubuntu dikelola oleh pam , Anda harus menemukan pendekatan serupa jika Anda menggunakan distro lain.
pam aturan untuk su didefinisikan dalam file /etc/pam.d/su . File ini juga menyertakan common-auth , common-passwd , common-session file dari direktori yang sama sebagai template umum untuk mencakup tugas-tugas yang disarankan namanya (dan digunakan di pam lainnya layanan yang diaktifkan).
Di sistem saya, di bagian bawah /etc/pam.d/su saya punya:
@include common-auth
@include common-account
@include common-session
Baris sebelumnya tidak berurusan dengan pemeriksaan kata sandi nol, ini terutama tugas pam_unix modul.
Sekarang /etc/pam.d/common-auth memiliki:
auth [success=1 default=ignore] pam_unix.so nullok_secure
Dari man pam_unix :
nullok
Tindakan default modul ini adalah tidak mengizinkan akses pengguna ke layanan jika kata sandi resmi mereka kosong. Argumen nullok mengesampingkan default ini dan mengizinkan setiap pengguna dengan
sandi kosong untuk mengakses layanan.nullok_secure
Tindakan default modul ini adalah tidak mengizinkan akses pengguna ke layanan jika kata sandi resmi mereka kosong. Argumen nullok_secure mengesampingkan default ini dan mengizinkan setiap pengguna
dengan sandi kosong untuk mengakses layanan selama nilai PAM_TTY disetel ke salah satu nilai yang ditemukan di /etc/securetty.
seperti yang Anda lihat jika nullok_secure opsi disetel, kecuali variabel lingkungan PAM_TTY diatur dengan cara yang disebutkan, pengguna dengan kata sandi nol tidak akan diizinkan untuk masuk menggunakan su .
Jadi untuk mengizinkan pengguna dengan kata sandi nol melakukan su , Anda harus memiliki nullok argumen ke pam_unix modul:
auth [success=1 default=ignore] pam_unix.so nullok
ini tidak aman sebagai common-auth file digunakan oleh banyak layanan lain, bahkan hanya untuk su ini tidak boleh dilakukan. (Demi pengujian Anda dapat mengaturnya sekali dan kemudian kembali ke aslinya. Meskipun jika Anda ingin melakukan pengujian, lebih baik untuk memasukkan semua logika di /etc/pam.d/su file, dan ubah perubahan apa pun setelahnya daripada mengacaukan common-* berkas)