Отдельный пароль для sudo

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

На моем Kubuntu у меня два пользователя: “обычный”, который не имеет прав sudo, и “администратор”, который имеет такие права. Последнему разрешено использовать sudo, когда этот пользователь вошел в систему. Первый не может использовать sudo во время своего входа, так что мне сначала нужно выполнить su admin, а затем я могу использовать sudo и ввести пароль администратора. Я хочу сделать так, чтобы можно было вводить пароль администратора, когда я использую sudo от имени обычного пользователя.

Я пробовал sudo -u admin somecommand, но он все равно запрашивает пароль обычного пользователя. Я пробовал добавить Defaults:usual targetpw из этого ответа в файл sudoers, и:

  • для sudo somecommand он запрашивает пароль root, что мне не нужно;
  • для sudo -u admin comecommand он действительно запрашивает пароль администратора, но затем говорит usual is not in sudoers file.

Как мне сделать так, чтобы sudo somecommand по умолчанию запрашивал пароль администратора? Желательно без -u admin, если это возможно.

Если вы задаетесь вопросом, зачем я это делаю, я пытаюсь имитировать то, что делает polkit, когда я выполняю что-то в графическом интерфейсе. Поскольку обычный пользователь не является администратором, polkit запрашивает пароль администратора и позволяет мне ввести его и выполнить необходимое действие. Это довольно похоже на UAC в Windows, когда вы вошли под учетной записью, не являющейся администратором: он запрашивает пароль учетной записи администратора.

Правка: В комментариях был предложен похожий вопрос. Тем не менее, я думаю, что мне следует объяснить глобальный контекст того, чего я пытаюсь достичь. Я хочу, чтобы мой пароль для входа отличался от пароля sudo. Когда я использовал Windows, создание отдельной учетной записи администратора сделало это возможным. В Kubuntu аутентификация другая, поэтому этот подход может вообще не помочь. Предыдущий абзац о ‘почему я это делаю’ относится к моей идее создать отдельного пользователя admin, чтобы имитировать настройку Windows, но теперь я думаю, что мне стоит попробовать другой подход. Я нашел этот вопрос о том, как это сделать, и я сейчас ищу способы это реализовать, описанные в ответах. Я должен отметить, что я хочу попробовать что-то отличное от просто использования пароля root в качестве отдельного пароля.

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

Для того чтобы настроить отдельный пароль для команд, выполняемых с помощью sudo, в операционной системе Kubuntu, необходимо учитывать несколько основных моментов. Ваша цель – разрешить пользователю с ограниченными правами (в вашем случае, user "usual") выполнять команды, требующие повышения привилегий, с использованием пароля сопутствующего пользователя (admin), а не пароля текущего пользователя. Это несколько усложняет стандартные механизмы аутентификации в Linux, которые предполагают, что команда sudo запрашивает пароль именно текущего пользователя.

1. Настройка привилегий с помощью sudoers

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

  1. Откройте терминал и введите:

    sudo visudo

    Это откроет редактор для редактирования файла sudoers, при этом будет осуществляться проверка на наличие синтаксических ошибок при сохранении.

  2. Внутри файла sudoers добавьте следующее правило:

    Defaults:usual targetpw

    Это правило позволяет пользователю "usual" использовать пароль администратора (admin) для выполнения команд с sudo.

  3. Далее вам необходимо добавить правило, разрешающее пользователю "usual" выполнять команды от имени администратора. Например, чтобы разрешить запуск определенной команды:

    usual ALL=(admin) ALL

    Это разрешает пользователю "usual" выполнять любые команды от имени admin.

2. Использование polkit

Поскольку вы упоминаете о необходимости эмуляции поведения polkit, вы можете рассмотреть настройку polkit, который управления привилегиями в графической среде. Для этого:

  1. Убедитесь, что у вас установлен пакет policykit-1:

    sudo apt install policykit-1
  2. Создайте polkit правило для повышения прав, чтобы пользователь "usual" мог запускать графические приложения с большими привилегиями, требуя пароль администратора. Для этого создайте файл в директории /usr/share/polkit-1/rules.d/ (с правами администратора):

    sudo nano /usr/share/polkit-1/rules.d/50-allow-sudo.rules
  3. Вставьте в этот файл следующий код:

    polkit.addRule(function(action, subject) {
       if (action.id == "org.freedesktop.policykit.exec" && subject.isInGroup("usual")) {
           return polkit.Result.YES;
       }
    });

3. Заключение

Эти шаги, в конечном итоге, позволят вам использовать пароль администратора при выполнении команд от имени обычного пользователя.

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

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

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

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