Autorisations incohérentes pour l'installation de dnf

3

Pourquoi n'ai-je pas besoin d'installer car rootlorsque le shell "devine" le paquet dont j'ai besoin pour exécuter une commande?

Par exemple:

(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... 

et ainsi de suite, pour installer le paquet avec succès sans nécessiter de mot de passe root.

Csey
la source

Réponses:

1

Un petit paquet PackageKit-command-not-found est installé dans Fedora, ce qui rend cela possible. La politique est configurée dans /etc/PackageKit/CommandNotFound.conf.

L'authentification est effectuée à l'aide de PolicyKit (sur D-bus), où vous avez déjà accordé l'installation d'un nouveau package à l'aide de l'interface graphique de PackageKit. Le fichier respectif usr/share/polkit-1/rules.d/org.freedesktop.packagekit.rulespermet d'installer des packages pour les utilisateurs connectés localement dans le wheelgroupe:

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;
    }
});

Si vous n'êtes pas satisfait de ce comportement, vous pouvez toujours désinstaller ce package ( dnf remove PackageKit-command-not-found) et les packages ne seront pas installés automatiquement.

Jakuje
la source
Merci beaucoup! Etant donné que cela est installé par défaut, pourquoi dnf décide-t-il d'utiliser une demande de mot de passe plutôt que quelque chose de similaire? Ces comportements différents sont-ils intentionnels?
Csey
Car dnfn'est pas PackageKitet la règle ci-dessus est seulement pour PackageKit. DNF est un outil de ligne de commande standard, qui a besoin de rootprivilèges, mais PackageKit utilise l'authentification à l'aide de D-Bus et une partie du back-end s'exécutant déjà à la racine.
Jakuje
1
@ Chris Je suis d'accord que c'est incohérent. Vous pouvez également installer un logiciel sans mot de passe à l'aide de l'outil graphique de GNOME Software. Je pense que c'est principalement juste que le comportement que nous avons décidé est correct pour les commandes non trouvées et les installations à interface graphique consiste à installer des packages à partir de pensions déjà configurées. Comme Fedora évite en général d’activer des services simplement lors de l’installation, le risque est assez faible. D'autre part, DNF peut faire beaucoup d'autres choses, dont beaucoup dangereuses.
Mattdm
@mattdm merci pour l'addition et le contexte qui me manquait (encore quelques années seulement autour de Fedora). Je l'ajouterai à la réponse ou vous pourrez l'éditer, car cela peut aussi être intéressant pour d'autres.
Jakuje