useradd
Você pode controlar por quanto tempo a conta de um usuário é válida por meio do uso da opção --expiredate
para useradd
.
excerto da página de manual 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.
Portanto, ao configurar a conta do usuário, você pode especificar uma data de +30 dias no futuro a partir de agora e adicioná-la ao seu comando useradd
ao configurar as contas.
$ useradd -e 2013-07-30 someuser
chage
Você também pode alterar a data de uma conta existente usando o comando chage
. Para alterar a data de expiração de uma conta, faça o seguinte:
$ chage -E 2013-08-30 someuser
calculando a data +30 dias a partir de agora
Para isso, é bem trivial usar o comando date
. Por exemplo:
$ date -d "30 days"
Sun Jul 28 01:03:05 EDT 2013
Você pode formatar usando as opções +FORMAT
para o comando date
, o que acaba lhe dando o seguinte:
$ date -d "30 days" +"%Y-%m-%d"
2013-05-28
Colocando tudo junto
Então, conhecendo as peças acima, aqui está uma maneira de juntar as peças. 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, você executaria periodicamente este comando:
$ 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 fique ativo apenas por alguns minutos, não poderá usar as opções acima, pois elas exigem a especificação de uma data. Nesse caso, você poderia configurar um crontab
para remover / bloquear o usuário criado após o tempo especificado (por exemplo, 10 minutos) ou fazer um dos seguintes:
adduser someuser && sleep 600 && usermod --lock someuser
ou
$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes