Pertanyaan ini awalnya disebutkan passwd --delete <username>
yang tidak aman : dengan itu, bidang kata sandi terenkripsi di /etc/shadow
akan benar-benar kosong.
username::...
Jika Anda telah mengonfigurasikan Anda sshd
untuk menolak otentikasi kata sandi, maka itu aman dengan SSH ... Tetapi jika ada layanan lain di sistem Anda menggunakan otentikasi kata sandi dan tidak dikonfigurasi untuk menolak kata sandi nol, ini memungkinkan akses tanpa kata sandi! Anda tidak menginginkan ini.
adduser --disabled-passwd
akan menghasilkan /etc/shadow
entri di mana bidang kata sandi terenkripsi hanyalah tanda bintang, yaitu
username:*:...
Ini adalah "kata sandi terenkripsi yang tidak pernah berhasil dimasukkan", artinya ini berarti akun itu sah dan secara teknis memungkinkan masuk, tetapi itu membuat otentikasi dengan kata sandi tidak mungkin berhasil . Jadi, jika Anda memiliki layanan berbasis otentikasi kata sandi lain di server Anda, pengguna ini diblokir dari mereka.
Hanya metode otentikasi yang menggunakan sesuatu selain kata sandi akun standar (misalnya kunci SSH) yang akan berfungsi untuk pengguna ini, untuk layanan apa pun yang menggunakan file kata sandi sistem dalam sistem ini. Saat Anda membutuhkan pengguna yang hanya bisa masuk dengan kunci SSH, inilah yang Anda inginkan.
Jika Anda perlu mengatur akun yang ada ke negara ini, Anda dapat menggunakan perintah ini:
echo 'username:*' | chpasswd -e
Ada nilai khusus ketiga untuk bidang kata sandi terenkripsi:, adduser --disabled-login
maka bidang tersebut hanya akan berisi tanda seru.
username:!:...
Seperti asterisk, ini membuat otentikasi kata sandi mustahil untuk berhasil, tetapi juga memiliki makna tambahan: ini menandai kata sandi sebagai "terkunci" untuk beberapa alat administrasi. passwd -l
memiliki banyak efek yang sama dengan mengawali hash kata sandi yang ada dengan tanda seru, yang sekali lagi membuat otentikasi kata sandi tidak mungkin untuk digunakan.
Tapi ini jebakan bagi yang tidak waspada: di tahun 2008, versi passwd
perintah yang berasal dari shadow
paket lama diubah untuk mendefinisikan kembali passwd -l
dari "mengunci akun" menjadi hanya "mengunci kata sandi". Alasan yang disebutkan adalah "untuk kompatibilitas dengan versi passwd lainnya".
Jika Anda (seperti saya) mengetahui ini sejak lama, itu mungkin akan mengejutkan. Ini tidak membantu hal-hal yang adduser(8)
tampaknya belum menyadari perbedaan ini juga.
Bagian yang menonaktifkan akun untuk semua metode otentikasi sebenarnya menetapkan nilai tanggal berakhirnya 1 untuk account: usermod --expiredate 1 <username>
. Sebelum tahun 2008, passwd -l
itu berasal dari shadow
source kit yang digunakan untuk melakukan ini selain untuk awalan kata sandi dengan tanda seru - tetapi tidak lagi melakukannya.
Changelog paket Debian mengatakan:
- debian / patches / 494_passwd_lock-no_account_lock: Kembalikan perilaku passwd -l sebelumnya (yang berubah di # 389183): hanya mengunci kata sandi pengguna, bukan akun pengguna. Juga mendokumentasikan perbedaan secara eksplisit. Ini mengembalikan perilaku umum dengan versi passwd sebelumnya dan dengan implementasi lainnya. Tutup: # 492307
Riwayat bug untuk bug Debian 492307 dan bug 389183 dapat membantu dalam memahami pemikiran di balik ini.
sudo
akses (baik karena tidak memiliki izin sudo sama sekali, atau dengan memiliki izin sudo denganNOPASSWD
), jawaban yang Anda pilih harus sesuai. Saya telah mengirimkan suntingan pada jawaban itu untuk memasukkan masalah sudo tetapi saya pikir saya akan memberitahukannya kepada Anda di sini sementara itu.