ฉันจะสร้างบัญชีผู้ใช้ที่หมดอายุโดยอัตโนมัติได้อย่างไร


20

นี่คือสิ่งที่ฉันต้องการจะทำ:

หลังจากสร้างบัญชีผู้ใช้แล้วผู้ใช้ควรสามารถssh-tunnel ได้ แต่บัญชีของพวกเขาจะถูกลบโดยอัตโนมัติหลังจาก 30 วันเว้นแต่ว่าการรีเซ็ตจะถูกรีเซ็ตโดยผู้ใช้รูท

ฉันจะทำให้สิ่งนี้เป็นแบบอัตโนมัติได้อย่างไร ฉันจะต้องจัดการกับผู้ใช้ประมาณ 15 คน

คำตอบ:


29

useradd

คุณสามารถควบคุมระยะเวลาที่บัญชีของผู้ใช้จะถูกต้องผ่านการใช้--expiredateตัวเลือกเพื่อuseraddตัวเลือกในการ

ตัดตอนมาจากuseraddหน้าคน

-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.

ดังนั้นเมื่อตั้งค่าบัญชีผู้ใช้คุณสามารถระบุวันที่ +30 วันในอนาคตนับจากนี้และเพิ่มไปยังuseraddคำสั่งของคุณเมื่อตั้งค่าบัญชีของพวกเขา

$ useradd -e 2013-07-30 someuser

chage

นอกจากนี้คุณยังสามารถเปลี่ยนวันที่บัญชีที่มีอยู่โดยใช้chageคำสั่ง หากต้องการเปลี่ยนวันที่หมดอายุของบัญชีคุณต้องดำเนินการดังนี้:

$ chage -E 2013-08-30 someuser

คำนวณวันที่ +30 วันจากนี้

การทำเช่นนี้เป็นเรื่องเล็กน้อยโดยใช้dateคำสั่ง ตัวอย่างเช่น:

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

คุณสามารถจัดรูปแบบโดยใช้+FORMATตัวเลือกในdateคำสั่งซึ่งจะทำให้คุณได้รับสิ่งต่อไปนี้:

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

วางมันทั้งหมดเข้าด้วยกัน

ดังนั้นรู้ชิ้นข้างต้นนี่เป็นวิธีหนึ่งที่จะรวบรวมเข้าด้วยกัน ก่อนอื่นเมื่อสร้างบัญชีคุณจะต้องรันคำสั่งนี้:

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

จากนั้นเมื่อคุณต้องการปรับวันหมดอายุของพวกเขาคุณจะเรียกใช้คำสั่งนี้เป็นระยะ:

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

ระบุช่วงเวลาน้อยกว่า 24 ชั่วโมง

หากคุณต้องการให้ผู้ใช้ใช้งานได้เพียงไม่กี่นาทีคุณจะไม่สามารถใช้ตัวเลือกด้านบนได้เนื่องจากต้องระบุวันที่ ในกรณีดังกล่าวคุณสามารถตั้งค่า a crontabเพื่อลบ / ล็อคผู้ใช้ที่สร้างหลังจากเวลาที่ระบุ (ตัวอย่างเช่น 10 นาที) หรือคุณสามารถเลือกทำอย่างใดอย่างหนึ่งต่อไปนี้

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

หรือ

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

อ้างอิง


3
ฉันใช้เสรีภาพในการเปลี่ยน% M (นาที) เป็น% m (เดือน)
Anthon

5

ถ้าคุณอยู่ใน Debian / Ubuntu คุณควรใช้และadduser usermodในระบบที่ใช้ Debian useraddนั้นถือว่าอยู่ในระดับต่ำและ (อ้างอิงจาก man pages):administrators should usually use adduser(8) instead

adduser ไม่มีตัวเลือกการหมดอายุดังนั้นคุณเพียงแค่ใช้มันเพื่อสร้างบัญชี

usermodมีตัวเลือก-e/ --expiredateเพื่อตั้งวันที่หมดอายุ

คุณคำนวณพารามิเตอร์เป็นdate: date -d "30 days" "+%Y-%m-%d"เพื่อรับ:

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

1

อีกวิธีหนึ่ง (หากระบบปฏิบัติการของคุณไม่รองรับการหมดอายุบัญชีหรือคุณสมบัตินี้ไม่สามารถใช้งานได้ไม่ว่าด้วยเหตุผลใดก็ตาม): ตั้งค่างาน cron ให้ทำงานได้ 30 วันนับจากนี้ซึ่งจะล็อคบัญชีนี้

โดยปกติบัญชีจะถูกล็อคโดยการตั้งรหัสผ่านที่เข้ารหัสเป็นค่าที่ไม่ถูกต้อง บน FreeBSD, คำสั่งจะล็อคบัญชีpw lock XX


1
อธิบายวิธีที่คุณสามารถล็อคบัญชี
slm

มันขึ้นอยู่กับระบบปฏิบัติการจริงๆ
sendmoreinfo

4
มันจะยังคงมีประโยชน์หากคุณยกตัวอย่างที่แสดง
slm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.