Со временем в системе накапливаются сервисные, забытые или некорректные аккаунты. Часть из них может быть: без пароля, с истекшим паролем
или с заблокированным shell. Быстрый аудит можно сделать обычным bash.
▪️ Пользователи без пароля. Пароль хранится в /
etc/shadow, но факт его отсутствия легко проверить:
sudo awk -F: '($2==""){print $1}' /etc/shadow
Если вывод не пустой - это повод проверить, зачем аккаунт существует.
▪️ Пользователи с заблокированным паролем
sudo awk -F: '($2 ~ /^!|^\*/){print $1}' /etc/shadow
! или * в поле пароля значит, что вход запрещен
Обычно это нормально для сервисных аккаунтов.
▪️ Пользователи с отключенным shell
awk -F: '($7 ~ /(nologin|false)$/){print $1, $7}' /etc/passwd
Типично для:
www-data
nginx
backup
Если обычный пользователь с таким shell - стоит проверить.
▪️ Проверка статуса пароля через chage
sudo chage -l username
Полезно для поиска:
истекших паролей;
аккаунтов без политики смены.
▪️ Массово:
for u in $(cut -d: -f1 /etc/passwd); do
chage -l "$u" 2>/dev/null | grep -q "never" && echo "$u"
done
▪️ Быстрый отчет:
awk -F: '{print $1 ":" $7}' /etc/passwd
BashTex 📱 #bash #utils