Подсчитать количество записей в /etc/passwd без пароля?

Как я могу посчитать количество /etc/password записи, которые не имеют пароля?

2 ответа

Я думаю, что для поиска записей без установленного пароля, вам придется использовать /etc/shadow:

sudo grep -Ec '\!|\*' /etc/shadow

! а также * символы указывают на отсутствие пароля Unix для пользователя, например:

root:!:17092:0:99999:7:::
colord:*:17086:0:99999:7:::

Записи в /etc/shadow соответствуют тем в /etc/passwd

Вместо подсчета вы можете получить чистый список только имен пользователей:

sudo grep -E '\!|\*' /etc/shadow | grep -o '^[^:]*'

Ты можешь использовать -v чтобы инвертировать совпадение и подсчитать или вывести список пользователей с паролями, конечно:

sudo grep -vE '\!|\*' /etc/shadow | grep -o '^[^:]*'

Заметки:

  • -E использовать ERE, чтобы мы могли использовать | для чередования
  • -c вернуть количество строк, а не сами строки
  • -o просто распечатайте соответствующую часть
  • '^[^:]*' от начала линии до первого :
echo $(($(cat /etc/passwd | egrep "^*:x" | wc | awk '{print $1}')-$(cat /etc/passwd | wc | awk '{print $1}')))

Это просто подсчитывает записи, которые вообще не имеют пароля

Другие вопросы по тегам