Sudoers Problem

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
debianfan4235
Beiträge: 4
Registriert: 20.11.2020 19:05:03

Sudoers Problem

Beitrag von debianfan4235 » 20.11.2020 19:52:19

Also Ich habe folgendes Problem: Ich habe (dachte Ich zumindestens :D) meinem "panda" Account die Rechte gegeben ssh und lighttpd ohne Passwort zu Starten, Stoppen, Neuzustarten und den Status mit Root auszulesen gegeben.
Meine Sudoers Datei:

Code: Alles auswählen

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root    ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
panda ALL=(ALL) NOPASSWD: /usr/bin/systemctl start ssh
panda ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop ssh
panda ALL=(ALL) NOPASSWD: /usr/bin/systemctl status ssh
panda ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart ssh
panda ALL=(ALL) NOPASSWD: /usr/bin/systemctl start lighttpd
panda ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop lighttpd
panda ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart lighttpd
panda ALL=(ALL) NOPASSWD: /usr/bin/systemctl status lighttpd
Die Ausgabe von id:

Code: Alles auswählen

uid=1000(panda)gid=1000(panda)Gruppen=1000(panda),24(cdrom),25(floppy),29(audio),30(dip),32(d32),44(video),46(plugdev),109(netdev),113(scanner),116(lpadmin)
Die Ausgabe von sudo -l

Code: Alles auswählen


Passende Defaults-Einträge für panda auf panda:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

Der Benutzer panda darf die folgenden Befehle auf panda ausführen:
    (ALL) NOPASSWD: /usr/bin/systemctl start ssh
    (ALL) NOPASSWD: /usr/bin/systemctl stop ssh
    (ALL) NOPASSWD: /usr/bin/systemctl status ssh
    (ALL) NOPASSWD: /usr/bin/systemctl restart ssh
    (ALL) NOPASSWD: /usr/bin/systemctl start lighttpd
    (ALL) NOPASSWD: /usr/bin/systemctl stop lighttpd
    (ALL) NOPASSWD: /usr/bin/systemctl restart lighttpd
    (ALL) NOPASSWD: /usr/bin/systemctl status lighttpd
Ich verstehe nicht warum Ich bei "systemctl start apache" oder den anderen Befehlen eine Root Authentifizierung brauche.

Benutzeravatar
TRex
Moderator
Beiträge: 6661
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Sudoers Problem

Beitrag von TRex » 20.11.2020 21:00:27

Ähm, "systemctl start apache" oder "sudo systemctl start apache"?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!

tobo
Beiträge: 903
Registriert: 10.12.2008 10:51:41

Re: Sudoers Problem

Beitrag von tobo » 20.11.2020 21:05:16

Damit deine Sudoers-Änderungen wirksam werden, musst du dich neu anmelden! Danach wird dann auch die id gelistet.

Root-Authentifizierzung=Passwort-Bestätigung?
debianfan4235 hat geschrieben: ↑ zum Beitrag ↑
20.11.2020 19:52:19
Ich verstehe nicht warum Ich bei "systemctl start apache" [...] eine Root Authentifizierung brauche.
Weil das so konfiguriert ist, nämlich hier:

Code: Alles auswählen

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
Ich verstehe nicht warum Ich bei [...] oder den anderen Befehlen eine Root Authentifizierung brauche.
Bei welchen anderen Befehlen? Bei einem

Code: Alles auswählen

sudo systemctl start ssh
etwa auch? Denn das wäre eine der 8 angegeben Ausnahmen, die ohne Passworteingabe funktionieren sollten!?

debianfan4235
Beiträge: 4
Registriert: 20.11.2020 19:05:03

Re: Sudoers Problem

Beitrag von debianfan4235 » 20.11.2020 22:10:14

Der Benutzer Panda hat keine Sudo oder Roor Rechte und soll diese 8 Befehle deshalb ohne Passwort ausführen können

debianfan4235
Beiträge: 4
Registriert: 20.11.2020 19:05:03

Re: Sudoers Problem

Beitrag von debianfan4235 » 20.11.2020 22:12:28

Und die Zeile:

Code: Alles auswählen

%sudo   ALL=(ALL:ALL) ALL
habe ich gelöscht.
Auf diesem debian gibt es nur die zwei Benutzer und der panda Benutzer soll eigentlich nur diese 8 Befehle ohne Sudo oder Root ausführen können

Benutzeravatar
TRex
Moderator
Beiträge: 6661
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Sudoers Problem

Beitrag von TRex » 20.11.2020 22:49:02

debianfan4235 hat geschrieben: ↑ zum Beitrag ↑
20.11.2020 22:10:14
Der Benutzer Panda hat keine Sudo oder Roor Rechte und soll diese 8 Befehle deshalb ohne Passwort ausführen können
[...]
Auf diesem debian gibt es nur die zwei Benutzer und der panda Benutzer soll eigentlich nur diese 8 Befehle ohne Sudo oder Root ausführen können
Ich glaube nicht, dass du verstanden hast, wie sudo funktioniert. Du hast die allgemeine "mit sudo darf ich alles" Zeile entfernt, das ist gut - aber du musst dennoch "sudo" voranstellen, wenn du die sudo-Konfiguration nutzen willst. Du wirst feststellen, dass der Benutzer auch nur das darf, was du konfiguriert hast (teste aber ruhig, dass das auch so ist, und beachte auch den Hinweis von tobo).

Lässt du sudo weg, greift der systemd-Mechanismus zur Authentifizierung und fragt nach dem root-Passwort (was nichts mit sudo zu tun hat).
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!

tobo
Beiträge: 903
Registriert: 10.12.2008 10:51:41

Re: Sudoers Problem

Beitrag von tobo » 20.11.2020 23:26:10

debianfan4235 hat geschrieben: ↑ zum Beitrag ↑
20.11.2020 22:12:28
Und die Zeile:

Code: Alles auswählen

%sudo   ALL=(ALL:ALL) ALL
habe ich gelöscht.
Eigentlich löscht man nichts aus Konfigurationsdateien, man kommentiert aus (vorangestellte #).
Auf diesem debian gibt es nur die zwei Benutzer und der panda Benutzer soll eigentlich nur diese 8 Befehle ohne Sudo oder Root ausführen können
Deine Problemstellung habe ich inzwischen verstanden und von den Befehlen mal abgesehen, ist das fast deckungsgleich zu einem meiner Systeme. Also, keine Sudo-Mitgliedschaft und bestimmte Befehle ohne Passworteingabe und ohne vorangestelltes sudo.

Zunächst aber noch was anderes: Du gibst "systemctl start ssh" frei und erwartest, dass "systemctl start apache" funktioniert - das geht natürlich nicht. Und genauso wenig geht, dass vor dem eigentlichen Befehl kein sudo steht. Wie es (ohne sudo) aber jetzt doch geht:
Erst mal schaust du, ob ein beliebiger Befehl (aus den 8 Ausnahmen) wie gewünscht, aber mit sudo, funktioniert. Also z.B. das:

Code: Alles auswählen

sudo systemctl status ssh
Wenn das funktioniert, dann kannst du die sudo-Eingabe entfernen, indem du dir z.B. in deiner ~/.profile eine Funktion (alternativ, aber weniger günstig einen Alias) anlegst:

Code: Alles auswählen

systemctl_status_ssh() {
    sudo /usr/sbin/systemctl status ssh
}
Wobei man den Funktionsnamen wohl kürzer wählen würde. Und das dann entsprechend für alle 8 Befehle (zum aktivieren danach ein . ~/.profile). Da ich bei mir keine Paramter angebe, lauten meine Funktionsnamen (weitestgehend) wie die Befehle selbst. Wäre dann für dich zum Testen sowas:

Code: Alles auswählen

systemctl() {
    sudo /usr/sbin/systemctl "$@"
}
Das führt dann somit am Ende zum Aufruf:

Code: Alles auswählen

$ systemctl status ssh
Was die Sicherheit von systemctl angeht, da kann ich jedoch überhaupt nichts sagen! Das musst du selbst wissen...

debianfan4235
Beiträge: 4
Registriert: 20.11.2020 19:05:03

Re: Sudoers Problem

Beitrag von debianfan4235 » 21.11.2020 09:46:06

Danke das hat mir sehr geholfen, Ja sudo systemctl start ssh kann Ich jetzt ausführen, vorher hatte Ich das sudo vergessen da Ich dachte das Ich diese Aktion dann ohne Sudo durchführen kann.

tobo
Beiträge: 903
Registriert: 10.12.2008 10:51:41

Re: Sudoers Problem

Beitrag von tobo » 21.11.2020 11:41:07

debianfan4235 hat geschrieben: ↑ zum Beitrag ↑
21.11.2020 09:46:06
[...] da Ich dachte das Ich diese Aktion dann ohne Sudo durchführen kann.
Dann kopiere dir diese Zeilen

Code: Alles auswählen

systemctl() {
    sudo /usr/sbin/systemctl "$@"
}
in deine (im Home-Verzeichnis versteckte) Datei ~/.profile und führe ein

Code: Alles auswählen

source ~/.profile
aus, dann kannst du das fortan auch ohne vorangestelltes sudo angeben. War im Beitrag darüber in bisschen schlecht beschrieben von mir.

Antworten