Bagaimana cara saya membuat akun pengguna yang kedaluwarsa secara otomatis?

20

Inilah yang ingin saya lakukan:

Setelah akun pengguna dibuat, mereka harus dapat ssh-tunnel, tetapi akun mereka secara otomatis dihapus setelah 30 hari kecuali hitung mundur diatur ulang oleh pengguna root.

Bagaimana saya mengotomatisasi ini? Saya harus menangani sekitar 15 pengguna.

Yusufmm
sumber

Jawaban:

29

useradd

Anda dapat mengontrol berapa lama akun pengguna valid melalui penggunaan --expiredateopsi useradd.

kutipan dari useraddhalaman manual

-e, --expiredate EXPIRE_DATE
     The date on which the user account will be disabled. The date is
     specified in the format YYYY-MM-DD.

     If not specified, useradd will use the default expiry date specified
     by the EXPIRE variable in /etc/default/useradd, or an empty string 
     (no expiry) by default.

Jadi saat mengatur akun pengguna, Anda dapat menentukan tanggal +30 hari di masa depan dari sekarang, dan menambahkannya ke useraddperintah Anda saat mengatur akun mereka.

$ useradd -e 2013-07-30 someuser

kejar

Anda juga dapat mengubah tanggal akun yang ada menggunakan chageperintah. Untuk mengubah tanggal kedaluwarsa akun, Anda harus melakukan yang berikut:

$ chage -E 2013-08-30 someuser

menghitung tanggal +30 hari dari sekarang

Untuk melakukan ini sebenarnya cukup sepele menggunakan dateperintah. Sebagai contoh:

$ date -d "30 days"
Sun Jul 28 01:03:05 EDT 2013

Anda dapat memformat menggunakan +FORMATopsi ke dateperintah, yang akhirnya memberi Anda yang berikut:

$ date -d "30 days" +"%Y-%m-%d"
2013-05-28

Menyatukan semuanya

Jadi mengetahui bagian-bagian di atas, inilah salah satu cara untuk menyatukannya. Pertama saat membuat akun Anda akan menjalankan perintah ini:

$ useradd -e `date -d "30 days" +"%Y-%m-%d"` someuser

Kemudian ketika Anda ingin menyesuaikan tanggal kedaluwarsanya, Anda akan menjalankan perintah ini secara berkala:

$ chage -E `date -d "30 days" +"%Y-%m-%d"` someuser

Menentukan periode waktu kurang dari 24 jam

Jika Anda ingin pengguna hanya aktif selama beberapa menit, Anda tidak dapat menggunakan opsi di atas karena mereka perlu menentukan tanggal. Dalam hal ini, Anda dapat mengatur crontabuntuk menghapus / mengunci pengguna yang dibuat setelah waktu yang ditentukan (misalnya, 10 menit), atau Anda dapat melakukan salah satu dari:

adduser someuser && sleep 600 && usermod --lock someuser

atau

$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes

Referensi

slm
sumber
3
Saya mengambil kebebasan untuk mengubah% M (Menit) menjadi% m (bulan)
Anthon
5

Jika Anda menggunakan Debian / Ubuntu, Anda harus menggunakan adduserdan usermod. Pada sistem berbasis Debian useradddianggap tingkat rendah dan (menurut halaman manual):administrators should usually use adduser(8) instead

adduser tidak memiliki opsi kedaluwarsa, jadi Anda cukup menggunakannya untuk membuat akun.

usermodmemiliki -e/ --expiredatepilihan untuk mengatur tanggal kadaluarsa.

Anda menghitung parameter datedengan: date -d "30 days" "+%Y-%m-%d"untuk mendapatkan:

usermod --expiredate $(date -d "30 days" "+%Y-%m-%d") username
Anthon
sumber
1

Cara lain (jika OS Anda tidak mendukung kedaluwarsa akun atau fitur ini tidak berfungsi karena alasan apa pun): atur tugas cron untuk berjalan 30 hari dari sekarang yang akan mengunci akun ini.

Biasanya akun dikunci dengan menyetel kata sandi terenkripsi ke nilai tidak valid; pada FreeBSD, pw lock Xperintah akan mengunci akun X.

sendmoreinfo
sumber
1
Jelaskan bagaimana Anda dapat mengunci akun.
slm
Itu tergantung OS, sungguh.
sendmoreinfo
4
Akan tetap membantu jika Anda memberi contoh yang menunjukkannya.
slm