Несовместимые разрешения для установки dnf

498
csey

Почему мне не нужно устанавливать, 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.

2

1 ответ на вопрос

0
Jakuje

В 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), и пакеты не будут установлены автоматически.

Спасибо! Учитывая, что это установлено по умолчанию, почему dnf решает использовать запрос пароля, а не что-то подобное? Являются ли эти различия в поведении преднамеренными? csey 7 лет назад 0
Поскольку `dnf` не является` PackageKit` и вышеприведенное правило относится только к PackageKit. DNF - это стандартное средство командной строки, для которого нужны привилегии `root`, но PackageKit использует аутентификацию с использованием D-Bus и * некоторого * бэкэнда, уже работающего от имени root. Jakuje 7 лет назад 0
@Csey Я согласен, что это противоречиво. Вы также можете установить программное обеспечение без пароля, используя инструмент GNOME Software GUI. Я думаю, что это в основном то, что поведение, которое мы решили, подходит для команды not-found и установки с графическим интерфейсом - это установка пакетов из уже настроенных репозиториев. Поскольку Fedora в целом избегает активации сервисов просто при установке, риск этого довольно низок. С другой стороны, DNF может делать много других вещей, многие из которых опасны. mattdm 7 лет назад 1
@mattdm спасибо за дополнение и фон, который мне не хватало (до сих пор только несколько лет вокруг Fedora). Я добавлю его в ответ, или вы можете отредактировать его, так как это может быть интересно и другим. Jakuje 7 лет назад 0

Похожие вопросы