Получение информации о пользователях

Последнее обновление: 14.03.2024

Команда id

Команда id позволяет получить информацию о пользователе. Данной команде передается логин пользователя. Если логин не передан, выводится информация о текущем пользователе. Например, получим информацию о текущем пользователе:

eugene@Eugene:~$ id
uid=1000(eugene) gid=1000(eugene) groups=1000(eugene),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),118(lpadmin)

Или получим данные пользователя "root":

eugene@Eugene:~$ id root
uid=0(root) gid=0(root) groups=0(root)

Подключенные пользователи

Команда users позволяет вывести список всех залогиненных в текущий момент пользователей. На домашнем ПК это обычно только один пользователь, который в текущий момент работает за компьютером:

eugene@Eugene:~$ users
eugene eugene
eugene@Eugene:~$

Например, в моем случае это пользователь с логином "eugene". Однако на серверных машинах может быть несколько пользователей.

Чтобы получить более детальную информацию применяется команда who:

eugene@Eugene:~$ who
eugene   seat0        2024-03-08 18:34 (login screen)
eugene   tty2         2024-03-08 18:34 (tty2)
eugene@Eugene:~$ 

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

Для того, чтобы посмотреть, что делает пользователь, можно использовать команду w:

 19:14:33 up 41 min,  2 users,  load average: 0.35, 0.27, 0.26
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
eugene   seat0    login-           18:34    0.00s  0.00s   ?    /usr/libexec/gd
eugene   tty2     tty2             18:34   41:05   0.00s   ?    /usr/libexec/gd
eugene@Eugene:~$ 

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

При просмотре вывода, возможно возникает вопрос, почему текущий пользователь по сути дублируется в списке вошедших в систему пользователей? На заре Unix каждый вход в систему был терминалом (tty1, tty2, ...). При входе в систему добавлялась запись в файл utmp. Команды w и who запрашивают файл utmp для отображения вошедших в систему пользователей.

Графический вход в систему на рабочем столе не имеет терминала. Тем не менее необходимо сделать запись в utmp. Каждый терминал/оболочка, открываемый с рабочего стола, также должен иметь запись utmp (tty1, tty2, ...). utmp на самом деле не различает первый доступ к системе и последующие терминалы. Однако с помощью команды loginctl можно посмотреть вошедших в систему пользователей без дублирования:

eugene@Eugene:~$ loginctl
SESSION  UID USER   SEAT  TTY 
      2 1000 eugene seat0 tty2

1 sessions listed.
eugene@Eugene:~$

Подробная информация об определенном пользователе

Для проверки информации об определенном пользователе мы можем использовать файл /etc/passwd. Этот файл выглядит примерно следующим образом:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
..................................................

Файл /etc/passwd использует разные поля для хранения свойств пользователя. Эти поля разделяются двоеточием. В частности, каждая строка отображает следующие поля (порядок полей слева направо):

  • Имя пользователя

  • Пароль

  • UID (идентификатор пользователя)

  • GID (идентификатор основной группы пользователя)

  • GECOS (комментарий)

  • Домашний каталог пользователя

  • Облочка входа

В Linux нужную информацию также можно получить через терминал с помощью команды grep. Например, пусть у нас раньше был создан пользователь superuser1 с помощью команды useradd -m superuser1. Получим его данные:

eugene@Eugene:~$ grep superuser1 /etc/passwd
superuser1:x:1001:1001::/home/superuser1:/bin/sh

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

  • superuser1: логин пользователя

  • x: указывает, что пароль хранится в файле /etc/shadow

  • 1001: UID

  • 1001: GID

  • ::: указывает на отсутствие комментария

  • /home/superuser1: домашний каталог пользователя

  • /bin/bash: оболочка для логина

Администратор может вручную редактировать /etc/passwd. Однако для этой цели рекомендуется использовать команду vipw, а не обычный текстовый редактор. Эта команда представляет адаптированную версию редактора Vi, которая специально разработана для редактирования подобных важных файлов. Любая ошибка может иметь серьезные последствия, например, никто не сможет войти в систему. Поэтому при изменении файла вручную ледует проверить их целостность. Команда vipw делает это автоматически. Но также это можно сделать вручную с помощью команды pwck.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850