[erledigt] su oder sudo - Wie herausfinden, welches geht?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von scientific » 27.07.2017 14:36:49

Dann füge mal den User 1002 zur Gruppe sudo und probiers mit pekexec nochmal...

dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von MartinV » 27.07.2017 14:52:39

scientific hat geschrieben: ↑ zum Beitrag ↑
27.07.2017 14:36:49
Dann füge mal den User 1002 zur Gruppe sudo und probiers mit pekexec nochmal...
Jetzt fragt er User 1002 nach dem Paßwort von 1002!

Dann habe ich User 1000 aus Gruppe sudo herausgeworfen. Jetzt wird User 1000 nach dem Paßwort von User 1002 gefragt.

Schmeiße ich beide aus Gruppe sudo heraus, werde ich nach dem Paßwort von root gefragt, wie TomL es beschrieben hat.

In /etc/sudoers ist nur root eingetragen.

Anscheinend hat pkexec eine Paßwort-Prioritätenliste, in der Mitglieder der Gruppe sudo vor root bevorzugt werden. /etc/sudoers wird dabei ignoriert. Das hebelt den Sinn von sudo (für einzeln privilegierte Kommandos) restlos aus und ist in meinen Augen eine GROSSE Sicherheitslücke. Alle Mitglieder der Gruppe sudo haben uneingeschränkten root-Zugriff mittels pkexec, völlig egal, was in /etc/sudoers steht. 8O :evil: !!eins11!!!!
Zuletzt geändert von MartinV am 27.07.2017 15:23:47, insgesamt 2-mal geändert.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

TomL

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von TomL » 27.07.2017 15:02:14

MartinV hat geschrieben: ↑ zum Beitrag ↑
27.07.2017 14:52:39
Alle Mitglieder der Gruppe sudo haben uneingeschränlten root-Zugriff mittels pkexec, völlig egal, was in /etc/sudoers steht.
Genau das habe ich schon vor 1 Jahr oder so gesagt... ich halte "sudo" für einen exploit. Und genau darauf hab ich schon oft hingewiesen... kein Schwein kennt die Wechselwirkungen mit dem Polkit. "sudo" zu deinstallieren ist heute immer das erste, was ich bei einem frischen System tue. Vor allem, weil man den Befehl "sudo" mit nem ganz einfachen Bash-Alias ersetzen kann, was für manuelle einzelaktionen im Terminal allemal ausreicht:

Code: Alles auswählen

alias sudo="pkexec $@"
Mit dem Default-Password-Keep besteht die nächste große Lücke.... das ist das Einfallstor für so Kisten wie den Bundestrojaner. Egal, jeder wie er mag.....

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von MartinV » 27.07.2017 15:10:30

Toml hat geschrieben:"sudo" zu deinstallieren ist heute immer das erste, was ich bei einem frischen System tue.
Das reicht nicht!
Ich habe sudo jetzt deinstalliert, User 1000 der Gruppe sudo hinzugefügt, und habe als User 1000 mit Paßwort von User 1000 unbegrenzten root-Zugriff mit pkexec.
Gruppenmitgliedschaft in Gruppe sudo reicht, um mit pkexec root zu werden. Völlig unabhängig vom Paket Debiansudo, und völlig egal, was in /etc/sudoers steht.
Zuletzt geändert von MartinV am 27.07.2017 15:26:08, insgesamt 1-mal geändert.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von Meillo » 27.07.2017 15:17:43

TomL hat geschrieben: ↑ zum Beitrag ↑
27.07.2017 15:02:14
MartinV hat geschrieben: ↑ zum Beitrag ↑
27.07.2017 14:52:39
Alle Mitglieder der Gruppe sudo haben uneingeschränlten root-Zugriff mittels pkexec, völlig egal, was in /etc/sudoers steht.
Genau das habe ich schon vor 1 Jahr oder so gesagt... ich halte "sudo" für einen exploit. Und genau darauf hab ich schon oft hingewiesen... kein Schwein kennt die Wechselwirkungen mit dem Polkit. "sudo" zu deinstallieren ist heute immer das erste, was ich bei einem frischen System tue.
Das Problem, das du hier beschreibst, ist doch aber die komplexe Wechselwirkung zwischen Polkit und sudo. Dagegen kann man grundsaetzlich auf zwei Arten angehen: Entweder man entfernt die eine oder die andere Komponente. Du setzt voraus, dass es (natuerlich) besser ist die eine der beiden Komponenten zu entfernen. Verstehe ich das richtig?

Da Polkit (2007) nach sudo (1980) entstanden ist, tendiere ich dazu Polkit fuer die Probleme verantwortlich zu machen. Oder was uebersehe ich?
Use ed once in a while!

TomL

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von TomL » 27.07.2017 15:36:35

Meillo hat geschrieben: ↑ zum Beitrag ↑
27.07.2017 15:17:43
Da Polkit (2007) nach sudo (1980) entstanden ist, tendiere ich dazu Polkit fuer die Probleme verantwortlich zu machen.
Weil sudo um 1980 entstanden ist, also zu einer Zeit, als kein Mensch eine Vorstellung von GUI-Enduser/Multiuser-Desktop-PCs hatte und dementsprechend eine dieser Zeit angemessene RZ-Zielsetzung hatte, und weil sudo wegen dieser prähistorischen Zielsetzung eine Ausgestaltung hat, die faktisch völlig untauglich und absolut unzureichend für moderne grafische Betriebssysteme ist, tendiere ich dazu, sudo in den Orkus zu verbannen.

Wie unzureichend "sudo" für moderne grafische OS ist, beweist die Existenz (und wohl auch Notwendigkeit) solcher anzutackernder Prothesen wie "ksudo, kdesudo, kdesu, gksudo, gksu". Das Polkit braucht das alles nicht. Es kommt sowohl mit GUI- als auch Textumgebungen klar. Und das Polkit ist im Gegensatz zu "sudo" nicht per Default ein 15-Min-Password-Keep-Exploit, womit sich wirklich jede Anwendung im Vorbeimarsch Root-Rechte verschaffen kann.

j.m.2.c.

PS
Ich klink mich hier aus der sudo-Diskussion aus... das Thema ist wahrlich schon genug belabert worden. Und neues gibts eh nix zu sagen. Jeder soll tun, was er mag...... ich mag halt kein sudo..... damit isses genug für mich.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von Meillo » 27.07.2017 16:04:10

Danke fuer die Darstellung deiner Sichtweise. Jetzt habe ich sie besser verstanden.
Use ed once in a while!

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von MartinV » 27.07.2017 17:59:53

Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von scientific » 27.07.2017 18:40:09

Die Antwort scheint sehr eindeutig.

Mitglieder der Gruppe sudo sollen root werden können.

Wenn du beim Installieren den root-Account aktivierst, sollte UID 1000 nicht der Gruppe sudo angehören.

Gibt es keinen root-Account, muss ja irgendein Account rootrechte bekommen können. Wie willst du sonst das System administrieren?
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

TomL

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von TomL » 27.07.2017 19:43:45

scientific hat geschrieben: ↑ zum Beitrag ↑
27.07.2017 18:40:09
Die Antwort scheint sehr eindeutig.
Mitglieder der Gruppe sudo sollen root werden können.
Wenn du beim Installieren den root-Account aktivierst, sollte UID 1000 nicht der Gruppe sudo angehören.
Gibt es keinen root-Account, muss ja irgendein Account rootrechte bekommen können. Wie willst du sonst das System administrieren?
Vielleicht hat er ja auch beides gemacht... root ein Password vergeben und irgendwelche User gleichzeitig in der Gruppe sudo eingetragen... gemäß dem Motto "doppelt hält besser". Keine Ahnung wie sich das verhält.... der Debian-Installer macht ja eigentlich nur eins von beiden beim Install. Ich denke, mit root-Password sollte die Gruppe "sudo" gar nicht bestückt werden, oder dem traditionellen Gedanken folgend nur für explizite Anwendungen in der sudoers berechtigt werden. Aber ob's jetzt hier und bei Default-Einstellungen zu Problemen kommen kann.... keine Ahnung..?... ich empfinde das aber auf mich bezogen jedenfall als Kontrollverlust... weil ich die Wechselwirkungen nicht mehr im Griff habe.

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von MartinV » 27.07.2017 21:20:20

scientific hat geschrieben: ↑ zum Beitrag ↑
27.07.2017 18:40:09
Die Antwort scheint sehr eindeutig. Mitglieder der Gruppe sudo sollen root werden können.
Womit wir einen Mischmasch aus sudo und policykit haben. :-(
Die entsprechende Einstellung findet sich hier:

Code: Alles auswählen

$ cat /etc/polkit-1/localauthority.conf.d/51-debian-sudo.conf 
[Configuration]
AdminIdentities=unix-group:sudo
Er schreibt als Begründung:
Michael hat geschrieben:> Command sudo and group sudo were designed to allow single privileged commands for unprivileged users.

This is not correct. The default sudo config ships

%sudo ALL=(ALL:ALL) ALL

I.e., a user in group sudo can run every command with root privileges.
Aber wenn ich das auskommentiere, werde ich mit pkexec und Gruppe sudo immer noch root für beliebige Befehle:

Code: Alles auswählen

# %sudo	ALL=(ALL:ALL) ALL
Wenn du beim Installieren den root-Account aktivierst, sollte UID 1000 nicht der Gruppe sudo angehören.
Ich habe sudo nachträglich installiert und User 1000 hinzugefügt und /etc/sudoers editiert, um nur einen einzigen Befehl zu erlauben. (Ich war brav, und habe sudo so verwendet, wie es 1980 gedacht war!)
TomL hat geschrieben:Ich denke, mit root-Password sollte die Gruppe "sudo" gar nicht bestückt werden, oder dem traditionellen Gedanken folgend nur für explizite Anwendungen in der sudoers berechtigt werden. Aber ob's jetzt hier und bei Default-Einstellungen zu Problemen kommen kann.... keine Ahnung..?... ich empfinde das aber auf mich bezogen jedenfall als Kontrollverlust... weil ich die Wechselwirkungen nicht mehr im Griff habe.
Mir geht es gerade ähnlich - durch die Vermischung der Gruppe sudo mit policykit (als debian-default!) habe ich unbeabsichtigt User 1000 volle root-Rechte mit pkexec gegeben, obwohl ich nur einen einzelnen Befehl mit sudo ermöglichen wollte. Für mich heißt die Konsequenz, daß ich jetzt auch sudo in jeder Form meide - aber eigentlich nur, weil die Konfiguration von pkexec unsauber ist, was die Gruppe sudo angeht.

Das mindeste sollte eine Warnung wegen pkexec in der /etc/sudoers sein; es ist nicht mehr möglich, mit sudo einzelne Befehle zu erlauben, es geht nur alles oder nichts. Sauber wäre es gewesen, eine neue Gruppe "pkexec" anzulegen, anstatt die Gruppe "sudo" zu mißbrauchen.

Gibt es irgendwo einen schönen Beleg, daß sudo für einzelne Befehle gedacht war, den ich im Bugreport zitieren kann? Die Manpages von sudo und sudoers sind lang, einen prägnanten Satz, der das zusammenfaßt, habe ich nicht gefunden.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

brummer
Beiträge: 181
Registriert: 19.02.2007 19:21:23

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von brummer » 27.07.2017 21:26:26

Ich kann hier (debian/sid) dies probleme mit pkexec oder sudo nicht nachvollziehen.
Beides funktioniert hier wie es soll.
In pkexec muss jeder Befehl der auszuführen ist, in einer rules Datei stehen. Inclusive Pfad zur exe. Ob eine Passwort abfrage nötig ist oder nicht, kann man in den rules für jeden einzelnen Befehl festlegen.
Alle anderen Befehle werden verweigert.
pkexec rules müssen als root angelegt werden. Also, wenn, z.b. /usr/bin/sudo in pkexec eingetragen ist, ist der system admin sofort zu entlassen, denn das hebelt pkexec natürlich aus.
Mit sudo kann ich mich kurzfristig als user mit root rechten ausstatten (nach Passwort abfrage) und Befehle ausführen die root rechte verlangen.
Ganz gewiss kann ich nicht mit meinem user Passwort über pkexec irgendwelche root befehle ausführen.
Wäre das der Fall würde ich meine Distribution, wegen Vertrauensverlust, sofort wechseln, dann das setzt unseriöse default polkit rules voraus.

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von MartinV » 27.07.2017 21:38:19

brummer hat geschrieben:Ganz gewiss kann ich nicht mit meinem user Passwort über pkexec irgendwelche root befehle ausführen.
Das ist der Punkt, auf dem ich herumreite. Als Mitglied der Gruppe sudo kann ich mit pkexec und User-Paßwort root werden. Der Inhalt von /etc/sudoers spielt dabei keine Rolle.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

brummer
Beiträge: 181
Registriert: 19.02.2007 19:21:23

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von brummer » 27.07.2017 21:47:33

MartinV hat geschrieben: ↑ zum Beitrag ↑
27.07.2017 21:38:19
brummer hat geschrieben:Ganz gewiss kann ich nicht mit meinem user Passwort über pkexec irgendwelche root befehle ausführen.
Das ist der Punkt, auf dem ich herumreite. Als Mitglied der Gruppe sudo kann ich mit pkexec und User-Paßwort root werden. Der Inhalt von /etc/sudoers spielt dabei keine Rolle.
Ganz gewiss nicht, ohne als root entsprechende Dateien zu editieren. :wink:

TomL

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von TomL » 27.07.2017 22:24:57

MartinV hat geschrieben: ↑ zum Beitrag ↑
27.07.2017 21:38:19
Das ist der Punkt, auf dem ich herumreite. Als Mitglied der Gruppe sudo kann ich mit pkexec und User-Paßwort root werden. Der Inhalt von /etc/sudoers spielt dabei keine Rolle.
Ich bin unsicher, ob Du schon mal gesagt hast, um welches OS es eigentlich geht. Mich wundert das alles, weil Debian das eigentlich gut und imho auch konfliktfrei handhabt. Gemäß der Default-Einstellungen beim Installer ist "sudo" erst mal gar nicht scharf geschaltet, dafür hat root jedoch ein Password. Debian ist bei einer Default-Installation komplett so ausgestaltet, dass es für nichts die Verwendung "sudo" vorsieht oder gar verlangt. Wer es haben will, muss es selber "scharf" schalten. Das, was Du beschreibst, klingt viel mehr nach Ubuntu oder Mint... und gerade die haben das imho total verhunzt.

Also, um welches OS gehts hier eigentlich? Isses wirklich Debian? Mich störts nicht, wenns ein anderes ist.... aber neugierig bin ich schon.

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von MartinV » 27.07.2017 22:32:30

Es ist debian stretch.
Installiert habe ich es mit root-Paßwort, ohne sudo.

Debiansudo habe ich nachträglich installiert und /etc/sudoers editiert.
policykit und seine Konfiguration habe ich nicht angetastet.

Ich lade gerade eine Live-CD herunter, um die Situation mit einem jungfräulichen System noch einmal nachzuprüfen.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Benutzeravatar
Dogge
Beiträge: 1895
Registriert: 13.09.2010 11:07:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von Dogge » 27.07.2017 22:36:47

Ich kann es nachvollziehen (debian stretch buster):

Code: Alles auswählen

martin@schlepptop  ~ sudo whoami
[sudo] Passwort für martin: 
Leider darf der Benutzer martin »/usr/bin/whoami« als root auf schlepptop nicht ausführen.

Code: Alles auswählen

martin@schlepptop  ~  pkexec whoami
root
Ich habe nämlich auch ein root Passwort vergeben, da ich ja Systemeinstellungen und Paketinstallationen als root mache. Um »einen einzigen Befehl« als User mit root Rechten ausführen zu können habe ich sudo installiert und »diesen einen« Befehl erlaubt. Ich finde es krass, dass ich mir damit unwissentlich mein System wie ein Ubuntu eingerichtet habe, nur mit dem Unterschied, dass man bei Debian pkexec statt sudo voranstellen muss. Da hätte ich in der /etc/sudoers ja auch gleich alles erlauben können. :facepalm: :evil:

Edit: Policykit lässt sich auch nicht so einfach deinstallieren, wenn man gnome-control-center, network-manager und gdm3 behalten will:

Code: Alles auswählen

Die folgenden Pakete werden ENTFERNT:
  colord* gdm3* gnome-color-manager* gnome-control-center* gnome-system-log* network-manager* network-manager-gnome*
  policykit-1* 
Sehr schön. :evil:
D.h. ich kann jetzt nur sudo deinstallieren und die Gruppe sudo löschen, obwohl sudo tut was es soll und pkexec Mist baut.

Edit2: Vor lauter Verärgerung hab ich ganz vercheckt, dass testing jetzt ja buster heißt.

LastEdit: Naja, ich finde das Verhalten immer noch doof, aber mit den Beiden Befehlen bekommt man es gefixt:

Code: Alles auswählen

# gpasswd -d USER sudo
# groupdel sudo
Debian Testing + Gnome | Linux-Anfänger seit 04/2003
http://files.mdosch.de/2014-07/0xE13D657D.asc

guennid

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von guennid » 27.07.2017 23:20:15

Und was war das für'n bohai um visudo!
Es gibt noch ein weiteres Alt-Programm, um gezielt root-Rechte zu übertragen, das ich seit woody gelegentlich nutze: Debiansuper

Was haltet ihr davon?

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von MartinV » 27.07.2017 23:37:59

Dogge hat geschrieben: ↑ zum Beitrag ↑
27.07.2017 22:36:47
Ich kann es nachvollziehen (debian stretch buster):
Danke für's Überprüfen und Bestätigen. :-)
Dogge hat geschrieben:Sehr schön. :evil:
D.h. ich kann jetzt nur sudo deinstallieren und die Gruppe sudo löschen, obwohl sudo tut was es soll und pkexec Mist baut
[...]
mit den Beiden Befehlen bekommt man es gefixt:

Code: Alles auswählen

# gpasswd -d USER sudo
# groupdel sudo
Du kanst auch die policykit-Konfiguration für Gruppe sudo löschen:

Code: Alles auswählen

/etc/polkit-1/localauthority.conf.d/51-debian-sudo.conf
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von MartinV » 28.07.2017 00:50:54

Das Rätsel um pkexec und sudo löst sich auf! Aus dem Bugreport:
Simon hat geschrieben: > Granting root-like access via group sudo is intended and not a security
> hole and the policykit policy is in line with the sudo policy here.

This is also as documented in base-passwd, which is the central
authority on what the predefined groups in Debian mean:

sudo

Members of this group may run any command as any user when using sudo or
pkexec (from the policykit-1 package, independently of whether the sudo
package is installed).

—/usr/share/doc/base-passwd/users-and-groups.txt.gz

If you don't want a user to be root-equivalent, don't add them to the
sudo group. Users who are meant to be able to run certain specific
commands (but not others) via sudo should not be in that group;
membership of that group is not required to use sudo.
* Mitglieder der Gruppe sudo sind Administratoren und dürfen mit pkexec und User-Paßwort beliebige root-Befehle ausführen
* Um einzelne Befehle für User per sudo in /etc/sudoers zu erlauben, ist Mitgliedschaft des Users in der Gruppe sudo nicht nötig.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von scientific » 28.07.2017 06:49:00

Das schrieb ich ja schon vorhin. Mitglieder der Gruppe sudo sind admins und dürfen alles.
Das sagt ja auch

Code: Alles auswählen

 %sudo	ALL=(ALL:ALL) ALL

Und pkexec bildet dieses Verhalten ebenfalls ab.

Die Frage ist, wird UID 1000 bei Vergabe eines root-Passworts im Installer der Gruppe sudo hinzugefügt oder nicht? Wenn ja, sind wir bei Windows, wenn nein, passt alles.

Nach einer vollständigen Installation MUSS ja irgend ein User Adminrechte haben. Sonst steh ich schön blöd da, will ich etwas am System verändern.
Klar, mit livesystem und chroot kann ich mir schon helfen... Aber das ist wirklich nur ein Würgaround.

Dieser Admin-User (root mit Account, oder UID 1000 in Gruppe sudo) kann dann anderen Usern einzelne Befehle durch explizites Eintragen in /etc/sudoers erlauben, oder er legt den Usern pkexec-Rules an.
In pkexec kann ich sogar unterscheiden, was der User darf, wenn er lokal an der Maschine eingeloggt ist, oder per ssh.

Ich versteh die ganze Aufregung hier nicht. Vermute einmal sie kommt daher, das sich manche mit der Konfiguration von /etc/sudoers noch nicht ausreichen beschäftigt haben... Und die Verwendung von sudo mit der Gruppenmitgliedschaft in sudo gleichsetzen...

Ich hab unlängst bei einer Installation dem User mit UID 1000 (ohne ihn der Gruppe sudo hinzuzufügen) mit pkexec erlaubt, in gnome-software neue Software zu installieren, aber keine zu löschen.
Damit kann dieser User über die Gnome-Suche Programme finden, die nicht installiert sind, und sich diese mit dem eigenen Passwort installieren, aber durch die nicht Erlaubte Deinstallation kann er sich den Boden unter den Füßen nicht wegziehen und das halbe System wegreißen.

Hab einen zweiten User als Admin angelegt, der ist in der Gruppe sudo. Und in GDM ausgeblendet mit dieser Methode:
Go to /var/lib/AccountsService/users If the user has already logged in, then there should be a file with their user name. If not, then copy a different one to a file with their user name. Edit the file and change the SystemAccount= line to true. Restart gdm and that user won't show up in the list.


Das wäre zu überlegen, ob nicht gleich auch der Installer erledigen sollte, wenn kein Rootpasswort vergeben wird, und UID 1000 in die Gruppe sudo kommt...
Damit is klar, dass ein weiterer unprivilegierter User angelegt werden sollte.

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von Meillo » 28.07.2017 07:11:43

@scientific: Guter Post.

scientific hat geschrieben: ↑ zum Beitrag ↑
28.07.2017 06:49:00
Das wäre zu überlegen, ob nicht gleich auch der Installer erledigen sollte, wenn kein Rootpasswort vergeben wird, und UID 1000 in die Gruppe sudo kommt...
Damit is klar, dass ein weiterer unprivilegierter User angelegt werden sollte.
Wenn man nun aber bei einem passwortlosen root einen User1 in Gruppe sudo anlegt und einen User2 ohne sudo-Zugehoerigkeit, dann kann man stattdessen auch gleich root ein Passwort geben und dem ersten User keine sudo-Zugehoerigkeit. Es laeuft auf das gleiche raus.

Die Gruppe sudo statt dem root-Account macht fuer mich dann Sinn wenn es mehrere Admins sind (es geht ja auch um die *Gruppe* sudo) und man verhindern will, dass ein Passwort geshared werden muss ... wobei sich dieser Fall durch ssh-Keys grossteils eruebrigt.
Use ed once in a while!

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von scientific » 28.07.2017 10:15:17

Ah ja. Das wars!
Stimmt. Mit einem Admin nimmt man besser einen echten root. Mit mehreren Admins dann sudo.

Mit sudo kann man ja aber auch den Zugriff auf andere Hosts auch regeln, und welche Rechte die User/Groups dort haben. Aber so weit bin ich noch nicht vorgedrungen, das zu ergründen.

Sudo hat ggü su auch den Vorteil, dass fehlgeschlagene Loginversuche gepetzt (gemailt/gelogt) werden. Bei su muss man extra /var/log/auth oder das Journal parsen.

Der Vorteil eines Admins via sudo ist ja auch, dass der gefahrlos eine graphische Sitzung starten kann. Abgesehen von der Gefahr, dass sein Passwort abgegriffen wird, und so jemand seine Sitzung und gleich den ganzen Rechner übernehmen kann.

Und man kann durchaus sudo und pkexec mischen. Denn einen einzelnen Befehl in sudo erlauben ist einfacher und verständlicher als eine pkla zu schreiben. Sich aber einmal in polkit eingearbeitet zu haben bringt wohl mehr Flexibilität und feinere Granularität als sudo.
Ich sehs so ähnlich wie mit systemd. Hat man das einmal verstanden, kann man damit super lässige Abhängigkeiten und Automatismen bauen. Was mit Shellskripten in einer Zeile erledigt wird, brauch mit systemd ein, zwei units mit mehreren Zeilen.
Benötigt man aber Abhängigkeiten, vorhandensein von Files/Directorys, Laptop am Stromkabel oder Akku artet mit Shellskripten schnell zu Megaskripten aus, die noch Funktionen sourcen, die wiederum Funktionen sourcen (man analysiere mal acpid in voller Tiefe...) bleibt aber mit systemd ein, zwei units mit ein paar Zeilen.

So kann ich mit pkexec ganz einfach den Zugriff auf eine einzige Funktion von lokal und remote verschieden Regeln. Mit sudo wird das schon schwierig... Wenn es überhaupt geht.

Gruppenweise Rechtevergabe geht in pkexec genauso einfach wie in sudo.

Btw... Ich hab grad beschlossen, msudo von meinen Maschinen zu schmeißen, und mich in pkexec einzuarbeiten. Aber dennoch halte ich richtig eingesetztes sudo nicht für ein Risiko.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

TomL

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von TomL » 28.07.2017 10:44:41

scientific hat geschrieben: ↑ zum Beitrag ↑
28.07.2017 10:15:17
Denn einen einzelnen Befehl in sudo erlauben ist einfacher und verständlicher als eine pkla zu schreiben.
Und das ist der beliebte Irrtum, wo schlichtweg die Realität (vielleicht auch unbewusst) ignoriert wird. Mit dem per default konfiguriertem 15-minütigen Passwdkeep im "sudo"-Kommando öffnest Du eine Sicherheitslücke, mit der sich wirklich jedes Programm, jedes Plugin, jedes Addon im Vorbeigehen root-Rechte erschleichen kann und damit die vollständige Kontrolle über den Rechner erlangt. Das wissen die wenigsten und die wenigsten schalten das ab. Das wäre beispielsweise DIE offene Tür für den Bundestrojaner... es braucht nur ein ge'hype'tes Addon über Computerbild oder Chip.de o.ä. ... oder vielleicht so interessante Programme wie Calibre, die wohl oft nicht aus dem Repo kommen..... und Peng, der Rechner ist gekapert. Das spannende dabei ist, dass wohl niemand auf den Komfort des Password-Keeps verzichten will, denn dann müsste man ja bei mehreren sudo-Kommandos jedesmal das Passwd eingeben. Aber genau das ist der Knackpunkt.... wer nur einmal das Pwd eingeben will, der nimmt einfach "su"... Problem gelöst.

Fakt ist, es gibt außerhalb der Situation, dass mehrere Admins vollständig berechtigt werden sollen, keinen sinnvollen Einsatz von "sudo" auf einem Desktop-PC, am allerwenigsten, wenn es um diese einzelnen Single-Statements geht. Das polkit ist aber so flexibel, dass man sowohl explizite Berechtigungen (analog sudoers) aussprechen kann und darüber hinaus "sudo" auch für Single-Statements ganz einfach und nebenbei emulieren kann. Und zwar schon auf einfachste Weise mit einem Bash-Alias:

Code: Alles auswählen

alias sudo="pkexec $@"
was auf Anhieb schon fast alle Singles-sudo-Statements erfolgreich abhandelt. Und wenn dann auch noch grafische sudo-Kommandos abgesetzt werden sollen, dann ändert man den Alias auf

Code: Alles auswählen

alias sudo="pkexec /usr/local/bin/sudo"
und verwendet einen Wrapper

Code: Alles auswählen

nano /usr/local/bin/sudo

Code: Alles auswählen

#!/bin/bash

if [[ $EUID -eq 0 ]]; then
    PATH=/usr/local/sbin:/usr/local/bin:$PATH
    export PATH
    [[ ! -z "$@" ]] && $@ && exit $?
fi

exit 1
und begleitend dazu eine einfache Policy, die darüber informiert, dass es um grafische Apps geht:

Code: Alles auswählen

nano /usr/share/polkit-1/actions/sudo.policy

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">

<policyconfig>
  <action id="LocalExtPerms.sudo">
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/local/bin/sudo</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>
</policyconfig>
Diese Policy verlangt generell das root-Passwd, eine PKLA ist nicht erforderlich. Die Polkit-Local-Autorisation braucht man erst, wenn man Abweichungen einstellen will, um z.B. User oder Gruppen mit User-PWD zu berechtigen, weil diese User das root-PWD nicht kennen. Und wer sich wider besseres Wissen auch hier für den PDWkeep entscheidet, ändert einfach "auth_admin" auf "auth_admin_keep". Dann ist sudo komplett abgebildet, einschließlich der Risiken.

Damit ist der ganz sudo-Quatsch völlig überflüssig und es funktioniert trotzdem alles wie gewohnt. Und man kann nun einfach mit sudo Terminal-Anwendungen starten und gleichermaßen auch grafische (!) Programme, ohne diese Prothesen gksudo und kdesudo und wie sie alle heissen. Diese ganze Diskussion über sudo für Desktop-Systeme ist so dermaßen absurd, dass ich das manchmal kaum noch verstehen kann.... aber über systemd wird ja genau so diskutiert...

Benutzeravatar
Dogge
Beiträge: 1895
Registriert: 13.09.2010 11:07:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [gelöst] su oder sudo - Wie herausfinden, welches geht?

Beitrag von Dogge » 28.07.2017 12:43:57

scientific hat geschrieben: ↑ zum Beitrag ↑
28.07.2017 06:49:00
Das schrieb ich ja schon vorhin. Mitglieder der Gruppe sudo sind admins und dürfen alles.
Das sagt ja auch

Code: Alles auswählen

 %sudo	ALL=(ALL:ALL) ALL

Und pkexec bildet dieses Verhalten ebenfalls ab.
Wenn man diese Zeile aber nicht in der sudoers hat, dann darf man mit sudo nur was explizit in der sudoers erlaubt wurde. Pkexec ignoriert das aber und erlaubt weiterhin alles (sofern der user in der Gruppe sudo ist)...
Ich finde es dämlich, das über die Gruppe sudo zu regeln, da diese halt suggeriert, dass man user die sudo nutzen sollen in die Gruppe fügen muss. Man hätte doch dafür ne Gruppe admin, pkexec o.ä. anlegen können. :roll:
Klar, das ist _irgendwo_ dokumentiert aber es ist halt eine sehr fehlerträchtiges, wenn nicht gar Fehlkonfigurationen provozierendes Setup.
Debian Testing + Gnome | Linux-Anfänger seit 04/2003
http://files.mdosch.de/2014-07/0xE13D657D.asc

Antworten