gast-user mit eingeschränkten Rechten

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
geoliver2104
Beiträge: 111
Registriert: 03.01.2020 13:28:57

gast-user mit eingeschränkten Rechten

Beitrag von geoliver2104 » 28.03.2020 11:01:57

Hallo,
ich möchte mir einen gast bzw. guest User einrichten.
dieser soll etwas eingeschränkte Rechte haben.
als ersten Schritt hab ich diesen User nicht in die sudo-Gruppe eingetragen.
möchte aber auch verhindern, dass dieser User das System rebooten kann.
dzt. ist das problemlos möglich z.b. mit:

Code: Alles auswählen

systemctl reboot -i
gibt es da eine Lösung ?

willy4711

Re: gast-user mit eingeschränkten Rechten

Beitrag von willy4711 » 28.03.2020 12:05:14

Das regelt heutzutage das Policy Kit. An sudo brauchst du dich da nicht vergreifen.

Zum Verständnis des Policy-Kit: https://www.freedesktop.org/software/po ... kit.8.html

Die Datei die das regelt Ist: /usr/share/polkit-1/actions/org.freedesktop.login1.policy
Nun könntest du dort alle relevanten "action"
von

Code: Alles auswählen

<allow_active>yes</allow_active>
auf

Code: Alles auswählen

<allow_active>auth_admin</allow_active>
setzen, was aber zur Folge hätte, das du dich auch nur noch mit dem Root-PW abmelden kannst.

Ich würde vorschlagen das du Folgendes versuchst Bitte alles als Root

Eine neue Gruppe anlegen

Code: Alles auswählen

addgroup guest
Neuen User anlegen (ich nenn ihn mal willy :mrgreen: )

Code: Alles auswählen

adduser willy
Den User der Gruppe guest zufügen

Code: Alles auswählen

usermod -aG guest willy
Jetz kreieren wir eine neue Regel am besten mit nano als root:

Code: Alles auswählen

nano /usr/share/polkit-1/rules.d/guest.rules
da schreibst du folgendes rein (kopieren)

Code: Alles auswählen

polkit.addRule(function(action, subject) {

    if (action.id == 'org.freedesktop.login1.power-off' &&
        subject.isInGroup('guest')
    ) {
        return polkit.Result.auth_admin;
    }
});

Dann sollte der User willi nur noch mit dem Root-PW den Rechner runter fahren können

Edit:
Oben wäre es nur für Poweroff. Reboot müsste man dann noch zufügen (ich hoffe, die Syntax stimmt noch)
Bitte mal Klammern zählen :mrgreen:

Code: Alles auswählen

polkit.addRule(function(action, subject) {
    if ((action.id == 'org.freedesktop.login1.power-of" ||
         action id="org.freedesktop.login1.reboot"") &&
        subject.user == "guest") {
        return polkit.Result.auth_admin;
    }
});
Zuletzt geändert von willy4711 am 29.03.2020 13:33:04, insgesamt 1-mal geändert.

geoliver2104
Beiträge: 111
Registriert: 03.01.2020 13:28:57

Re: gast-user mit eingeschränkten Rechten

Beitrag von geoliver2104 » 29.03.2020 12:08:33

Die Lösung sieht doch ein wenig komplizierter aus, als ich gehofft hatte.
Hatte bis jetzt nichts mit dem Policy Kit zu tun und werd mich da mal einlesen.
Möchte das zumindest ansatzweise verstehen.
D.h. es wird etwas dauern bis ich da eine Rückmeldung geben kann.
Jedenfalls vielen Dank für deine Antwort !

willy4711

Re: gast-user mit eingeschränkten Rechten

Beitrag von willy4711 » 29.03.2020 13:31:54

geoliver2104 hat geschrieben: ↑ zum Beitrag ↑
29.03.2020 12:08:33
Hatte bis jetzt nichts mit dem Policy Kit zu tun und werd mich da mal einlesen.
Möchte das zumindest ansatzweise verstehen.
Wenn man es verstanden hat, ist es relativ einfach:

Das zentrale Verzeichnis, in dem alles Wesentliche geregelt wird, ist /usr/share/polkit-1/
Dort gibt es zwei Verzeichnisse:
/usr/share/polkit-1/rules.d/
/usr/share/polkit-1/actions/

rules.d/ enthält "übergeordnete" oder zu den Regeln in actions abweichende Regeln.

Wenn du dir das Verzeichnis actions ansiehst, wirst du feststellen, dass dort für eine Menge Programme Regeln erstellt wurden.
Es ist die "Steuerzentrale" die festlegt, wer was in System machen darf. Mit sudo bringst du letztendlich dieses System
durcheinander, oder umgehst es. Ich purge sudo bei einer Neuinstallation als erstes und lebe wunderbar damit.

Innerhalb der Dateien gibt es immer eine oder mehrere Regeln beginnend mit <action id= und endend mit </action>
Darin wird festgelegt wie die Regel heißt (eindeutig) wer was machen darf, und welches Programm ausgeführt wird:
aus der /usr/share/polkit-1/actions/org.xfce.power.policy

Code: Alles auswählen

<action id="org.xfce.power.backlight-helper">
    
    <description>Modify the laptop display brightness</description>
    <message>Authentication is required to modify the laptop display brightness</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/sbin/xfpm-power-backlight-helper</annotate>
  </action>
Demnach darf nur der aktive User die Helligkeit verstellen. Wenn du jemand ärgern willst, änderst du auch noch die
dritte Zeile <allow_active>yes</allow_active> in <allow_active>no</allow_active>
Effekt: keiner kann mehr die Helligkeit verstellen. :mrgreen:

Nun zurück zu meinem Vorschlag:
die Action
action.id == 'org.freedesktop.login1.power-off

ist eindeutig. wenn du eine Volltextsuche nach dieser ID durchführts, wirst sie nur in der Datei
/usr/share/polkit-1/actions/org.freedesktop.login1.policy
vorfinden sie lautet:

Code: Alles auswählen

<action id="org.freedesktop.login1.power-off">
                <description gettext-domain="systemd">Power off the system</description>
                <message gettext-domain="systemd">Authentication is required for powering off the system.</message>
                <defaults>
                        <allow_any>auth_admin_keep</allow_any>
                        <allow_inactive>auth_admin_keep</allow_inactive>
                        <allow_active>yes</allow_active>
                </defaults>
                <annotate key="org.freedesktop.policykit.imply">org.freedesktop.login1.set-wall-message</annotate>
        </action>
D.h., das nur der aktiver User ohne PW- Eingabe das System herunterfahren darf. Alle anderen benötigen Root- Rechte.
Man könnte das hier natürlich auch ändern. Die Folge wäre dass jeder jemals eingeloggte User
erstmal das Root- PW bräuchte, um den Rechner runterzufahren.

Genau dies wird durch die ergänzende /modifizierende Regel, die ich oben vorgeschlagen habe umgangen.
Nur User in der Gruppe guest dürfen das dann nicht.

geoliver2104
Beiträge: 111
Registriert: 03.01.2020 13:28:57

Re: gast-user mit eingeschränkten Rechten

Beitrag von geoliver2104 » 31.03.2020 11:34:30

Danke für deine ausführliche Hilfe !

hab deine Anleitungen befolgt und als root angelegt:
neue Gruppe: guest
neuer User: (bei mir) ano
dann

Code: Alles auswählen

usermod -aG guest ano
jetzt neue Regel > /usr/share/polkit-1/rules.d/guest.rules
der Einfachheit wegen, nur mit reboot

Code: Alles auswählen

polkit.addRule(function(action, subject) {

    if (action.id == "org.freedesktop.login1.reboot" && subject.isInGroup("guest"))
    {
       return polkit.Result.auth_admin;
    }
});
und nach Neustart als User: ano anmelden
aber

Code: Alles auswählen

systemctl reboot -i
geht noch immer ohne irgendeine Passwort Abfrage
Weiss jetzt nicht :
Polkit nicht richtig bzw. vollständig installiert ?
die Verzeichnisse
/usr/share/polkit-1/rules.d/
/usr/share/polkit-1/actions/
hab ich jedenfalls.
Syntaxfehler in /usr/share/polkit-1/rules.d/guest.rules ?
was mir auch zu Denken gibt ist die action.id -> org.freedesktop.login1.reboot
hat das irgendwas mit grafischen Login und XWindow zu tun ?
Bei mir logt sich jeder User auf der Konsole (login-shell) ein und kann dann selbst
aus den installierten WM auswählen (dzt. nur fluxbox oder icewm)
LG

willy4711

Re: gast-user mit eingeschränkten Rechten

Beitrag von willy4711 » 31.03.2020 15:44:07

Uff - bei diesen spartanischen Oberflächen muss ich passen. Hab so was als VM, nur mal um zu sehen, was man sich
so alles antun kann :wink:
Mal nachgesehen.
Was dort fehlt, aber notwendig ist ist das Debianpolicykit-1-gnome, das auch in den Autostart muss.
Das handelt die Policy's


Edit:
Ob das mit fluxbox funktioniert, kann ich nicht sagen.

geoliver2104
Beiträge: 111
Registriert: 03.01.2020 13:28:57

Re: gast-user mit eingeschränkten Rechten

Beitrag von geoliver2104 » 01.04.2020 12:57:46

Nochmals Danke für deine Bemühungen !
Das war wohl ein Mißverständnis.
Mir gehts nicht um grafische Oberflächen, sondern um Ausführungsrechte
auf der Konsole.
LG

Antworten