Я не знаю, как составить список реальных пользователей

У меня проблема с перечислением всех реальных пользователей. Настоящий пользователь - это пользователь с корректной оболочкой для входа. Я знаю, что действительные оболочки находятся в etc / shells, но я не знаю, как перечислить только пользователей, у которых есть действительная оболочка для входа. Как должна выглядеть команда? Я забыл сказать, что они мне нужны, перечислены в лексикографическом порядке, один на ряд. Я должен сделать bash-скрипт с этими командами. Спасибо за помощь!

2 ответа

Решение

Учитывая, что ваш системный uid должен быть меньше 1000, вы можете выполнить следующую команду, которая фильтрует uid по этому полю и отображает только имя пользователя:

awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd

Если вы хотите, чтобы вся информация пользователя просто удалила последнюю часть

awk -F: '($3>=1000)&&($1!="nobody")' /etc/passwd

Найдите в поле интерпретатора команд (последнее поле) файла passwd любую пользовательскую оболочку, оканчивающуюся на "sh", например (sh, csh, ksh, bash, dash, fish). $NF это последнее поле.

Пользователи, не входящие в систему, такие как man и games, имеют командный интерпретатор /usr/sbin/nologin, Поле оболочки демонов установлено в /bin/false,

Наконец, направьте список пользователей в sort,

awk -F: '$NF ~ /sh$/' {print $1} /etc/passwd | sort
Другие вопросы по тегам