Каталог
|
Sudo - настройка прав доступа2021-11-29 Все статьи →Sudo - настройка прав доступа. Вступление В любой операционной системе всегда уделяется особое внимание ”правам доступа“, ведь от их реализации непосредственно зависит безопасность всей системы в целом. Хотя это касается не только ОС, но и любых программных и аппаратных продуктов. OC GNU/Linux в независимости от дистрибутива не исключение. Тема прав доступа очень обширна и требует довольно-таки глубоких знаний, поэтому в этой статье не будут затрагиваться такие вопросы, как: реализация прав доступа в OC GNU/Linux, хранение паролей пользователей, их верификация, обход различных коллизий и т.д. Не следует рассматривать данную статью, как полноценное руководство. Основная ее цель - объяснить зачем нужна такая программа, как sudo в OC GNU/Linux и показать на примере базовый принцип ее конфигурации. Теоретическая часть Наверное никому не секрет, что в любом дистрибутиве Linux существует как минимум два пользователя: суперпользователь (root) с неограниченными правами доступа и обычный пользователь ровно с теми правами, которые ему были выданы (разрешены) суперпользователем. Следует понять и запомнить одно негласное правило: любой сеанс в системе должен проходить только из-под сессии обычного пользователя и ни в коем случае не от root. Суть данного правила заключается в том, что если кто-то получит доступ к консоли открытой под суперпользователем он сможет умышленно или нет (особого значения не имеет) выполнить любую команду, нанеся тем самым вред системе. Вариант, когда вы сами по неопытности или случайно выполните нежелательную команду тоже имеет место. Из всего вышеизложенного становится понятно, что вся основная работа происходит в сеансе от обычного пользователя, а в случае необходимости в сеансе от суперпользователя. Вариант с постоянной сменой пользователя естественно допускается, но он как минимум не удобен, а как максимум тоже не безопасен. Вот тут на помощь и приходит утилита sudo. Sudo - это программа предоставляющая возможность делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы. Проще говоря, она позволяет конкретным пользователям выполнять разрешенные им команды от имени суперпользователя, либо от имени других пользователей или групп. Практическая часть Конфигурационный файл - sudoers расположенный в директории /etc. Примечание: в качестве тестовой платформы использовался одноплатный компьютер Raspberry Pi 4/4GB под управлением Raspberry PI OS, но все что описано в данной статье применимо и к любому иному дистрибутиву Linux независимо от аппаратной платформы и ее архитектуры. Открываем конфигурационный файл sudoers
В открывшемся файле будет находиться приблизительно следующая информация:
Разберем подробно структуру файла и значение параметров. Первые три строки:
В этой части файла после Defaults перечислены основные параметры конфигурации:
Оставляем все три параметра и добавляем к ним новые:
Для базовой конфигурации этих правил вполне хватит. Естественно это далеко не все параметры которые существуют, их в десятки раз больше и в идеале под каждую задачу конкретного пользователя они будут разные. Тут я показал, как они добавляются и что могут. Все существующие параметры Вы можете найти в официальной документации перейдя по ссылке: https://www.sudo.ws/man/1.8.13/sudoers.man.html или открыв страницу документации в системе - man sudoers. Настоятельно советую ознакомиться с документацией и внести именно те параметры, которые вы считаете более оптимальными для вашей задачи. После параметров указаны псевдонимы - alias.
Синтаксис:
Примечание: наименование группы должно начинаться с символа набранного в верхнем регистре. Это позволяет указывать несколько определений псевдонимов одного типа в одной строке, разделенных знаком [ : ]
Существуют еще и списки:
У списков есть свой синтаксис и своя структура, но их мы рассматривать не станем ибо для базовой конфигурации их можно не использовать. Примечание: естественно я настоятельно рекомендую научится работать с списками, прочитав о них в официальной документации :) Примеры:
Надеюсь базовый синтаксис и примеры использования ясны. В моем случае имя обычного пользователя - pi, а имя хоста - host7. В качестве примера разрешим пользователю pi выполнять на локальном хосте команду apt-get с определенными параметрами. Создаем нужные псевдонимы и прописываем их в конфигурационный файл после параметров.
Теперь осталось разобраться непосредственно только с правилами. В конфигурационном файле уже имеются две строки:
Вторую строку комментируем, первую оставляем и на ней рассмотрим что означает каждый параметр. Синтаксис:
Таким образом строка root ALL=(ALL:ALL) ALL означает, что пользователь root может выполнять любые команды на любом хосте от имени любого пользователя и любой группы. После всего вышеизложенного требуемое правило выглядит следующим образом: ULH LOCALHOST=(root:root) APTSHORT, APTLONG По итогу конфигурационный файл будет выглядеть следующим образом:
Сохраняем файл и выходим из него. Остался один нюанс. В самом конце конфигурационного файла имеется строка #includedir /etc/sudoers.d и она не является комментарием, это указатель на директорию /etc/sudoers.d/ в которой должны располагаться пользовательские конфигурационные файлы (которые не заканчиваются на [ ~ ] или не содержат символ [ . ]) для утилиты sudo. Смысл в таком решении заключается в том, что при обновлении системы конфигурационный файл sudoers может быть автоматически изменен. Поэтому если параметры настройки прописаны в sudoers следует всегда иметь его актуальную резервную копию. Оба варианта допустимы, но на сегодняшний день метод описанный в данной статье считается архаичным и предпочтительней второй метод. Следует еще учитывать, что в некоторых дистрибутивах изначально в директории /etc/sudoers.d/ уже имеются пользовательские файлы конфигурации, а вы планируете работать только с sudoers в таком случае следует или удалить ненужные пользовательские файлы или закомментировать находящиеся в них параметры. Поэтому при классическом варианте настройки обязательно следует проверять директорию /etc/sudoers.d/. Например в Raspberry PI OS в директории /etc/sudoers.d/ изначально находятся четыре файла: 010_at-export, 010_pi-nopasswd, 010_proxy, README. В файле 010_pi-nopasswd находится строка pi ALL=(ALL) NOPASSWD: ALL которая означает что пользователь pi может выполнять любые команды на любом хосте от любого пользователя без ввода пароля. Естественно такое недопустимо и данную строку следует закомментировать или удалить файл. На этом базовую конфигурацию sudo можно считать законченной. В последующем изучив документацию, вы сможете создавать свои псевдонимы, списки и правила для различных пользователей и групп, заточенные непосредственно под конкретные задачи.
Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
No Name
24.02.2022 18:17:35
Thanks
|