Як я можу створити облікові записи користувачів, що закінчуються автоматично?


20

Це те, що я хотів би зробити:

Після створення облікового запису користувача він повинен мати змогу ssh-навчатися, але їх обліковий запис автоматично видаляється через 30 днів, якщо відлік часу не буде скинутий кореневим користувачем.

Як я можу це автоматизувати? Мені доведеться обробляти близько 15 користувачів.

Відповіді:


29

useradd

Ви можете керувати тим, як довго діє обліковий запис користувача, використовуючи --expiredateопцію для useradd.

уривок зі useraddсторінки man

-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 -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 годин

Якщо ви бажаєте, щоб користувач був активним лише кілька хвилин, ви не можете скористатися описаними вище параметрами, оскільки вони вимагають вказати дату. У такому випадку ви можете або налаштувати 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, вважається низьким рівнем і (за даними сторінок):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 Xкоманда заблокує акаунт X.


1
Поясніть, як можна заблокувати рахунок.
slm

Це насправді залежить від ОС.
sendmoreinfo

4
Все-таки було б корисно, якби ви навели приклад, що його показує.
slm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.