Linux + возможно ли настроить суперпользователя в файле sudoers, чтобы суперпользователь мог запускать любые другие скрипты от имени обычного пользователя?

Вопрос или проблема

Я предоставил пользователю king возможность быть практически суперпользователем и настроил следующее в /etc/sudoers:

king    ALL=(ALL)       NOPASSWD:ALL

Дополнительно у нас есть другой пользователь с именем – lincoin (обычный пользователь)

Теперь я перехожу к пользователю lincoin как:

su  lincoin  

whoami
lincoin

pwd
/opt/my_scripts

И я пытаюсь запустить скрипт с моего суперпользователя – king от имени пользователя lincoin, как показано ниже:

sudo -u king    /opt/my_scripts/change_onwership_on_folders.sh

Но я получаю это:

Мы доверяем, что вы получили обычную лекцию от местного системного администратора. Она обычно сводится к трем вещам:

    №1) Уважайте конфиденциальность других.
    №2) Думайте, прежде чем печатать.
    №3) С великой силой приходит великая ответственность.

Возможно ли избежать ввода пароля lincoin, изменив какое-то правило в файле sudoers?

Ваш конфиг, кажется, дает пользователю king возможность выполнять любые команды от имени root (неявно), без пароля. Он не дает lincoin такой возможности, поскольку вы вообще не упомянули lincoin в конфиге (по крайней мере, в том конфиге, который вы показали), отсюда и запрос пароля.

Вам понадобилось бы что-то вроде этого:

lincoin    ALL=(king)       NOPASSWD: ALL

При этом, давать lincoin разрешение выполнять любые команды от имени king без пароля может быть сомнительно с точки зрения безопасности.

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

lincoin    ALL=(king)       NOPASSWD: /opt/my_scripts/change_onwership_on_folders.sh

Ответ или решение

Теория (Theory): Конфигурационный файл sudoers позволяет детализировать права и привилегии пользователей, определяя, какие команды или скрипты они могут выполнять от имени других пользователей, включая суперпользователя (root). Для того чтобы пользователь мог выполнять команды от имени другого пользователя без ввода пароля, в sudoers необходимо указать специальное правило с опцией NOPASSWD. Однако, предоставление таких привилегий требует тщательного рассмотрения с точки зрения безопасности, чтобы избежать ненужных рисков.

Пример (Example): В вашей текущей конфигурации sudoers файл настроен так, что пользователь king может выполнять любые команды без пароля, но это касается только сопоставления пользователя king с пользователем root (по умолчанию). Вы хотите, чтобы пользователь lincoin мог запускать скрипты от имени king, без ввода пароля. Это требует добавления отдельной строки в sudoers:

lincoin    ALL=(king)       NOPASSWD: /opt/my_scripts/change_onwership_on_folders.sh

Это правило позволяет пользователю lincoin выполнять конкретный скрипт от имени пользователя king без ввода пароля.

Применение (Application): Чтобы реализовать данное решение, выполните следующие шаги:

  1. Откройте файл sudoers для редактирования. Делать это следует с осторожностью. Лучше всего использовать редактор visudo для безопасного внесения изменений, так как он проверяет синтаксис файла:

    sudo visudo
  2. Добавьте строку, которая дает конкретное разрешение пользователю lincoin выполнять только определенный скрипт без пароля с привилегиями пользователя king:

    lincoin    ALL=(king)       NOPASSWD: /opt/my_scripts/change_onwership_on_folders.sh
  3. Сохраните изменения и выйдите из редактора. Теперь пользователь lincoin сможет выполнить данный скрипт под учетной записью king без пароля.

Обратите внимание, что это предоставление привилегий требует особого внимания. Рекомендуется ограничивать права доступа строчными правилами, чтобы минимизировать возможные риски, связанные с безопасностью. Постоянно проверяйте, кто и какие права имеет, чтобы данные вашей системы оставались защищенными.

Оцените материал
Добавить комментарий

Капча загружается...