Как проверить, имеет ли пользователь доступ к sudo в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как проверить, имеет ли пользователь права sudo в Linux. Вы рассмотрите три распространенных метода: прямое тестирование привилегий sudo с использованием команды sudo -l, анализ конфигурационного файла /etc/sudoers и проверка, входит ли пользователь в группу sudo.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/UserandGroupManagementGroup -.-> linux/groups("Group Displaying") subgraph Lab Skills linux/cat -.-> lab-558774{{"Как проверить, имеет ли пользователь доступ к sudo в Linux"}} linux/sudo -.-> lab-558774{{"Как проверить, имеет ли пользователь доступ к sudo в Linux"}} linux/groups -.-> lab-558774{{"Как проверить, имеет ли пользователь доступ к sudo в Linux"}} end

Проверка привилегий sudo с помощью команды sudo -l

На этом этапе вы узнаете, как проверить свои привилегии sudo с использованием команды sudo -l. Команда sudo (SuperUser DO) позволяет авторизованному пользователю выполнять команды от имени суперпользователя или другого пользователя в соответствии с политикой безопасности.

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

Давайте проверим привилегии sudo для текущего пользователя (labex). Если терминал не открыт, откройте его.

Введите следующую команду и нажмите Enter:

sudo -l

Вы должны увидеть вывод, похожий на следующий:

Matching Defaults entries for labex on ...:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User labex may run the following commands on ...:
    (ALL : ALL) NOPASSWD: ALL

Этот вывод сообщает, что пользователь labex может выполнять ALL (все) команды от имени ALL (всех) пользователей (ALL : ALL) без ввода пароля (NOPASSWD: ALL). Это подтверждает, что пользователь labex имеет полные привилегии sudo без необходимости вводить пароль.

Понимание работы sudo является важным аспектом управления правами доступа и выполнения административных задач в Linux.

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

Проверка файла sudoers с помощью команды cat /etc/sudoers

На этом этапе вы рассмотрите файл /etc/sudoers, который является основным конфигурационным файлом для sudo. Этот файл определяет, какие пользователи или группы могут выполнять какие команды от имени каких пользователей.

Важно: Прямое редактирование файла /etc/sudoers может быть опасным и при неправильном выполнении может заблокировать вас от доступа к системе. Как правило, рекомендуется использовать команду visudo для редактирования этого файла, так как она обеспечивает проверку синтаксиса. Однако на этом этапе мы просто просмотрим содержимое файла с помощью команды cat, чтобы понять его структуру.

Поскольку /etc/sudoers является системным файлом, вам нужны привилегии sudo для его чтения.

Введите следующую команду в терминале и нажмите Enter:

sudo cat /etc/sudoers

Вы увидите содержимое файла /etc/sudoers. Найдите строки, которые определяют права доступа пользователей или групп. Вы, возможно, увидите строки, похожие на следующие (комментарии начинаются с #):

#
## This file MUST be edited with the 'visudo' command as root.
#
## Please consider adding local content in /etc/sudoers.d/ instead of
## directly modifying this file.
#
## See the man page for details on how to write a sudoers file.
#

Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

## Host alias specification

## User alias specification

## Cmnd alias specification

## User privilege specification
root	ALL=(ALL:ALL) ALL

## Allow members of group sudo to execute any command
%sudo	ALL=(ALL:ALL) ALL

## See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Строка %sudo ALL=(ALL:ALL) ALL особенно важна. Она означает, что любой пользователь, входящий в группу sudo (%sudo), может выполнять команды (ALL) от имени любого пользователя (ALL) и любой группы (ALL) на любом хосте (ALL). Это распространенный способ предоставления административных привилегий пользователям в системах на основе Debian, таких как Ubuntu.

Просмотрев этот файл, вы получите представление о том, как настройваются права доступа sudo в системе.

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

Проверка принадлежности к группе sudo с помощью команды groups

На предыдущем этапе вы увидели в файле /etc/sudoers, что участники группы sudo имеют полные привилегии sudo. На этом этапе вы убедитесь, что пользователь labex действительно является участником группы sudo с помощью команды groups.

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

Введите следующую команду в терминале и нажмите Enter:

groups

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

labex sudo ssl-cert public

Этот вывод показывает, что labex является участником групп labex, sudo, ssl-cert и public. Наличие sudo в списке подтверждает, что пользователь labex входит в группу, которой предоставлены привилегии sudo в соответствии с файлом /etc/sudoers.

В качестве альтернативы вы можете указать имя пользователя с командой groups:

groups labex

Вывод будет таким же:

labex : labex sudo ssl-cert public

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

Нажмите Продолжить, чтобы завершить этот практический урок.

Резюме

В этом практическом уроке вы узнали, как проверить, имеет ли пользователь доступ к sudo в Linux. Вы начали с использования команды sudo -l для перечисления команд, которые текущий пользователь может выполнять с привилегиями sudo. Это подтвердило, что пользователь labex имеет полный доступ к sudo без ввода пароля.

Затем вы исследовали файл /etc/sudoers с помощью команды cat, чтобы понять его роль в настройке прав доступа sudo, хотя было подчеркнуто, что для редактирования этого файла рекомендуется использовать инструмент visudo. Наконец, обычно вы проверяете, является ли пользователь участником группы sudo с помощью команды groups, так как принадлежность к группе - это распространенный способ предоставления доступа к sudo.