Поиск по сайту:

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


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

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

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

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

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

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

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

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

Мы можем использовать команду cat для отправки содержимого файла «/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), мы сможем подсчитать количество строк в файле. Это даст нам количество учетных записей, настроенных на этом компьютере.

cat /etc/passwd | wc -l

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

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

less /etc/passwd

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

Команда awk

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

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

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

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

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

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

cutr -d: -f1

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

Команда compgen

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

compgen -u | column

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

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.

Команда getent

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

getent passwd

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

getent passwd Sarah

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

getent passwd sarah

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

getent passwd {1000..60000}

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

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

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

cut -d: -f3 /etc/passwd | sort -g

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

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

getent passwd {65534..65534}

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

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

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

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

getent passwd {1000..1500} | wc -l

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

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

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