Como posso excluir automaticamente usuários do Linux após um período fixo?

3

Eu tenho um script que programaticamente cria usuários, mas gostaríamos de excluir os usuários após 48 horas, assim como os arquivos que eles possuem.

Eu sei que você pode definir uma expiração com o comando useradd, mas não sei como dar o próximo passo de excluir o usuário e seus arquivos associados no vencimento.

Existe uma maneira fácil de fazer isso?

Obrigado!

    
por Noah_R-C 01.03.2011 / 06:22

4 respostas

3

Supondo que você tenha um script de criação de usuário que defina $ username, adicione isto:

cat <<EOF | at now + 2 days
userdel -f -r $username
EOF

Também vale a pena definir uma expiração na conta quando ela é adicionada, como um seguro extra.

    
por 01.03.2011 / 23:55
5

Se você estiver configurando contas para expirar dois dias depois de configurá-las, o script abaixo deverá ajudar.

#!/bin/bash
#
nowsecs=$( date +%s )

while read account
do
    username=$( echo $account | cut -d: -f1  )
    expiredays=$( echo $account | cut -d: -f2 )
    expiresecs=$(( $expiredays * 86400 ))
    if [ $expiresecs -le $nowsecs ]
    then
        echo "$username has expired deleting"
        userdel -r "$username"
    fi
done < <( cut -d: -f1,8 /etc/shadow | sed /:$/d )

Quando é executado, lê o arquivo de sombra e seleciona contas com datas de expiração definidas. Para cada conta selecionada, funciona se agora for posterior ao tempo de expiração. Se é isso, elimina a conta.

Certificando-se de ter backups antes de testar isso.

    
por 01.03.2011 / 12:24
1

Provavelmente, uma boa idéia seria usar uma mistura de nomes de usuário contendo crontab + para excluir? Delimite esse arquivo com datas necessárias talvez, ou execute um cron job que procure por usuários expirados e os exclua. Um script de shell simples pode fazer isso.

    
por 01.03.2011 / 06:31
0

Se já estiver a marcá-las como "expiradas", pode experimentar uma tarefa Cron para agendar limpezas de conta diárias, de hora a hora ou semanais. Você acabou de criar um script como o que você escreveu para criar o usuário, mas para detectar a expiração e excluir o que você precisa. Certifique-se de que seja executado como root.

    
por 01.03.2011 / 06:32

Tags