Как найти всех пользователей Sudo в Linux?

Иногда вы можете предоставлять временный sudo доступ обычным пользователям для выполнения определенных задач, таких как установка программного обеспечения или административная работа. Со временем вы можете забыть отозвать привилегии sudo. Для обеспечения безопасности рекомендуется периодически проверять наличие суперпользователей с доступом sudo в системе Linux. Если вы обнаружите забытые или ненужные права sudo, вы можете просто отозвать их. В этом кратком руководстве описано, как найти всех пользователей sudo в Linux и Unix-подобных операционных системах.

Отображение всех пользователей

Сначала выведем список всех пользователей в системе. Для этого выполните:

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

Пример вывода из моей системы Ubuntu:

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
list
irc
gnats
nobody
systemd-timesync
systemd-network
systemd-resolve
systemd-bus-proxy
syslog
_apt
lxd
messagebus
uuidd
dnsmasq
sshd
sk
senthil
kumar
ostechnix

Другой способ вывести список всех пользователей в системе Linux:

compgen -u

Список будет тот же.

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

В большинстве дистрибутивов Linux члены группы «sudo» или «wheel» наделены привилегиями sudo. Для просмотра членов группы «sudo» можно использовать команду getent или просто перечислить содержимое файла /etc/group:

Чтобы найти всех sudo или суперпользователей в Linux, используйте команду getent, как показано ниже:

getent group sudo
sudo:x:27:sk,ostechnix

Пояснение вывода:

  • sudo: Это имя группы. В данном случае это группа sudo, которая обычно предоставляет ее членам привилегии sudo (суперпользователя).
  • x: Это поле представляет собой групповой пароль, который обычно не используется в современных Linux-системах. Поэтому обычно устанавливается значение «x» или заполнитель.
  • 27: Это идентификатор группы (GID), присвоенный группе sudo.
  • * sk,ostechnix: Это члены группы sudo.

В общем, вывод показывает информацию о группе sudo, ее идентификаторе группы и пользователях «sk» и «ostechnix», имеющих привилегии sudo в системе. Этот пользователь может выполнять административные задачи с помощью команды sudo.

Альтернативно можно определить всех пользователей sudo, перечислив содержимое файла /etc/group:

cat /etc/group | grep '^sudo:'
sudo:x:27:sk,ostechnix

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

getent group sudo | cut -d: -f4
sk,ostechnix

Давайте разберем команду и посмотрим, что делает каждый параметр.

Приведенная выше команда представляет собой комбинацию двух команд Linux:

  • getent group sudo: Эта команда извлекает информацию о группе sudo из базы данных системы. Утилита getent используется для запроса баз данных Name Service Switch (NSS), и в данном случае она извлекает информацию о группе sudo.
  • cut -d: -f4: Выходные данные предыдущей команды передаются (символ |) в команду cut, которая используется для извлечения определенных полей из входных данных. В данном случае каждая строка разделяется символом «:» в качестве разделителя (-d:) и выбирается четвертое поле (-f4).

Таким образом, целью данной команды является получение и отображение списка идентификаторов пользователей (UID), входящих в группу «sudo».

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

Вы также можете использовать команду «grep « для фильтрации имен пользователей sudo из файла /etc/group и получить тот же результат, что и предыдущая команда.

grep '^sudo:.*$' /etc/group | cut -d: -f4
sk,ostechnix

Как упоминалось ранее, принадлежность к группе sudo позволяет пользователю выполнять команды с повышенными привилегиями с помощью команды sudo.

Поиск пользователя с привилегиями Sudo

Теперь мы знаем, как найти всех пользователей sudo в нашей системе Linux. Как узнать, имеет ли определенный пользователь привилегии sudo или нет? Проверить sudo доступ отдельного пользователя очень просто.

Если вы хотите проверить sudo доступ для конкретного пользователя, вы можете использовать команду sudo -l:

sudo -l -U sk
Matching Defaults entries for sk on ubuntuserver:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User sk may run the following commands on ubuntuserver:
(ALL : ALL) ALL

Как вы видите, пользователь с именем «sk» может выполнять все команды. Значит, он входит в группу sudo.

Давайте проверим другого пользователя.

sudo -l -U senthil
User senthil is not allowed to run sudo on ubuntuserver.

Ну, пользователь «senthil» не имеет права запускать sudo. Он является обычным пользователем! Мы также можем узнать, имеет ли пользователь доступ sudo, выполнив следующую команду:

sudo -nv

Если результат ничего не показывает, то пользователь имеет доступ sudo.

Если вы видите результат, как показано ниже, то пользователь не имеет доступа sudo.

sudo -nv
Sorry, user senthil may not run sudo on ubuntuserver.

Заключение

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

Часто задаваемые вопросы

✅ Что такое пользователи sudo в Linux?

В Linux пользователи sudo – это обычные пользователи, которым предоставлены специальные привилегии для выполнения административных задач. Они могут использовать команду «sudo» для временного повышения своих привилегий и выполнения команд от имени суперпользователя (root) без входа в систему в качестве пользователя root.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен ostechnix.com

Похожие статьи

Комментарии (0)