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

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

Введение

В системах Linux управление разрешениями пользователей и контролем доступа — важная часть системного администрирования и обеспечения безопасности. Команда sudo, название которой расшифровывается как «superuser do», позволяет авторизованным пользователям выполнять команды с повышенными привилегиями, обычно от имени суперпользователя или учётной записи root.

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

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

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

Что такое sudo?

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

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

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

sudo adduser trusted_advisor

Система попросит вас задать пароль и указать необязательную информацию о новом пользователе. Для этой лабораторной работы можно задать простой пароль, например 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 система снова запросит пароль. Введите его. Если у пользователя есть привилегии sudo, вы увидите содержимое каталога /root.

Затем завершите сеанс пользователя trusted_advisor и вернитесь к исходному пользователю:

exit

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

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

Файл sudoers

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

Удаление широкого доступа через группу

Разрешения sudo, заданные подходящими правилами, объединяются. Добавление правила для отдельных команд не отменяет полный доступ, предоставленный группой sudo. Сначала удалите этот широкий доступ из исходного сеанса labex:

sudo deluser trusted_advisor sudo

Для проверки откройте новый сеанс su - trusted_advisor, чтобы пользователь получил обновлённый состав групп.

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

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

sudo EDITOR=vim visudo

Эта команда явно открывает файл в Vim, поэтому далее используются клавиши редактирования и сохранения именно этого редактора. Нажмите G, чтобы перейти к последней строке, затем o, чтобы создать новую строку и перейти в режим вставки.

Синтаксис sudoers

Основной синтаксис записи sudo в файле sudoers:

user_or_group    host=(run_as_user:run_as_group)    NOPASSWD: commands

Здесь:

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

Настройка ограниченного доступа sudo

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

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

Также добавьте отдельную строку, чтобы включить специальный журнал sudo в этом контейнере: здесь нет файла /var/log/auth.log.

Defaults logfile="/var/log/sudo.log"

Нажмите Esc, введите :wq и нажмите Enter, чтобы сохранить изменения и выйти из Vim. Если visudo сообщит о синтаксической ошибке, нажмите e, чтобы вернуться к редактированию и исправить её. Чтобы отменить изменения в Vim, нажмите Esc, введите :q! и нажмите Enter.

Это упражнение проверяет только сопоставление команд: неограниченный доступ root к cp или mv позволяет перезаписывать важные файлы и не является безопасным ограничением для рабочей среды.

Проверка ограниченного доступа sudo

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

cd /home/labex/project
echo "This is a test file" > important_file.txt

Теперь переключитесь на пользователя trusted_advisor:

su - trusted_advisor

Введите пароль, когда система его запросит.

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

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

Команда должна выполниться без запроса пароля.

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

sudo -n cat /root/important_file.txt

Команда должна завершиться ошибкой, поскольку cat не разрешена. Параметр -n запрещает запрашивать пароль. В сообщении об отказе может быть указано, что требуется пароль или что команда не разрешена. Содержимое файла не должно выводиться.

Перед проверкой копии завершите сеанс пользователя с ограниченными правами: команда ls тоже не входит в список разрешённых.

exit

От имени пользователя labex убедитесь, что файл скопирован:

sudo ls /root/

В выводе должен быть файл important_file.txt.

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

Удалите тестовый файл и его копию:

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

Журналы sudo и вопросы безопасности

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

Журналирование sudo

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

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

sudo tail -n 10 /var/log/sudo.log

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

Рекомендации по безопасному использованию sudo

При управлении привилегиями sudo следуйте этим рекомендациям:

  • Принцип наименьших привилегий: предоставляйте пользователям только те привилегии, которые необходимы для выполнения их задач.

  • Используйте конкретные команды: вместо полного доступа sudo указывайте, какие именно команды может выполнять пользователь.

  • Требуйте ввод пароля: для важных операций настройте обязательный ввод пароля при использовании sudo.

  • Регулярно проводите аудит: периодически проверяйте журналы sudo и файл sudoers, чтобы убедиться в правильности настроек.

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

Отзыв доступа sudo

На этапе 2 вы уже удалили trusted_advisor из группы sudo. Чтобы отозвать оставшийся доступ к отдельным командам, удалите также соответствующее правило:

sudo EDITOR=vim visudo

Нажмите Esc, введите /^trusted_advisor и нажмите Enter, чтобы найти правило. Нажмите dd, чтобы удалить всю строку:

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

Не удаляйте строку Defaults logfile. Введите :wq и нажмите Enter, чтобы сохранить изменения и выйти. Проверьте членство пользователя в группах:

groups trusted_advisor

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

Проверка отозванного доступа sudo

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

su - trusted_advisor

Введите пароль, когда система его запросит.

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

sudo -n ls /root

Теперь должно появиться сообщение trusted_advisor is not in the sudoers file. Команда должна завершиться ошибкой.

Завершите сеанс пользователя trusted_advisor:

exit

Восстановление доступа sudo

Для этой лабораторной работы снова добавьте пользователя в группу sudo:

sudo usermod -aG sudo trusted_advisor

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

groups trusted_advisor

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

Итоги

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

  1. Создание пользователей: вы научились создавать новые учётные записи с помощью команды adduser.

  2. Предоставление привилегий sudo: вы узнали, как предоставлять пользователям административные возможности, добавляя их в группу sudo.

  3. Ограничение доступа sudo: вы применили принцип наименьших привилегий, ограничив доступ пользователя sudo отдельными командами с помощью файла sudoers.

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

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

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