Невідповідні дозволи на встановлення 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.

Відповіді:


1

Існує невеликий пакет PackageKit-command-not-found, встановлений у Fedora, завдяки чому це відбувається. Політика налаштована в /etc/PackageKit/CommandNotFound.conf.

Аутентифікація проводиться за допомогою PolicyKit (через D-bus), де ви вже надали встановлення нового пакету за допомогою GUI PackageKit. Відповідний файл 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

Тому що dnfце не так, PackageKitі правило, наведене вище, стосується лише PackageKit. DNF - це стандартний інструмент командного рядка, який потребує rootпривілеїв, але PackageKit використовує автентифікацію, використовуючи D-Bus та деякий бекенд, який вже працює як корінь.
Jakuje

1
@csey Я згоден, що це непослідовно. Ви також можете встановити програмне забезпечення без пароля за допомогою інструмента GUI Software GNOME. Я думаю, що це лише те, що поведінка, яку ми вирішили, що для команд, не знайдених та встановлених графічним інтерфейсом, відповідає встановленню пакетів з уже налаштованих репостів. Оскільки Fedora взагалі уникає активації сервісів просто під час встановлення, ризик цього досить низький. З іншого боку, DNF може зробити багато інших речей, багато з яких небезпечні.
mattdm

@mattdm дякую за додаток та передумови, які мені не вистачало (ще лише кілька років навколо Fedora). Я додам його до відповіді, або ви можете відредагувати, оскільки це може бути цікаво і для інших.
Jakuje
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.