Come posso impedire a PolicyKit di chiedere una password?


24

Per anni, ho avuto il seguente nel mio sudoersfile:

scott   ALL=NOPASSWD: ALL

Per coloro che non lo sanno, questo impedisce sudoe agli amici ( gksudo, ecc.) Di chiedere una password. Tuttavia, nel corso degli anni, sempre più cose che una volta utilizzate sudosono state passate all'utilizzo di PolicyKit.

Sto cercando una configurazione equivalente per PolicyKit, in modo che non mi chieda mai la mia password.

Per coloro a cui non piace la mia richiesta, lasciatemi dire questo: comprendo i motivi della configurazione predefinita e sono validi. Comprendo anche i rischi inerenti alla configurazione che voglio fare. Tuttavia, è il modo in cui voglio configurare il mio sistema. Coloro che non comprendono appieno quanto sopra non dovrebbero tentare ciò che sto tentando.

Risposte:


15

È possibile ingannare PolicyKit e sopprimere TUTTE le richieste di password sostituendo l'azione con un carattere jolly.

DISCLAIMER: Quanto segue sopprimerà TUTTE le richieste di password a livello globale per tutti coloro che appartengono al gruppo admin, ad eccezione della schermata di accesso. È ESTREMAMENTE pericoloso e non dovrebbe MAI essere implementato perché è probabile che finirai per rompere il tuo sistema !!

Non dire che non sei stato avvisato!

NOTA: se si esegue 12.04 o successivo, sostituire "admin" con "sudo"!

Sostituisci "nome utente" con il tuo vero nome utente:

usermod -aG admin username

Passa a root:

sudo -i

Crea una nuova politica:

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

Aggiungi quanto segue:

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

Salva ed esci. Quindi prova qualcosa che di solito richiede una password. :)

NOTA: non importa quale sia il tuo nome file .pkla. Puoi nominarlo come vuoi.

E infine, questa è l'UNICA politica di cui hai bisogno quando si tratta di sopprimere le richieste di password perché, di nuovo, lo fa a livello globale.


Questo funziona anche su Fedora quando si sostituisce il admingruppo wheel. Grazie!
Kenny Rasschaert,

3
Qualcuno potrebbe descrivere come esattamente questo "spezzerà" il sistema?
Mehrdad,

3
Sì grazie. Come si romperà il sistema? Non questo! Qualcosa di stupido che fai dopo questo romperà il sistema, ma non questo! Ciò ti consentirà di fare qualsiasi cosa sull'host senza password. Se fai qualcosa di stupido, romperai il sistema. Se devi inserire la password e fai qualcosa di stupido, romperai il sistema. Questo, di per sé, rende solo un po 'più facile fare qualcosa di stupido.
dangonfast,

1
@ jeckyll2hide Leggi la NOTA - spiega perché l'OP ha scelto [Install package file]. O non sei d'accordo con questo e la NOTA richiede una modifica simile o la modifica non è valida e deve essere ripristinata.
bcbc,

1
@prusswan è possibile utilizzare Identity=unix-user:scottsolo per consentire all'utente "scott" di eseguire l'azione. Inoltre, se si desidera consentire solo determinate azioni, è possibile grep /var/log/auth.log e polkitd visualizzerà il nome completo del polkit che si stava provando quando è stata richiesta la password. cat /var/log/auth.log | grep polkitdti darò un elenco abbastanza veloce di loro
Scott

8

Puoi creare un .pkla, tutto in uno o una coppia basato su gruppi di azione, non importa.

Per riferimento guarda in / usr / share / polkit-1 / actions, apri quelli interessati in un editor di testo per ottenere gli ID dell'azione.

Per quanto riguarda un .pkla o 2 trovo che il posto migliore per metterli sia qui, sarà protetto da eventuali aggiornamenti

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

Quindi, ad esempio, ecco il mio principale, chiamato package-manager.pkla, sebbene si estenda un po 'oltre la semplice politica di gestione dei pacchetti

[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

Si noti che a partire da 12.04 il gruppo utilizzato per l'utente "admin" dovrebbe essere modificato in sudo, ad es.

Identity=unix-group:sudo

Si noti inoltre che le azioni possono essere messe insieme per sezione, senza spazi, utilizzare a; tra id


Sembra che tu stia configurando le impostazioni per ciascun programma individualmente. Sembra piuttosto noioso, soprattutto se in seguito installo qualche altro programma che vuole usare PolicyKit. Sto cercando un modo per apportare una modifica alla configurazione globale che influisca su tutto.
Scott Severance,

1
Non ho mai visto alcun modo di influenzare "a livello globale", non credo che sia il modo in cui funziona il policykit, esiste una serie di politiche per ID azione
Doug

0

Un'opzione, se sai cosa stai facendo, è disabilitare completamente il kit di criteri.

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


1
Rimuove troppi pacchetti essenziali, come network-manager, gnome-control-centere molti altri. Esiste un modo più preciso?
Suncatcher,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.