Niespójne uprawnienia do instalacji dnf

2

Dlaczego ja nie trzeba zainstalować jako root kiedy powłoka „zgaduje” pakiet, którego potrzebuję do wykonania polecenia?

Na przykład:

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

i tak dalej, pomyślnie instalując pakiet bez konieczności podania hasła roota.

csey
źródło

Odpowiedzi:

0

Jest mała paczka Komenda PackageKit-not-found zainstalowane w Fedorze, co sprawia, że ​​tak się dzieje. Zasada jest skonfigurowana w /etc/PackageKit/CommandNotFound.conf.

Uwierzytelnianie odbywa się za pomocą PolicyKit (przez D-bus), gdzie już przyznano instalację nowego pakietu przy użyciu GUI PackageKit. Odpowiedni plik to usr/share/polkit-1/rules.d/org.freedesktop.packagekit.rules pozwalający na instalowanie pakietów dla zalogowanych lokalnie użytkowników w wheel Grupa:

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

Jeśli nie jesteś zadowolony z tego zachowania, zawsze możesz odinstalować ten pakiet ( dnf remove PackageKit-command-not-found ), a pakiety nie zostaną zainstalowane automatycznie.

Jakuje
źródło
Dzięki wielkie! Biorąc pod uwagę, że jest to zainstalowane domyślnie, dlaczego dnf uważa, że ​​używa hasła zamiast czegoś podobnego? Czy te różne zachowania są zamierzone?
csey
Bo dnf nie jest PackageKit a powyższa reguła dotyczy tylko PackageKit. DNF to standardowe narzędzie wiersza polecenia, które wymaga root przywileje, ale PackageKit używa uwierzytelniania za pomocą D-Bus i trochę backend już działa jako root.
Jakuje
1
@csey Zgadzam się, że jest niespójny. Możesz również zainstalować oprogramowanie bez hasła za pomocą narzędzia GUI GNOME Software. Myślę, że to po prostu zachowanie, które uznaliśmy za w porządku, jeśli nie znaleziono polecenia i instalacji GUI, polega na zainstalowaniu pakietów ze skonfigurowanych repozytoriów. Ponieważ Fedora na ogół unika aktywowania usług po prostu na instalacji, ryzyko tego jest dość niskie. Z drugiej strony DNF może zrobić wiele innych rzeczy, z których wiele jest niebezpiecznych.
mattdm
@mattdm dziękuję za dodanie i tło, którego brakowało (jeszcze tylko kilka lat wokół Fedory). Dodam go do odpowiedzi lub możesz go edytować, ponieważ może być interesujący również dla innych.
Jakuje