удалить нескольких пользователей

Вопрос или проблема

Я являюсь корневым пользователем и настраиваю меню для другого пользователя. Этот другой пользователь получит только это меню.

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

last | awk '{print $1,$4,$5,$6,$7} ' 

Я проверил этот код, и он работает, он показывает имена пользователей и день, когда они в последний раз входили в систему.

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

Я использую Linux Mint и текстовый редактор Vim.

Вы можете сделать это так:

root@host# lastlog -b Num_Days_Since_Last_Login | egrep -v "^Username|Never logged in" | awk '{print $1}' | xargs -i userdel {}

Где Num_Days_Since_Last_Login – это целое число дней с последнего входа…

Полное решение:

#!/bin/bash

maxdate=$(date -d "$1" +%s) || exit 1
daysdate=$((($(date +%s)-maxdate)/(3600*24)))

LANG=C lastlog -b $daysdate -u 1000- |
    awk 'NR>1{print $1}' |
    xargs -n1 echo userdel

Проверьте это и удалите echo, чтобы сделать это реально™. Пример использования:

./script.sh 'Пт Дек  5 17:00:06 CET 2013'

Ответ или решение

Удаление нескольких пользователей в Linux: пошаговое руководство

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

Шаг 1: Подготовка скрипта

Для начала, создадим Bash-скрипт, который будет выполнять проверку последних входов пользователей и удалять тех, кто не входил в систему с заданной даты.

#!/bin/bash

# Конвертируем переданную дату в формат Unix timestamp
maxdate=$(date -d "$1" +%s) || exit 1

# Вычисляем количество дней с последнего входа
daysdate=$((($(date +%s)-maxdate)/(3600*24)))

# Выводим список пользователей, не входивших в систему более указанного количества дней
LANG=C lastlog -b $daysdate -u 1000- |
    awk 'NR>1{print $1}' |
    xargs -n1 echo userdel

Шаг 2: Параметры скрипта

  • Аргумент скрипта: Он принимает одну дату в качестве аргумента в формате: 'Пн Дек 5 17:00:06 CET 2013'.
  • Проверка: Дата конвертируется в формат Unix timestamp для дальнейших вычислений.
  • Удаление пользователей: Запускается команда lastlog, чтобы получить список пользователей, не активировавшихся с указанной даты.

Шаг 3: Тестирование без удаления

Перед тем как удалить пользователей, обязательно протестируйте скрипт, чтобы избежать потери данных. Воспользуйтесь командой echo, чтобы увидеть, какие пользователи будут удалены.

./script.sh 'Пн Дек  5 17:00:06 CET 2013'

На выходе вы получите список команд userdel, но сами учетные записи при этом не будут удалены.

Шаг 4: Реальное удаление пользователей

После того как все будет протестировано и вы будете уверены в корректности работы скрипта, можно убрать команду echo, чтобы выполнить удаление пользователей:

# Замена строки с echo
xargs -n1 userdel

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

Заключение

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

Эта инструкция поможет вам выполнять эффективное администрирование вашей Linux-системы, гарантируя, что неактивные учетные записи больше не создают risk for security of your system.

Оцените материал
Добавить комментарий

Капча загружается...