Wie verhindere ich, dass PolicyKit nach einem Passwort fragt?

24

Seit Jahren habe ich Folgendes in meiner sudoersAkte:

scott   ALL=NOPASSWD: ALL

Für diejenigen, die es nicht wissen, verhindert dies, dass sudoFreunde ( gksudousw.) nach einem Passwort fragen. Im Laufe der Jahre wurden jedoch immer mehr Dinge, die früher verwendet sudowurden, auf PolicyKit umgestellt.

Ich suche nach einer entsprechenden Konfiguration für PolicyKit, sodass ich nie nach meinem Passwort gefragt werde.

Lassen Sie mich für diejenigen, die meine Anfrage nicht mögen, Folgendes sagen: Ich verstehe die Gründe für die Standardkonfiguration und sie sind solide. Ich verstehe auch die Risiken, die mit der Konfiguration verbunden sind, die ich vornehmen möchte. Trotzdem ist es die Art, wie ich mein System einrichten möchte. Diejenigen, die das oben Genannte nicht vollständig verstehen, sollten nicht versuchen, was ich versuche.

Scott Severance
quelle

Antworten:

15

Sie können PolicyKit austricksen und ALLE Passwortabfragen unterdrücken, indem Sie die Aktion durch einen Platzhalter ersetzen.

HAFTUNGSAUSSCHLUSS: Im Folgenden werden ALLE Kennwortabfragen global für alle Mitglieder der Administratorgruppe mit Ausnahme des Anmeldebildschirms unterdrückt. Es ist EXTREM gefährlich und sollte NIEMALS implementiert werden, da die Möglichkeit besteht, dass SIE ENDLICH IHR SYSTEM BRECHEN!

Sag nicht, dass du nicht gewarnt wurdest!

HINWEIS: Wenn Sie 12.04 oder neuer ausführen, ersetzen Sie "admin" durch "sudo"!

Ersetzen Sie "Benutzername" durch Ihren tatsächlichen Benutzernamen:

usermod -aG admin username

Wechseln Sie zu root:

sudo -i

Erstellen Sie eine neue Richtlinie:

gedit /var/lib/polkit-1/localauthority/50-local.d/disable-passwords.pkla

Fügen Sie Folgendes hinzu:

[Do anything you want]
Identity=unix-group:admin
Action=*
ResultActive=yes

Speichern und schließen. Probieren Sie dann etwas aus, für das normalerweise ein Kennwort erforderlich ist. :)

HINWEIS: Es spielt keine Rolle, was Sie als .pkla-Dateinamen verwenden. Sie können es benennen, was Sie wollen.

Und zum Schluss ist dies die EINZIGE Richtlinie, die Sie benötigen, um Passwortabfragen zu unterdrücken, da dies wiederum global geschieht.

user55572
quelle
Dies funktioniert auch unter Fedora, wenn Sie die adminGruppe durch ersetzen wheel. Vielen Dank!
Kenny Rasschaert
3
Könnte jemand beschreiben, wie genau dies das System "brechen" wird?
Mehrdad
3
Ja bitte. Wie wird dies das System zerstören? Nicht das! Etwas Dummes, das Sie danach tun, wird das System zerstören, aber nicht das! Auf diese Weise können Sie auf dem Host alles ohne Kennwort ausführen. Wenn Sie etwas Dummes tun, brechen Sie das System. Wenn Sie das Kennwort eingeben müssen und etwas Dummes tun, wird das System beschädigt. Das macht es an sich nur ein bisschen einfacher , etwas Dummes zu tun.
Dangonfast
1
@jeckyll2hide Lies den HINWEIS - er erklärt, warum das OP gewählt hat [Install package file]. Entweder sind Sie damit nicht einverstanden und der HINWEIS erfordert eine ähnliche Bearbeitung, oder Ihre Bearbeitung ist ungültig und sollte rückgängig gemacht werden.
BBC
1
Sie können @prusswan verwenden, Identity=unix-user:scottum nur dem Benutzer "scott" zu erlauben, die Aktion auszuführen . Auch wenn Sie nur bestimmte Aktionen zulassen möchten, können Sie grep /var/log/auth.log verwenden. Polkitd gibt den vollständigen Namen des Polkits aus, das Sie versucht haben, als Sie zur Eingabe Ihres Kennworts aufgefordert wurden. cat /var/log/auth.log | grep polkitdIch gebe Ihnen eine ziemlich kurze Liste von ihnen
Scott
8

Sie können ein .pkla erstellen, entweder ein All-in-One oder ein Paar basierend auf Aktionsgruppen, was eigentlich keine Rolle spielt.

Zum Nachschlagen in / usr / share / polkit-1 / actions öffnen Sie interessierte in einem Texteditor, um Aktions-IDs zu erhalten.

Soweit ich eine .pkla oder 2 finde, ist der beste Ort, um sie zu platzieren, hier, es wird vor Updates geschützt

/var/lib/polkit-1/localauthority/50-local.d

Zum Beispiel ist hier meine wichtigste Datei mit dem Namen package-manager.pkla, obwohl sie etwas weiter reicht als nur die Richtlinien zur Paketverwaltung

[Install package file]
Identity=unix-group:admin
Action=org.debian.apt.install-file;org.debian.apt.update-cache;org.debian.apt.install-or-remove-packages;org.debian.apt.upgrade-packages
ResultActive=yes

[Install package synaptic]
Identity=unix-group:admin
Action=com.ubuntu.pkexec.synaptic
ResultActive=yes

[Change add repo]
Identity=unix-group:admin
Action=com.ubuntu.softwareproperties.applychanges;org.debian.apt.change-repository
ResultActive=yes

[usbcreator format]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.format
ResultActive=yes

[Install bootloader]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.bootloader
ResultActive=yes

[Add users]
Identity=unix-group:admin
Action=org.freedesktop.accounts.user-administration
ResultActive=yes

Beachten Sie, dass ab 12.04 die für den Benutzer "admin" verwendete Gruppe in sudo geändert werden sollte, d. H.

Identity=unix-group:sudo

Beachten Sie auch, dass Aktionen pro Abschnitt aneinander gereiht werden können, keine Leerzeichen, verwenden Sie ein; zwischen id's

doug
quelle
Anscheinend nehmen Sie die Einstellungen für jedes Programm einzeln vor. Das scheint ziemlich langweilig zu sein, besonders wenn ich später ein anderes Programm installiere, das PolicyKit verwenden möchte. Ich suche nach einer Möglichkeit, eine globale Konfigurationsänderung vorzunehmen, die sich auf alles auswirkt.
Scott Severance
1
Habe noch nie einen Weg gesehen, 'global' zu beeinflussen, glaube nicht, dass Policykit so funktioniert. Es gibt einen Policy-Satz pro Aktion, id
doug
0

Wenn Sie wissen, was Sie tun, können Sie das Policy Kit vollständig deaktivieren.

sudo apt-get remove libpolkit-agent-1-0

viksit
quelle
1
Es beseitigt auch viele wichtige Pakete, wie network-manager, gnome-control-centerund vieles mehr. Gibt es einen feinkörnigeren Weg?
Suncatcher