Cara mengkonfigurasi linux untuk memaksa pengguna baru untuk mengubah kata sandi mereka pada login pertama


11

Saya mencoba mengonfigurasi kebijakan kata sandi pengguna di RHEL 6.6 dan saya ingin sistem meminta pengguna yang baru dibuat untuk mengubah kata sandi awal pada login pertama.

Perhatikan, bahwa saya mencoba mengatur variabel EXPIRE ke 0 dan INACTIVE ke -1 di / etc / default / useradd, tetapi itu mengarah ke kedaluwarsa akun pengguna baru setelah pembuatan. Output dari perintah chage setelah pembuatan pengguna dengan variabel-variabel ini adalah:

 # chage -l foo
 Last password change                                : Feb 22, 2015
 Password expires                                    : May 23, 2015
 Password inactive                                   : never
 Account expires                                     : Feb 22, 2015
 Minimum number of days between password change      : 1
 Maximum number of days between password change      : 90
 Number of days of warning before password expires   : 7

Ketika saya mencoba masuk di bawah pengguna foo, pesan "Akun Anda telah kedaluwarsa. Silakan hubungi administrator sistem Anda" ditampilkan.

Tetapi jika saya membuka jendela 'Properti Pengguna', pilih tab 'Info Kata Sandi' dan centang 'Paksa ubah kata sandi pada login berikutnya', hasilnya akan seperti yang saya harapkan. Pengguna baru akan diminta untuk mengubah kata sandi. Output dari perintah chage dalam hal ini adalah:

 # chage -l foo2
 Last password change                                : password must be changed
 Password expires                                    : password must be changed
 Password inactive                                   : password must be changed
 Account expires                                     : never
 Minimum number of days between password change      : 1
 Maximum number of days between password change      : 90
 Number of days of warning before password expires   : 7

Ketika saya masuk di bawah pengguna foo2, sistem meminta saya untuk mengubah kata sandi.

Jadi, apakah ada cara untuk mengkonfigurasi sistem untuk mengatur parameter akun pengguna pada pembuatan seperti pada kasus kedua?

Pembaruan

 cat /etc/default/useradd
 # useradd defaults file
 GROUP=100
 HOME=/home
 INACTIVE=-1
 EXPIRE=0
 SHELL=/bin/bash
 SKEL=/etc/skel
 CREATE_MAIL_SPOOL=yes

Bahkan jika saya berkomentar INACTIVE atau mengaturnya ke nilai positif, akun kedaluwarsa, tetapi bukan kata sandi.

Juga, saya mengkonfigurasi PAM pada mesin.

Pembaruan 2

Saya memeriksa ini pada mesin dengan RHEL 6.2 dan tanpa konfigurasi PAM. Efeknya sama.


Anda harus mencoba menggunakan chage -d 0 {user-name}.
Hastur

Apakah ada cara untuk melakukannya secara otomatis selama perintah useradd, bukan dengan perintah atau tindakan tambahan?
Mike_Lychkov

1
EXPIRE=0di /etc/default/useraddharus melakukan pekerjaan. Saya membaca Anda mencoba. Bisakah Anda menambahkan baris tanpa komentar dari /etc/default/useradd? Terkunci bahkan jika Anda tidak menentukan INACTIVE = -1, tetapi nilai yang berbeda, atau jika Anda mengomentari baris itu? Bisakah Anda menentukan apakah akun terkunci bahkan ketika dibuat oleh baris perintah. Dan, tolong, ketika Anda memiliki pertanyaan yang berbeda, poskan di halaman yang berbeda jika jawabannya berbeda.
Hastur

1
Menggunakan addusermemungkinkan Anda memasukkan chageperintah /usr/local/sbin/adduser.local. Anda juga dapat mengatur bidang usia di / etc / shadow ke 0 secara langsung. useraddadalah "utilitas tingkat rendah," dimaksudkan untuk digunakan bersama dengan perintah lain.
mpez0

Jawaban:


1

Karena Anda bertanya tentang RHEL6, saya melihat kode sumber untuk useradd (yang dikirimkan sebagai bagian dari paket 'shadow'). Di useradd.c adalah fungsi yang disebut new_spent di mana ia mengatur entri kata sandi bayangan baru. Di sana alamat ini membahas masalah "kadaluarsa kata sandi saat pembuatan":

if (0 == spent->sp_lstchg) {
/* Better disable aging than requiring a password change */
spent->sp_lstchg = -1;

Soooo ... Jika Anda menetapkan nol itu membuatnya menjadi -1.

Para penulis program telah mengkode khusus terhadap pengaturan penuaan ke 0 sehingga tidak masalah jika Anda mengaturnya ke 0 pada parameter / etc / default / useradd untuk EXPIRE. (Jika saya yang melakukan kode itu, saya akan melihat apakah pengguna mengatur kata sandi pada perintah dan kemudian mengizinkan masa berlaku, tetapi itu bukan saya ...)

Juga, disarankan di atas bahwa Anda dapat menempatkan skrip ke /usr/local/sbin/adduser.local untuk melakukan perintah 'chage'. Ini adalah saran yang bagus untuk sistem Debian / Ubuntu di mana useradd adalah skrip perl yang memang menjalankan file itu jika menemukannya, tetapi pada RHEL perintah useradd adalah biner C.

Jika saya adalah Anda dan saya bertekad untuk mendapatkan perilaku tersebut pada useradd RHEL6, saya akan mendapatkan SRPM untuk paket shadow, beri komentar pada baris-baris di atas dan lakukan pembuatan rpm pada paket dan rockaway. Kemenangan!


1

Mengapa tidak menambahkan ini ke skrip?

passwd -e username

Jika yang Anda cari adalah login pertama, ini akan berhasil. Kata -esandi akun segera kedaluwarsa, sehingga login selanjutnya pengguna dipaksa untuk memperbarui kata sandi mereka? (lihat man passwd)


Dan jika Anda mencari solusi khusus chage, mungkin coba sakelar "-M / - maxdays" dengan nilai '0'. Saya tidak terlalu mengenal chage, tetapi dari halaman manual ini terlihat masuk akal.
tniles

-1

Otomatis:

Perbarui file ini:

/etc/default/useradd

File ini berisi perincian, semua pengaturan apa yang akan diterapkan pada pengguna baru yang dibuat ke dalam sistem dengan perintah useradd.

Cukup atur nilai EXPIRE = 0 dalam file ini, dan setelah itu, setiap kali ketika pengguna baru akan dibuat, mereka akan dipaksa untuk mengubah kata sandi pada login berikutnya.

Sumber: GeekRide

Sekarang, mengedit file di terminal itu sulit. Jadi saya mengubah izin file ke 777 menggunakan:

chmod 777 /etc/default/useradd

dan mengeditnya di grub.

(Terima kasih untuk Perintah Linux .)

Diperiksa di Ubuntu 12.04.5 VM saya.

Manual:

Gunakan sintaks berikut untuk memaksa pengguna untuk mengubah kata sandi mereka saat login berikutnya di Linux:

# chage -d 0 {user-name}

Dalam contoh ini, paksakan tom untuk mengubah kata sandi saat masuk berikutnya, masukkan:

# chage -d 0 tom

-d 0: Tetapkan jumlah hari sejak 1 Januari 1970 ketika kata sandi terakhir diubah. Tanggal juga dapat dinyatakan dalam format YYYY-MM-DD. Dengan mengaturnya ke nol, Anda akan memaksa pengguna untuk mengubah kata sandi saat login pertama kali.

Sumber: nixCraft

Copy-paste murni. Secara harfiah. ;)
Diperiksa di Ubuntu 12.04.5 VM saya.


OP ingin ini dilakukan secara otomatis selama perintah useradd, jika Anda membaca komentar di atas.
Gila

Tidak akan berkomentar hal lain, tetapi chmod -R 777 /hal yang sangat bodoh untuk dilakukan!
PulseJet

@PulseJet ya saya tahu bahwa dalam retrospeksi dan jawaban ini sudah lama jadi tolong biarkan saja
Varad Mahashabde

@VaradMahashabde maka saya akan menyarankan menghapus hal-hal seperti itu dari jawaban Anda, karena mereka setidaknya harus waras untuk orang berikutnya yang membacanya.
PulseJet
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.