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

3

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

csey
источник

Ответы:

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

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