useradd
Você pode controlar por quanto tempo a conta de um usuário é válida através do uso da --expiredate
opção useradd
.
trecho da useradd
página de 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.
Portanto, ao configurar a conta do usuário, você poderá especificar uma data de mais de 30 dias no futuro e adicioná-la ao seu useradd
comando ao configurar as contas deles.
$ useradd -e 2013-07-30 someuser
chage
Você também pode alterar uma data de contas existente usando o chage
comando Para alterar a data de validade de uma conta, faça o seguinte:
$ chage -E 2013-08-30 someuser
calculando a data +30 dias a partir de agora
Fazer isso é bastante trivial usando o date
comando Por exemplo:
$ date -d "30 days"
Sun Jul 28 01:03:05 EDT 2013
Você pode formatar usando as +FORMAT
opções do date
comando, que acaba fornecendo o seguinte:
$ date -d "30 days" +"%Y-%m-%d"
2013-05-28
Juntando tudo
Então, conhecendo as peças acima, aqui está uma maneira de montá-las. Primeiro, ao criar uma conta, você executaria este comando:
$ useradd -e `date -d "30 days" +"%Y-%m-%d"` someuser
Então, quando você quiser ajustar as datas de vencimento, execute este comando periodicamente:
$ chage -E `date -d "30 days" +"%Y-%m-%d"` someuser
Especificando períodos de tempo inferiores a 24h
Se você deseja que um usuário esteja ativo apenas por alguns minutos, não poderá usar as opções acima, pois ele exige a especificação de uma data. Nesse caso, você pode configurar um crontab
para remover / bloquear o usuário criado após o tempo especificado (por exemplo, 10 minutos) ou você pode:
adduser someuser && sleep 600 && usermod --lock someuser
ou
$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes
Referências
Se você estiver no Debian / Ubuntu, use
adduser
eusermod
. Nos sistemas baseados no Debianuseradd
é considerado de baixo nível e (de acordo com as páginas de manual):administrators should usually use adduser(8) instead
adduser
tem uma opção sem vencimento, então você a usa para criar a conta.usermod
tem a opção-e
/--expiredate
para definir a data de validade.Você calcula o parâmetro
date
com:date -d "30 days" "+%Y-%m-%d"
para obter:fonte
Outra maneira (se o seu sistema operacional não suportar a expiração da conta ou esse recurso não funcionar por qualquer motivo): configure um trabalho cron para executar daqui a 30 dias que bloqueará essa conta.
Geralmente, a conta é bloqueada definindo sua senha criptografada como valor inválido; no FreeBSD, o
pw lock X
comando bloqueará a contaX
.fonte