Jak zapobiec pytaniu PolicyKit o hasło?

24

Od lat mam w swoim sudoerspliku:

scott   ALL=NOPASSWD: ALL

Dla tych, którzy nie wiedzą, uniemożliwia to sudoznajomym i ( gksudoitp.) Proszenie o hasło. Jednak z biegiem lat coraz więcej rzeczy, które kiedyś były używane sudo, zostało przełączonych na PolicyKit.

Szukam równoważnej konfiguracji PolicyKit, takiej, że nigdy nie poprosi mnie o hasło.

Dla tych, którzy nie lubią mojej prośby, pozwól mi powiedzieć: rozumiem powody domyślnej konfiguracji i są solidne. Rozumiem także ryzyko związane z konfiguracją, którą chcę wprowadzić. Niemniej jednak tak właśnie chcę skonfigurować system. Ci, którzy nie do końca rozumieją powyższe, nie powinni próbować tego, co próbuję.

Scott Severance
źródło

Odpowiedzi:

15

Możesz oszukać PolicyKit i ukryć WSZYSTKIE monity o hasło, zastępując akcję znakiem zastępczym.

ZRZECZENIE SIĘ: Poniższe spowoduje pominięcie WSZYSTKICH monitów o hasło globalnie dla wszystkich należących do grupy administracyjnej, z wyjątkiem ekranu logowania. Jest to wyjątkowo niebezpieczne i NIGDY nie powinno być wdrażane, ponieważ istnieje szansa, że ​​ZAKOŃCZISZ ZŁAMANIE SYSTEMU !!

Nie mów, że cię nie ostrzegano!

UWAGA: Jeśli korzystasz z wersji 12.04 lub nowszej, zamień „admin” na „sudo”!

Zamień „nazwa użytkownika” na swoją rzeczywistą nazwę użytkownika:

usermod -aG admin username

Przełącz na root:

sudo -i

Utwórz nową polisę:

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

Dodaj następujące:

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

Zapisz i wyjdź. Następnie spróbuj czegoś, co zwykle wymaga hasła. :)

UWAGA: Nie ma znaczenia, jak używasz nazwy pliku .pkla. Możesz nazwać to, co chcesz.

I na koniec, jest to JEDYNA polityka, której potrzebujesz, jeśli chodzi o pomijanie monitów o hasło, ponieważ znowu robi to globalnie.

użytkownik55572
źródło
Działa to również w Fedorze, gdy podstawisz admingrupę wheel. Dzięki!
Kenny Rasschaert
3
Czy ktoś mógłby opisać, jak dokładnie to „złamie” system?
Mehrdad
3
Tak proszę. Jak to zepsuje system? Nie to! Coś głupiego, co zrobisz po tym, spowoduje uszkodzenie systemu, ale nie to! Umożliwi to wykonanie dowolnej czynności na hoście bez hasła. Jeśli zrobisz coś głupiego, zepsujesz system. Jeśli musisz podać hasło i zrobić coś głupiego, zepsujesz system. To per se sprawia, że łatwiej jest zrobić coś głupiego.
dangonfast
1
@ jeckyll2hide Przeczytaj UWAGA - wyjaśnia, dlaczego OP wybrał [Install package file]. Albo się z tym nie zgadzasz, a UWAGA wymaga podobnej edycji, lub twoja edycja jest nieprawidłowa i powinna zostać wycofana.
bcbc,
1
@prusswan możesz użyć, Identity=unix-user:scottaby zezwolić tylko użytkownikowi „scott” na wykonanie akcji. Ponadto, jeśli chcesz po prostu zezwolić na określone działania, możesz grep /var/log/auth.log, a polkitd wyświetli pełną nazwę zestawu polkit, którego próbujesz użyć, gdy zostaniesz poproszony o podanie hasła. cat /var/log/auth.log | grep polkitdda ci dość szybką ich listę
Scott
8

Możesz stworzyć .pkla, albo wszystko w jednym, albo parę w oparciu o grupy akcji, to nie ma znaczenia.

W celach informacyjnych zajrzyj do / usr / share / polkit-1 / actions, otwórz zainteresowanych w edytorze tekstu, aby uzyskać identyfikatory akcji.

Jeśli chodzi o plik .pkla lub 2, znajduję najlepsze miejsce do umieszczenia go tutaj, będzie chroniony przed wszelkimi aktualizacjami

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

Na przykład tutaj jest moja główna, o nazwie package-manager.pkla, choć rozszerza ona nieco więcej niż tylko zasady zarządzania pakietami

[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

Zauważ, że od 12.04 grupa używana dla użytkownika „admin” powinna zostać zmieniona na sudo, tj.

Identity=unix-group:sudo

Zauważ też, że akcje można łączyć razem dla każdej sekcji, bez spacji, użyj a; pomiędzy identyfikatorami

doug
źródło
Wygląda na to, że konfigurujesz ustawienia dla każdego programu osobno. Wydaje się to dość nużące, zwłaszcza jeśli później zainstaluję inny program, który chce korzystać z PolicyKit. Szukam sposobu na zmianę globalnej konfiguracji, która wpłynie na wszystko.
Scott Severance
1
Nigdy nie widziałem jakikolwiek sposób wpłynąć „globalnie”, nie wierzę, że to prace sposób PolicyKit istnieje zestaw polityka za id działania
Doug
0

Jedną z opcji, jeśli wiesz, co robisz, jest całkowite wyłączenie zestawu zasad.

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

viksit
źródło
1
Usuwa on zbyt wiele istotnych pakietów, takich jak network-manager, gnome-control-centeri wiele innych. Czy jest jakiś bardziej szczegółowy sposób?
Suncatcher