Как составить список пользователей в Linux

Опубликовано: 2022-06-25
Ноутбук Linux с приглашением bash
Фатмавати Ачмад Заэнури/Shutterstock.com

Linux — многопользовательская операционная система, поэтому создать множество учетных записей пользователей несложно. Со временем легко потерять представление о том, какие учетные записи требуются. Список учетных записей пользователей помогает вам управлять ими.

Учетные записи пользователей

Достижения в области технологий часто приносят свои собственные новые проблемы. Как только компьютеры смогли поддерживать несколько пользователей, стала очевидной необходимость ограждения и инкапсуляции работы каждого человека от всех остальных. Это привело к концепции учетных записей пользователей. У каждого пользователя есть именованный идентификатор и пароль. Это учетные данные, которые позволяют им войти в свою учетную запись. Их файлы хранятся в области, которая является частной для каждого пользователя.

В загруженной системе легко упустить из виду, какие учетные записи вы создали, а какие больше не нужны. С точки зрения безопасности не рекомендуется хранить учетные записи пользователей, которые вам больше не нужны, настраивать и открывать их на вашем компьютере. Вы должны удалить этих пользователей.

Даже если у вас нет других людей, использующих ваш компьютер, вы могли создать несколько учетных записей только для того, чтобы узнать, как это сделать, или чтобы изучить и попрактиковаться в процессах администрирования.

Как удалить пользователя в Linux (и удалить все следы)
СВЯЗАННЫЕ Как удалить пользователя в Linux (и удалить все следы)

Первый шаг — составить список учетных записей пользователей, настроенных на вашем компьютере. Это позволяет вам просмотреть их и принять решение о том, что можно удалить. Есть несколько способов составить список пользователей. Независимо от того, какой дистрибутив вы используете, эти методы должны работать без необходимости установки каких-либо приложений или утилит.

Список пользователей с помощью команды cat

Список настроенных пользователей вместе с информацией о каждом пользователе хранится в файле «/etc/passwd». Это текстовый файл, который обычные пользователи могут отображать в окне терминала. Вам не нужно использовать sudo для просмотра файла «/etc/passwd».

Как изменить данные пользователя с помощью chfn и usermod в Linux
СВЯЗАННЫЕ С : Как изменить данные пользователя с помощью chfn и usermod в Linux

Мы можем использовать команду cat для отправки содержимого файла «/etc/passwd» в окно терминала. Это перечислит все содержимое файла. Это означает, что вы также увидите записи для учетных записей пользователей, которые принадлежат процессам и системе, а не людям.

 кот /etc/passwd 

Отправка содержимого файла /etc/passwd в окно терминала с помощью cat

Для каждой учетной записи пользователя сообщается строка плотной информации.

Содержимое файла /etc/passwd

Информация для учетной записи пользователя под названием «dave» содержит эти фрагменты информации с двоеточием « : » между ними.

  • dave : Имя учетной записи пользователя. Обычно это имя человека, которому принадлежит аккаунт.
  • x : когда-то здесь хранился пароль для учетной записи. В настоящее время пароли хранятся в файле «/etc/shadow». «x» означает, что пароль находится в этом файле.
  • 1000 : идентификатор пользователя для этой учетной записи. Все учетные записи пользователей имеют уникальный числовой идентификатор. Учетные записи обычных пользователей обычно начинаются с 1000, при этом каждая новая учетная запись получает следующий бесплатный идентификатор, например 1001, 1002 и т. д.
  • 1000 : Идентификатор группы по умолчанию, к которой принадлежит пользователь. В обычных обстоятельствах группа по умолчанию имеет то же значение, что и идентификатор пользователя.
  • dave,,, : Коллекция дополнительной дополнительной информации о пользователе. Это поле содержит данные с запятыми « , » между ними. Они могут содержать такие вещи, как полное имя пользователя, номер его офиса и номер телефона. Запись для учетной записи пользователя «mary» показывает, что ее полное имя — Мэри Куинн.
  • /home/dave : Путь к домашней папке пользователя.
  • /bin/bash : оболочка по умолчанию для этого пользователя.

Если мы направим вывод этой команды через утилиту wc и воспользуемся параметром -l (lines), мы сможем подсчитать количество строк в файле. Это даст нам количество учетных записей, настроенных на этом компьютере.

 кот /etc/passwd | туалет -л 

Подсчет количества учетных записей в файле /etc/passwd

Эта цифра включает системные учетные записи и пользователей, созданных приложениями. На этом компьютере настроено около 400 обычных пользователей. Ваш результат, вероятно, будет намного меньше.

При таком количестве учетных записей удобнее использовать less для просмотра файла «/etc/passwd».

 меньше /etc/passwd 

Открытие файла /etc/passwd за меньшее время

Использование less также позволяет вам искать в выводе, если вы хотите найти конкретную учетную запись пользователя.

Поиск учетной записи mary в файле /etc/passwd, в меньшем

Команда awk

Используя команду awk , мы можем отобразить только имя пользователя. Это может быть полезно, когда вы пишете скрипт, который должен что-то сделать с большим количеством учетных записей пользователей. Список имен учетных записей пользователей и перенаправление их в текстовый файл может значительно сэкономить время. Все, что вам нужно сделать, это скопировать и вставить остальную часть команды в каждую строку.

Как использовать команду awk в Linux
СВЯЗАННЫЕ Как использовать команду awk в Linux

Мы скажем awk использовать двоеточие «:» в качестве разделителя полей и напечатать первое поле. Мы будем использовать параметр -F (разделитель полей).

 awk -F: '{print $1}' /etc/passwd 

Команда awk для выбора только имен пользователей из каталога /etc/passwd.

Имена учетных записей пользователей записываются в окно терминала без какой-либо другой информации об учетной записи.

Имена учетных записей пользователей, отображаемые в окне терминала

Команда вырезания

Мы можем добиться того же, используя команду cut . Нам нужно использовать параметр -d (разделитель) и попросить его выбрать только первое поле, используя параметр -f (поля).

 вырезать -d: -f1 

Использование команды cut для отображения только имен пользователей из файла /etc/passwd

В нем перечислены все учетные записи пользователей, включая системные и другие нечеловеческие учетные записи.

Команда compgen

compgen можно использовать с параметром -u (пользователь) для вывода списка учетных записей пользователей. Мы направим вывод через команду column , чтобы перечислить учетные записи пользователей в столбцах вместо одного длинного списка с одним именем пользователя в строке.

 компген -у | столбец 

Использование команд compgen и column для перечисления имен учетных записей пользователей из файла /etc/passwd в столбцах

Опять же, первые перечисленные учетные записи пользователей принадлежат процессам, а не людям.

UID МИН. и UID МАКС.

Учетным записям пользователей присваивается числовой идентификатор, который мы видели ранее. Обычно учетные записи обычных пользователей начинаются с 1000, а системные учетные записи пользователей, не являющихся людьми, начинаются с 0. Идентификатор учетной записи root равен 0.

Если мы сможем проверить самые низкие и самые высокие идентификаторы пользователей, мы сможем использовать эту информацию для выбора учетных записей пользователей, которые находятся между этими двумя значениями. Это позволит нам выбрать только учетные записи пользователей, принадлежащие реальным людям.

Linux отслеживает эти два значения, используя параметры конфигурации, называемые UID_MIN и UID_MAX . Они хранятся в файле «/etc/login.defs». Мы можем легко увидеть эти значения, используя grep .

Мы собираемся использовать параметр -E (расширенное регулярное выражение). Наша строка поиска ищет строки, начинающиеся с «UID_MIN» или «UID_MAX» в файле «/etc/login.defs». Символ вставки « ^ » обозначает начало строки.

 grep -E '^UID_MIN|^UID_MAX' /etc/login.defs 

Диапазон идентификаторов пользователей на этом компьютере — от 1000 до 60 000.

СВЯЗАННЫЕ С: Как использовать регулярные выражения (регулярные выражения) в Linux

Команда getent

Команда getent считывает информацию из системных баз данных. Мы можем сказать ему перечислить записи в файле «/etc/passwd», используя «passwd» в качестве параметра.

 получить пароль 

Использование getent для вывода файла /etc/passwd в окно терминала

Это дает нам те же показания, которые мы можем получить, используя cat . Но где getent сияет, так это в принятии значений, известных как «ключи». Ключ определяет, о какой информации сообщает getent . Если мы хотим увидеть запись для одного пользователя, мы можем передать имя его учетной записи пользователя в командной строке.

 получить пароль Сара

Обратите внимание, что имя учетной записи пользователя вводится с учетом регистра.

 сара 

Ищем единую учетную запись пользователя с помощью getent

Мы также можем передать верхний и нижний пределы идентификаторов учетных записей пользователей, которые мы хотим видеть. Чтобы увидеть абсолютно все учетные записи обычных пользователей, мы можем использовать значения из UID_MIN и UID_MAX .

 получить пароль {1000..60000} 

Использование верхних и нижних идентификаторов учетной записи с getent

Это требует некоторого времени для запуска. В конце концов, вы вернетесь в командную строку.

Содержимое файла /etc/passwd, отправленное в окно терминала getent

Причина длительного времени выполнения заключается в том, что getent пытается найти совпадения для всех значений учетных записей пользователей вплоть до 60000.

Давайте посмотрим, каков самый высокий идентификатор учетной записи пользователя. Мы будем использовать команду cut , но на этот раз мы попросим поле номер три, поле идентификатора пользователя. Мы направим вывод через sort и воспользуемся параметром -g (общая числовая сортировка).

 вырезать -d: -f3 /etc/passwd | сортировать -g 

Команда для передачи вывода из cut в команду sort

Наибольшее значение идентификатора учетной записи пользователя, принадлежащей человеку, — 1401.

Отсортированный список идентификаторов учетных записей пользователей

Идентификатор пользователя 65534 соответствует системному понятию «никто».

 получить пароль {65534..65534} 

Системный пользователь none с идентификатором 65534.

Итак, мы знаем, что вместо использования значения UID_MAX , равного 60000, на этом компьютере мы можем использовать более реалистичное значение, например 1500. Это значительно ускорит работу. Мы также направим выходные данные через cut , чтобы извлечь только имена учетных записей пользователей.

получить пароль {1000..1500} | вырезать -d: -f1

Вывод getent, передаваемый через cut, для отображения имен учетных записей пользователей.

Пользователи перечислены, и мы немедленно возвращаемся в командную строку.

Вместо того, чтобы направлять вывод через cut , давайте направим вывод через wc и еще раз посчитаем строки. Это даст нам количество «реальных» учетных записей пользователей.

 получить пароль {1000..1500} | туалет -л 

Подсчет учетных записей обычных пользователей с помощью getent и wc

Теперь мы можем видеть, что на этом компьютере определенно есть 400 настроенных, принадлежащих человеку учетных записей пользователей.

Мощность и простота

Один из этих методов наверняка подойдет вам, когда вам нужно просмотреть учетные записи пользователей на компьютере с Linux. Эти команды должны присутствовать во всех дистрибутивах, и ни одна из них не требует доступа к sudo , поэтому все они доступны каждому пользователю.

СВЯЗАННЫЕ С: Как контролировать доступ sudo в Linux