Введение
В системах 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:
- Принцип минимальных привилегий: Пользователи должны иметь только минимальные привилегии, необходимые для выполнения своих задач.
- Использование конкретных команд: Вместо предоставления полного доступа с использованием sudo укажите точно, какие команды может выполнять пользователь.
- Установка требований к паролю: Для чувствительных операций убедитесь, что пользователи должны вводить свой пароль при использовании sudo.
- Регулярный аудит: Периодически проверяйте журналы sudo и файл sudoers, чтобы убедиться в правильной конфигурации.
- Удаление ненужного доступа: Когда пользователям больше не нужны повышенные привилегии, незамедлительно удалите их из группы 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. Вы получили практический опыт в использовании следующих концепций и операций:
- Создание пользователей: Вы узнали, как создавать новые учетные записи пользователей с помощью команды
adduser. - Предоставление привилегий sudo: Вы узнали, как предоставить пользователям административные возможности, добавив их в группу sudo.
- Ограничение доступа с использованием sudo: Вы практиковали применение принципа минимальных привилегий, ограничивая доступ пользователя к sudo только определенными командами с использованием файла sudoers.
- Логирование и мониторинг операций с sudo: Вы изучили, как регистрируются действия с использованием sudo и важность мониторинга этих журналов для целей безопасности.
- Управление доступом с использованием sudo: Вы узнали, как добавлять и удалять привилегии sudo у пользователей по мере необходимости.
Эти навыки являются фундаментальными для администрирования Linux-систем и обеспечения безопасности. Правильное управление привилегиями пользователей позволяет поддерживать безопасную систему, в которой пользователи имеют доступ к необходимым ресурсам без ущерба для целостности и безопасности системы.



