Как вывести список всех пользователей в Linux
Пользователи – самый важный компонент в системе Linux. Linux предоставляет администраторам встроенные команды, которые позволяют им эффективно управлять пользователями. Есть один для создания пользователей, удаления пользователей и изменения разрешений пользователей. Но как насчет перечисления всех пользователей, которые в настоящее время присутствуют в системе?
В этой статье мы обсудим, как вы можете получить список всех пользователей в Linux, а также краткое руководство, чтобы проверить, существует ли пользователь в системе или нет.
Как показать список всех пользователей в Linux
Когда вы создаете нового пользователя, имя пользователя, пароль и другие данные сохраняются в определенных файлах на машине Linux. К счастью, Linux позволяет вам читать и изменять такие файлы без каких-либо ограничений. Используя эти файлы, вы можете узнать информацию о пользователях, такую как их имена пользователей, количество пользователей и многое другое.
Использование файла Passwd
Файл passwd – это текстовый файл, содержащий записи паролей всех пользователей, которые в настоящее время присутствуют в вашей системе. Этот файл находится в каталоге / etc в вашем локальном хранилище и содержит следующую информацию:
- Имена пользователей
- Зашифрованные пароли
- ID пользователя
- ID группы пользователя
- Полное имя
- Каталог / home пользователя
- Оболочка входа пользователя
Введите в терминале cat / etc / passwd или меньше / etc / passwd, чтобы прочитать текстовый файл. Открытие файла / etc / passwd сгенерирует вывод, который выглядит примерно так.
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
Вышеупомянутый вывод содержит семь полей, которые содержат информацию, относящуюся к пользователям. Эти поля разделены разделителем – в данном случае двоеточием. Каждая строка вывода обозначает одного пользователя.
Чтобы получить список всех имен пользователей с помощью файла passwd :
awk -F: '{ print $1}' /etc/passwd
Awk – это утилита командной строки, которая позволяет пользователям Linux создавать простые однострочные программы, выполняющие быстрые операции с терминала. В вышеупомянутом коде:
- -F означает разделитель полей. Поскольку символ двоеточия является разделителем в файле / etc / passwd , мы передаем двоеточие в качестве разделителя в команде awk.
- {print $ 1} указывает системе напечатать первое поле. В этом случае первое поле – это имя пользователя.
- Файл / etc / passwd содержит данные, относящиеся к пользователям.
Выполнение вышеуказанной команды выведет имена всех пользователей. Поскольку файл / etc / passwd содержит пользователей системы, вывод также будет включать их имена пользователей.
root
daemon
bin
sys
sync
games
man
Вы можете немного подправить команду awk, чтобы выводить полные имена пользователей. Введите следующую команду, чтобы отобразить полные имена пользователей в Linux:
awk -F: '{ print $5}' /etc/passwd
Поскольку у системных пользователей одинаковое имя пользователя и полное имя, вы не заметите никакой разницы в выводе. Только пользователи, которых вы добавили в свою систему, будут иметь разные имена пользователей и полные имена.
В качестве альтернативы вы также можете использовать cut вместо команды awk. Синтаксис cut очень похож на команду awk.
Чтобы распечатать имена пользователей в Linux с помощью cut:
cut -d: f1 /etc/passwd
Здесь -d – разделитель, f1 – первое поле (имя пользователя), а / etc / passwd – текстовый файл, содержащий данные.
Чтобы распечатать имена пользователей с помощью cut:
cut -d: f5 /etc/passwd
Точно так же вы можете вывести другие поля из файла / etc / passwd , просто заменив f5 на f1-f7 .
Список пользователей с помощью команды getent
Команда getent печатает содержимое важных текстовых файлов, которые действуют как база данных для системы. Такие файлы, как / etc / passwd и /etc/nsswitch.conf, содержат информацию, относящуюся к пользователям и сетям соответственно, и могут быть прочитаны с помощью команды getent.
Чтобы распечатать содержимое файла / etc / passwd с помощью getent:
getent passwd
Вывод будет содержать семь разных полей, разделенных двоеточием. Каждое поле зарезервировано для конкретной информации, включая имена пользователей и пути к домашним каталогам пользователей.
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
Вы можете связать команду getent с awk или cut, чтобы получить только список имен пользователей.
getent passwd | awk -F: '{print $1}'
getent passwd | cut -d: -f1
Чтобы распечатать полные имена пользователей:
getent passwd | awk -F: '{print $5}'
getent passwd | cut -d: -f5
Проверить, существует ли пользователь
В некоторых ситуациях вы можете захотеть проверить, существует ли пользователь в вашей системе Linux или нет. Команда grep пригодится, когда вы хотите получить определенный текстовый шаблон из файла.
Вы можете использовать любую из следующих команд, чтобы проверить существование пользователя.
compgen -u | grep username
getent passwd | grep username
Если пользователь существует, информация для входа в систему, связанная с ним, будет отображаться на экране. С другой стороны, если пользователя нет в системе, произойдет ошибка.
Чтобы проверить, существует ли пользователь в системе без использования grep:
getent passwd username
Вы также можете передать команду getent или compgen по конвейеру с помощью grep и echo для отображения пользовательского вывода.
getent passwd | grep -q username && echo "User found" || echo "User not found"
compgen -u | grep -q username && echo "User found" || echo "User not found"
Приведенная выше команда напечатает «Пользователь найден», если пользователь существует в системе, и «Пользователь не найден», если это не так.
Подсчитайте количество пользователей в системе
Чтобы подсчитать количество пользователей в системе Linux:
compgen -u | wc -l
getent passwd | wc -l
В приведенных выше командах compgen и getent отвечают за отображение списка, содержащего всех пользователей и другую информацию, связанную с ними. Wc обозначает количество слов и используется для подсчета количества слов или строк в выводе. Флаг -l обозначает строки .
Проверка учетных записей пользователей в Linux
Каждый администратор Linux должен знать, как они могут управлять и администрировать других пользователей в системе. Освоение команд Linux, которые позволяют создавать, удалять, контролировать и перечислять других пользователей, – отличный способ начать управление пользователями.
Освоение среды Linux должно быть вашей первой целью, если вы только новичок. Есть определенные вещи, которые вы должны сделать сразу после установки вашего первого дистрибутива Linux. Изучение некоторых базовых команд – одна из них, необходимая для выполнения простых вычислительных задач в Linux.