2

Почему мне не нужно устанавливать как root когда оболочка "угадывает" пакет, который мне нужен для выполнения команды?

Например:

(cseymour) : ~ $ dnf install rogue
Error: This command has to be run under the root user.
(cseymour) : ~ $ rogue
bash: rogue: command not found...
Install package 'rogue' to provide command 'rogue'? [N/y] y


 * Waiting in queue... 
The following packages have to be installed:
 rogue-5.4.5-19.fc24.x86_64 The original graphical adventure game
Proceed with changes? [N/y] y


 * Waiting in queue... 
 * Waiting for authentication... 
 * Waiting in queue... 
 * Downloading packages... 
 * Requesting data... 
 * Testing changes... 
 * Installing packages... 

и так далее, успешно установив пакет без пароля root.

1 ответ1

0

В Fedora установлен небольшой пакет PackageKit-command-not-found . Политика настраивается в /etc/PackageKit/CommandNotFound.conf .

Аутентификация выполняется с использованием PolicyKit (по шине D), где вы уже предоставили установку нового пакета с помощью PackageKit GUI. Соответствующий файл - usr/share/polkit-1/rules.d/org.freedesktop.packagekit.rules позволяющий устанавливать пакеты для локально зарегистрированных пользователей в группе wheel :

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.packagekit.package-install" &&
        subject.active == true && subject.local == true &&
        subject.isInGroup("wheel")) {
            return polkit.Result.YES;
    }
});

Если вы не удовлетворены этим поведением, вы всегда можете удалить этот пакет (dnf remove PackageKit-command-not-found), и пакеты не будут установлены автоматически.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .