Süresi dolan kullanıcı hesaplarını nasıl oluşturabilirim?


20

Bunu yapabilmek istiyorum:

Bir kullanıcının hesabı oluşturulduktan sonra, sshtünelleme yapabilmelidir , ancak geri sayım kök kullanıcı tarafından sıfırlanmadıkça hesapları 30 gün sonra otomatik olarak kaldırılır.

Bunu nasıl otomatikleştirebilirim? Yaklaşık 15 kullanıcıyla başa çıkmak zorunda kalacağım.

Yanıtlar:


29

useradd

--expiredateSeçeneğini kullanarak bir kullanıcının hesabının ne kadar süreyle geçerli olacağını kontrol edebilirsiniz useradd.

useraddman sayfasından alıntı

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

Böylece, kullanıcının hesabını ayarlarken bundan sonra +30 gün sonra bir tarih belirleyebilir useraddve hesaplarını ayarlarken bunu komutunuza ekleyebilirsiniz .

$ useradd -e 2013-07-30 someuser

chage

chageKomutu kullanarak mevcut bir hesap tarihini de değiştirebilirsiniz . Bir hesabın son kullanma tarihini değiştirmek için aşağıdakileri yaparsınız:

$ chage -E 2013-08-30 someuser

tarihi +30 gün sonra hesaplamak

Bunu yapmak aslında datekomutu kullanarak oldukça önemsizdir . Örneğin:

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

Komutun +FORMATseçeneklerini kullanarak biçimlendirebilirsiniz date, bu da size aşağıdakileri verir:

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

Hepsini bir araya koy

Yukarıdaki parçaları bilmek, bir araya getirmenin bir yolu. İlk olarak bir hesap oluştururken bu komutu çalıştırırsınız:

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

Son kullanma tarihlerini ayarlamak istediğinizde bu komutu düzenli olarak çalıştırırsınız:

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

24 saatten az zaman aralıklarını belirtme

Bir kullanıcının yalnızca birkaç dakika aktif olmasını istiyorsanız, bir tarih belirtmeyi gerektirdiği için yukarıdaki seçenekleri kullanamazsınız. Bu durumda, crontaboluşturulan kullanıcıyı belirtilen süre sonunda (örneğin, 10 dakika) kaldırmak / kilitlemek için a ayarlayabilir veya aşağıdakilerden birini yapabilirsiniz:

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

veya

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

Referanslar


3
% M (Dakika) oranını% m (ay) olarak değiştirme özgürlüğünü aldım
Anthon

5

Debian / Ubuntu kullanıyorsanız adduserve kullanmalısınız usermod. Debian tabanlı sistemlerde useradddüşük seviye olarak kabul edilir ve (man sayfalarına göre):administrators should usually use adduser(8) instead

adduser süre sonu seçeneği yoktur, bu nedenle hesabı oluşturmak için bunu kullanırsınız.

usermod, son kullanma tarihini ayarlamak için -e/ --expiredateseçeneğine sahiptir .

Parametreyi dateşununla hesaplarsınız date -d "30 days" "+%Y-%m-%d":

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

1

Başka bir yol (işletim sisteminiz hesap süresinin dolmasını desteklemiyorsa veya bu özellik herhangi bir nedenle işe yaramıyorsa): 30 gün sonra bu hesabı kilitleyecek bir cron işi ayarlayın.

Genellikle hesap şifrelenmiş parolasını geçersiz değere ayarlayarak kilitlenir; FreeBSD'de pw lock Xkomut hesabı kilitler X.


1
Bir hesabı nasıl kilitleyebileceğinizi açıklayın.
slm

Bu işletim sistemine bağımlı, gerçekten.
sendmoreinfo

4
Bunu gösteren bir örnek vermeniz yine de faydalı olacaktır.
slm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.