Предоставление привилегий в Linux

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

Введение

В системах Linux управление правами пользователей и контролем доступа является фундаментальным аспектом системного администрирования и безопасности. Команда sudo, сокращение от "superuser do" (выполнить как суперпользователь), позволяет авторизованным пользователям выполнять команды с повышенными привилегиями, обычно с привилегиями суперпользователя или учетной записи root.

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

Понимание основ управления пользователями и sudo

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

Что такое sudo?

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

Создание нового пользователя

Начнем с создания новой учетной записи пользователя. Откройте терминал и выполните следующую команду:

sudo adduser trusted_advisor

Вам будет предложено ввести пароль и дополнительную необязательную информацию для нового пользователя. В рамках этого лабораторного занятия (LabEx) вы можете установить простой пароль, например password123, и оставить остальные поля пустыми, нажав Enter.

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

Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
 Full Name []:
 Room Number []:
 Work Phone []:
 Home Phone []:
 Other []:
Is the information correct? [Y/n] Y

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

Чтобы убедиться, что пользователь был успешно создан, вы можете проверить содержимое файла /etc/passwd:

grep trusted_advisor /etc/passwd

В результате должен отобразиться ряд, содержащий информацию о пользователе.

Предоставление привилегий sudo

Для предоставления пользователю привилегий sudo необходимо добавить его в группу sudo. В Ubuntu члены группы sudo имеют право использовать команду sudo. Выполните следующую команду:

sudo usermod -aG sudo trusted_advisor

Эта команда добавляет (-a) пользователя trusted_advisor в группу sudo (-G sudo). Теперь пользователь сможет выполнять команды с административными привилегиями.

Проверка доступа с использованием sudo

Чтобы убедиться, что новый пользователь имеет доступ с использованием sudo, вы можете переключиться на эту учетную запись и попробовать вывести содержимое каталога /root, который обычно доступен только для пользователя root:

su - trusted_advisor

При запросе введите пароль, который вы установили для этого пользователя. Затем выполните:

sudo ls /root

Вам снова будет предложено ввести пароль (при первом использовании sudo). После ввода пароля вы должны увидеть содержимое каталога /root, что подтверждает, что пользователь имеет привилегии sudo.

Наконец, выйдите из сессии пользователя trusted_advisor, чтобы вернуться к своей исходной учетной записи:

exit

Ограничение доступа sudo с помощью файла sudoers

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

Понимание файла sudoers

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

Редактирование файла sudoers

Для безопасного редактирования файла sudoers используйте команду visudo:

sudo visudo

Это откроет файл sudoers в редакторе по умолчанию (обычно nano или vi).

Понимание синтаксиса sudoers

Базовый синтаксис записи sudo в файле sudoers выглядит следующим образом:

user_or_group    host=(run_as_user:run_as_group)    NOPASSWD: commands

Где:

  • user_or_group: Пользователь или группа, к которой применяется это правило.
  • host: Имя хоста, на котором это правило применяется (обычно ALL).
  • run_as_user: Пользователь, от имени которого будут выполняться команды (обычно ALL, что означает root).
  • run_as_group: Группа, от имени которой будут выполняться команды (можно опустить).
  • NOPASSWD: Необязательный тег, который позволяет выполнять команды без ввода пароля.
  • commands: Конкретные команды, которые можно выполнять с помощью sudo.

Добавление ограниченного доступа с использованием sudo

Прокрутите файл до конца и добавьте следующую строку, чтобы дать пользователю trusted_advisor разрешение выполнять только команды cp и mv без ввода пароля:

trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv

Для сохранения файла в nano нажмите Ctrl+O, затем Enter, а для выхода нажмите Ctrl+X.

Тестирование ограниченного доступа с использованием sudo

Теперь проверим, работает ли ограниченный доступ с использованием sudo, как ожидалось. Сначала создадим тестовый файл в текущем каталоге:

echo "This is a test file" > important_file.txt

Теперь перейдем к пользователю trusted_advisor:

su - trusted_advisor

Введите пароль при запросе.

Попробуем скопировать файл в корневой каталог, что должно быть разрешено:

sudo cp /home/labex/project/important_file.txt /root/

Это должно выполниться успешно без запроса пароля.

Теперь попробуем выполнить команду, которая не находится в разрешенном списке, например cat:

sudo cat /root/important_file.txt

Вы должны получить ошибку "доступ запрещен", так как команда cat не находится в разрешенном списке команд.

Наконец, убедимся, что файл был скопирован в корневой каталог:

sudo ls /root/

В выводе вы должны увидеть important_file.txt.

Выйдите из сессии пользователя trusted_advisor:

exit

Удаление тестового файла

Для очистки удалите тестовый файл:

sudo rm important_file.txt

Понимание журналов sudo и аспектов безопасности

На этом этапе вы узнаете о регистрации (логировании) операций с использованием sudo и лучших практиках по безопасности. Отслеживание использования sudo важно для целей безопасности и аудита.

Логирование операций с sudo

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

В Ubuntu журналы sudo обычно хранятся в системном журнале аутентификации по пути /var/log/auth.log. Давайте посмотрим на недавние действия с использованием sudo:

sudo grep sudo /var/log/auth.log | tail -n 10

Эта команда отображает последние 10 записей журнала, связанных с sudo. В выводе должны быть указаны временные метки, имена пользователей и команды, которые были выполнены с использованием sudo.

Лучшие практики по безопасности для sudo

Вот несколько лучших практик по управлению привилегиями sudo:

  1. Принцип минимальных привилегий: Пользователи должны иметь только минимальные привилегии, необходимые для выполнения своих задач.
  2. Использование конкретных команд: Вместо предоставления полного доступа с использованием sudo укажите точно, какие команды может выполнять пользователь.
  3. Установка требований к паролю: Для чувствительных операций убедитесь, что пользователи должны вводить свой пароль при использовании sudo.
  4. Регулярный аудит: Периодически проверяйте журналы sudo и файл sudoers, чтобы убедиться в правильной конфигурации.
  5. Удаление ненужного доступа: Когда пользователям больше не нужны повышенные привилегии, незамедлительно удалите их из группы sudo.

Удаление доступа с использованием sudo

Если пользователю больше не нужны привилегии sudo, вы можете удалить его из группы sudo:

sudo deluser trusted_advisor sudo

Убедитесь, что пользователь больше не находится в группе sudo:

groups trusted_advisor

В выводе больше не должно быть "sudo" в списке групп.

Тестирование отзыва доступа с использованием sudo

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

su - trusted_advisor

Введите пароль при запросе.

Попробуйте выполнить команду с использованием sudo:

sudo ls /root

Теперь вы должны получить ошибку "доступ запрещен".

Выйдите из сессии пользователя trusted_advisor:

exit

Возвращение доступа с использованием sudo

В рамках этого лабораторного занятия (LabEx) давайте вернем пользователя в группу sudo:

sudo usermod -aG sudo trusted_advisor

Убедитесь, что пользователь снова находится в группе sudo:

groups trusted_advisor

В выводе теперь должно быть "sudo" в списке групп.

Резюме

В этом лабораторном занятии (LabEx) вы изучили основные методы управления пользователями и контроля привилегий в Linux. Вы получили практический опыт в использовании следующих концепций и операций:

  1. Создание пользователей: Вы узнали, как создавать новые учетные записи пользователей с помощью команды adduser.
  2. Предоставление привилегий sudo: Вы узнали, как предоставить пользователям административные возможности, добавив их в группу sudo.
  3. Ограничение доступа с использованием sudo: Вы практиковали применение принципа минимальных привилегий, ограничивая доступ пользователя к sudo только определенными командами с использованием файла sudoers.
  4. Логирование и мониторинг операций с sudo: Вы изучили, как регистрируются действия с использованием sudo и важность мониторинга этих журналов для целей безопасности.
  5. Управление доступом с использованием sudo: Вы узнали, как добавлять и удалять привилегии sudo у пользователей по мере необходимости.

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