Я не знаю, как составить список реальных пользователей
У меня проблема с перечислением всех реальных пользователей. Настоящий пользователь - это пользователь с корректной оболочкой для входа. Я знаю, что действительные оболочки находятся в 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