Вопрос или проблема
На моем 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. Для этого выполните следующие шаги:
-
Откройте терминал и введите:
sudo visudo
Это откроет редактор для редактирования файла sudoers, при этом будет осуществляться проверка на наличие синтаксических ошибок при сохранении.
-
Внутри файла sudoers добавьте следующее правило:
Defaults:usual targetpw
Это правило позволяет пользователю "usual" использовать пароль администратора (admin) для выполнения команд с
sudo
. -
Далее вам необходимо добавить правило, разрешающее пользователю "usual" выполнять команды от имени администратора. Например, чтобы разрешить запуск определенной команды:
usual ALL=(admin) ALL
Это разрешает пользователю "usual" выполнять любые команды от имени admin.
2. Использование polkit
Поскольку вы упоминаете о необходимости эмуляции поведения polkit
, вы можете рассмотреть настройку polkit
, который управления привилегиями в графической среде. Для этого:
-
Убедитесь, что у вас установлен пакет
policykit-1
:sudo apt install policykit-1
-
Создайте polkit правило для повышения прав, чтобы пользователь "usual" мог запускать графические приложения с большими привилегиями, требуя пароль администратора. Для этого создайте файл в директории
/usr/share/polkit-1/rules.d/
(с правами администратора):sudo nano /usr/share/polkit-1/rules.d/50-allow-sudo.rules
-
Вставьте в этот файл следующий код:
polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.policykit.exec" && subject.isInGroup("usual")) { return polkit.Result.YES; } });
3. Заключение
Эти шаги, в конечном итоге, позволят вам использовать пароль администратора при выполнении команд от имени обычного пользователя.
Важно помнить, что такая настройка может создать небольшие риски безопасности, так как пользователь с ограниченными правами теперь будет иметь возможность выполнять определенные команды с помощью пароля администратора. Поэтому необходимо контролировать, какие именно команды разрешены для выполнения, и по возможности предусмотреть дополнительные меры по обеспечению безопасности системы.
Если вам необходима другая конфигурация или особые настройки, вам следует учитывать, что каждая ситуация индивидуальна, и возможно, потребуется провести дополнительные исследования для достижения желаемого результата.