Назад | Перейти на главную страницу

Как я могу автоматически удалять пользователей Linux по истечении определенного периода времени?

У меня есть сценарий, который программно создает пользователей, но мы хотели бы удалить пользователей через 48 часов, а также все файлы, которыми они владеют.

Я знаю, что вы можете установить срок действия с помощью команды useradd, но я не знаю, как сделать следующий шаг по удалению пользователя и связанных с ним файлов по истечении срока действия.

Есть простой способ сделать это?

Спасибо!

Если вы настраиваете учетные записи, срок действия которых истекает через 2 дня после их настройки, то приведенный ниже сценарий должен помочь.

#!/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 )

При запуске он читает теневой файл и выбирает учетные записи с установленной датой истечения срока действия. Для каждой выбранной учетной записи это срабатывает, если сейчас позже, чем время истечения срока. Если это так, он удаляет учетную запись.

Перед тестированием убедитесь, что у вас есть резервные копии.

Предполагая, что у вас есть сценарий создания пользователя, который устанавливает $ username, добавьте это:

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

Также стоит установить истечение срока действия учетной записи при ее добавлении в качестве дополнительной страховки.

Вероятно, хорошей идеей было бы использовать смесь crontab + файл, содержащий имена пользователей для удаления? Возможно, разделите этот файл необходимыми датами или запустите задание cron, которое ищет просроченных пользователей и удаляет их. Это может сделать простой сценарий оболочки.

Если вы уже помечаете их как «просроченные», вы можете попробовать задачу cron для планирования ежедневных, ежечасных или еженедельных чисток учетной записи. Вы просто создаете сценарий, аналогичный тому, который вы написали для создания пользователя, но для определения истечения срока действия и удаления всего, что вам нужно. Убедитесь, что он работает как root.