Команда 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.