Несовместимые разрешения для установки dnf
Почему мне не нужно устанавливать как 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 ответ
В 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
) и пакеты не будут установлены автоматически.