Когда я пытаюсь выполнить, определенные действия в ubuntu I попросился пройти проверку подлинности с пользователем root, но человечность не дает мне опции, для которого пользователя root, она просто указывает его как пользователя, которые настраивают мою машину. Я задавался вопросом, как пойти об изменении, какого пользователя это выбирает для выполнения аутентификации?
Например, если бы я хочу установить программное обеспечение от Центра программного обеспечения Ubuntu, меня просят пройти проверку подлинности с пользователем X, и я хотел бы изменить это, чтобы быть пользователем Y глобально.
Я также знаю, что могу просто выполнить вещи с sudo из командной строки, но я не хочу должным быть делать это.
Я использую человечность 14.04. И пользователь Y находится в sudoers файле, и на данный момент пользователь X не.
Некоторое время назад sudoers
не был единственным способом управления правами пользователей в Ubuntu и других дистрибутивах Linux. Polkit позволяет более детально управлять привилегиями. Когда вы используете GParted или Synaptic в последней версии Ubuntu, аутентификация обычно выполняется с использованием polkit.
Чтобы назначить пользователя (например, Y
) администратором polkit, создайте файл в /etc/polkit-1/localauthority.conf.d/
(скажем, 99-custom.conf
), содержащий:
[Configuration]
AdminIdentities=unix-user:Y
Вы можете проверить, правильно ли это было применено, используя pkexec
как Y
:
$ pkexec bash -l
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/bin/bash' as the super user
Authenticating as: muru,,, (muru)
Password:
==== AUTHENTICATION COMPLETE ===
Поскольку у вас уже есть пользователь с правами администратора, вам будет предложен выбор от pkexec
:
$ pkexec bash
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/bin/bash' as the super user
Multiple identities can be used for authentication:
1. X,,, (Y)
2. Y,,, (X)
Choose identity to authenticate as (1-2):
В графическом интерфейсе пользователя должен быть раскрывающийся список .
Не существует такого понятия, как пользователь по умолчанию для аутентификации. Просто по умолчанию пользователь, созданный во время установки Ubuntu (в вашем случае X ), является администратором, т.е. он присоединен к группе sudo. Поэтому, когда вы выполняете задачи с повышенными правами, такие как установка программного обеспечения, вас просят ввести пароль пользователя в группе sudo.
Теперь, когда вы добавляете нового пользователя Y , он по умолчанию является стандартным пользователем и его необходимо вручную добавить в группу sudo или, в общем, сделать администратором для установки приложений. После того, как пользователь добавлен в группу sudo, вам будет предложено ввести пароль пользователя Y при выполнении задач с повышенными правами (очевидно, когда вы вошли в систему как Y).
TL; DR: Добавление пользователя в группу sudo с помощью sudo usermod -aG sudo username
решает эту проблему, потому что и sudo, и Polkit используют эту группу.
Обычный и ожидаемый способ предоставить пользователю административные полномочия в системе Ubuntu: чтобы добавить учетную запись пользователя в группу sudo
. Это дает им возможности не только через sudo, но и через Polkit. Графическое приглашение, которое позволяет вам выбирать между пользователями с административными полномочиями, является приглашением Polkit, а не приглашением sudo. Как говорит Муру , большинство графических программ, предлагающих ввести пароль для выполнения административной задачи, используют Polkit, не sudo.
Но чтобы сделать пользователя администратором, необходимо разрешите им выполнять действия с правами суперпользователя с sudo и Polkit, и чтобы они отображались в списке пользователей для аутентификации, как при использовании Polkit, вам не нужно настраивать sudo и Polkit отдельно ] и я не рекомендую этого делать. Просто поместите пользователя в группу sudo
. Пусть вас не вводит в заблуждение название - Polkit уважает эту группу так же, как sudo.
Формулировка вашего вопроса очень убедительно свидетельствует о том, что вместо добавления пользователя в группу Polkit вы добавили пользовательскую запись для этого один конкретный пользователь в / etc / sudoers
:
... он просто указывает его как пользователя, который настраивал мою машину.
Пользователь, созданный при установке Ubuntu, добавляется в ] sudo
group.
И вы упомянули (выделено мной):
И пользователь Y находится в файле sudoers , а на данный момент пользователя X нет.
Polkit не использует используйте / etc / sudoers
, поэтому предоставление пользователю возможности запускать sudo
путем редактирования этого файла не дает ему возможности через Polkit. Это возможная причина, по которой вы действительно можете захотеть отредактировать этот файл - если вы хотели, чтобы давал пользователю полномочия через sudo
, но не через Polkit. Однако вам нужны и то, и другое, и это то, для чего группа sudo
в Ubuntu уже настроена, так что вы должны просто использовать это.
Поскольку вы действительно имеете возможность запускать команды от имени пользователя root с помощью команды sudo вы можете добавить имя пользователя
(замените его фактическим именем пользователя, конечно) в группу sudo, запустив:
sudo usermod -aG sudo username
Или, если вы хотите использовать Polkit, чтобы добавить его, вы может выполнить эту команду, которая после завершения имеет тот же эффект:
pkexec usermod -aG sudo username
После того, как вы запустите любую из этих команд, имя пользователя
сможет выполнять произвольные действия как root через sudo и Polkit. Обратите внимание, что usermod
нуждается в флаге -a
, как показано, или он удалит пользователя из других групп, что вам не нужно.
См. также Как добавить существующего пользователя в существующую группу?
Если вас интересует , как sudo и Polkit настроены для предоставления прав пользователям в sudo
, ответ можно почерпнуть из их файлов конфигурации. По умолчанию / etc / sudoers
включает следующие строки:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
/etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf
состоит из:
[Configuration]
AdminIdentities=unix-group:sudo;unix-group:admin
Таким образом и sudo, и Polkit настроены для предоставления административных привилегий пользователям, которые входят в одну или обе группы admin
и sudo
. Группа admin
указана для совместимости со старыми версиями Ubuntu, где admin
использовался вместо sudo
, в случае обновления с такой версии и учетных записей пользователей в admin
, но не в sudo
. Но помимо этой ситуации, у вас, вероятно, даже нет группы администраторов
. Запуск getent group admin sudo
покажет, какая из этих групп существует и какие пользователи в них находятся. В недавно установленной системе 14.04 ничего не будет отображаться для admin
. Поэтому используйте группу sudo
, а не группу admin
, чтобы сделать пользователей администраторами.
Эти детали конфигурации верны для Ubuntu 14.04, поскольку вы работали, когда просили этот вопрос, но также и всех последующих выпусков на момент написания этой статьи, вплоть до Ubuntu 17.10 включительно.Добавление пользователя в группу sudo
является полностью эффективным и наиболее подходящим способом предоставить им все полномочия sudo и Polkit для всех поддерживаемых в настоящее время выпусков Ubuntu.
Я хотел бы поблагодарить Videonauth. как за полезный комментарий к другому ответу (который с тех пор был удален), который привел к тому, что я написал этот ответ, так и за проверку того, что предоставленная мной информация о содержимом sudoers
и 51-ubuntu-admin.conf
по-прежнему актуален, начиная с Ubuntu 17.10.