sudo - Rechte eines Benutzers anzeigen

cfertsch

cfertsch

Jungspund
Besten Dank

Gruß

Christian
 
Zuletzt bearbeitet:
Hallo Rvg,

vielleicht habe ich mich unklar ausgedrückt, aber das ich "sudo -l " kenne
geht schon aus dem Posting hervor.

Folgendendes Szenario: ich bin root, und habe eine große sudoers
Datei. Jetzt möchte ich wissen, welche Befehle darf der Benutzer "egon"
ausführen.

Gruß
Christian
 
Öhm... kommt doch drauf an was in der /etc/sudoers drinsteht bzw in welchen Gruppen der ist?
 
was war denn an supersuckers Vorschlag nicht gut, einfach "grep" mit dem Usernamen auf die sudoers-Datei abzufeuern?
 
Zuletzt bearbeitet:
Das klappt so nicht:

Code:
hoppers:~ # grep kalle /etc/sudoers
kalle    ALL=(ALL) ALL

Code:
kalle@hoppers:~> sudo -l
User kalle may run the following commands on this host:
    (ALL) ALL
    (root) NOPASSWD: /bin/mount -o loop* -t iso9660* /home/*/.kisotmp/*
    (root) NOPASSWD: /bin/umount /home/*/.kisotmp/*
    (ALL) ALL
 
Öhm... wieso das denn? grep grept doch lediglich die Zeilen, in der das angegebene Wort zu finden ist, bei mir sieht die komplette mount/umount-Freigabe in der sudoers für kalle so aus:

Code:
ALL ALL=NOPASSWD:/bin/mount -o loop* -t iso9660* /home/*/.kisotmp/* ,/bin/umount /home/*/.kisotmp/*
kalle    ALL=(ALL) ALL

...ansonsten steht nirgends ein kalle.
 
du hast da ein "ALL" und ein "kalle". Bei "kalle" steht kurz und bündig " ALL=(ALL) ALL".

Genau das hat grep doch ausgegeben.....

Bei mir steht das anders:
Code:
# grep jens /etc/sudoers
jens    ALL = (root) NOPASSWD:  /bin/dd, /root/mail_restart.sh, /home/jens/bin/mail_restart, (root)  NOPASSWD: /root/x_chown.sh, (root) NOPASSWD: /opt/kde3/bin/kiso

und das sagt sudo -l:
Code:
~> sudo -l
User jens may run the following commands on this host:
    (ALL) ALL
    (root) NOPASSWD: /bin/dd
    (root) NOPASSWD: /root/mail_restart.sh
    (root) NOPASSWD: /home/jens/bin/mail_restart
    (root) NOPASSWD: /root/x_chown.sh
    (root) NOPASSWD: /opt/kde3/bin/kiso
    (root) NOPASSWD: /bin/mount -o loop* -t iso9660* /home/*/.kisotmp/*
    (root) NOPASSWD: /bin/umount /home/*/.kisotmp/*
Das ist genau das, was mir als "jens" erlaubt ist plus natürlich das, was für "ALL" erlaubt ist...
 
Hallo,

warum das mit dem grep keine Lösung ist?

1. Weil in der sudoers keine Benutzernamen stehen.
2. Wenn die Befehle über mehrere Zeilen gehen reicht ein einfaches
grep nicht mehr.

@jens: Das sudo -l hast Du als Benutzer ausgeführt, und nicht als root.
Das NOPASSWD: ist in der Praxis nicht üblich, das wenn ich als root auf den jens
switche und sudo -l mache muss ich das Passwort wissen

Gruß
Christian
 
Zuletzt bearbeitet:
@jens: Das sudo -l hast Du als Benutzer ausgeführt, und nicht als root.
Ganz genau, ja. Du wolltest aber wissen, wie du als root siehst, was für einen User in der sudoers erlaubt ist, so zumindest war die Frage.

Das NOPASSWD: ist in der Praxis nicht üblich, das wenn ich als root auf den jens
switche und sudo -l mache muss ich das Passwort wissen
Den Satz verstehe ich nicht ganz, das NOPASSWD ist für mich der Hauptgrund, sudoers überhaupt zu benutzen. Ich will einfach bestimmte Befehle erlauben und die eingeben können.

In meiner Liste siehst du auch Shellscripte. Wenn ich nicht möchte, daß ein User einen root-Befehl komplett nutzen kann, sondern nur in einem bestimmten Kontext, dann schreibe ich ein Script, das seinerseits root-Rechte braucht und den Befehl genau so anwendet - nur so und nicht anders. Und *das* erlaube ich ihm dann ohne Paßwort in der sudoers. Für mich ist sowas überhaupt der Sinn der Sache, sonst kann ich auch su machen und das als root ausführen, wenn ich das Paßwort eh brauche. Oder sudo <Befehl> mit root-Paßwort.

Und doch, da stehen Usernamen drin. Gerade in meinem Beispiel zumindest.

Wenn keine drin stehen, hast du über sudoers niemandem was erlaubt und deine Frage ist obsolet... oder ich hab sie generell falsch verstanden.

Du könntest in den gängigen Verzeichnissen (/bin, /sbin, /usr/bin ...) mal alles auflisten, das root:root gehört und kein x für "others" hat. Die darf er nicht, alle anderen darf er.
 
Zuletzt bearbeitet:
Hallo Jabo,

sorry aber ich muss Dir nochmal auf die Sprünge helfen.

sudo und su ist nicht das selbe

Es macht auf jeden Fall sinn ein Kennwort eingeben zu müssen.
Stell Dir mal ein vergessenes offenes Terminal vor. Übrigens geht
es bei unserer "sudoers" Datei um ca. 3000 Benutzer und 300 Gruppen
auf ca. 300 Servern.

Und falls Du es noch nicht bemerkt hast, musst Du wenn Du als
Benutzer "jens" sudo machst nicht das root Kennwort eingeben,
das wäre ja Blödsinn, sondern Dein Benutzerkennwort, und das solltest
Du ja wissen.

So und jetzt sollte auch klar sein, wen ich root bin und auf den Benutzer switche
das ich bei einem "sudo -l" das Kennwort des Benutzers nicht weiss


Vielleicht hast Du trotzdem noch eine Idee, wir ich mir als "root"
mit einem einfachen Befehl die Rechte eines Benutzers anzeigen kann.

Übrigens auf Shellskripte, Befehle wie "vi" , "more" oder less ist es
extrem gefährlich sudo Rechte zu geben

Und bei der Anzahl von Benutzer stimmst Du mir bestimmt zu das es auf Gruppenebene
besser zu administrieren ist.

Aktuell muss ich mir also die Arbeit machen nachzusehen in welchen Gruppen ein Benutzer
ist um dann in der sudoers nachzusehen welche Befehle er auf welchem System ausführen darf.
Du weisst das man in der sudoers auch Gruppen eintragen kann?
Du weisst das man eine sudoers für alle System pflegen kann und diese dann verteielen kann.

Viele Grüße
Christian
 
Zuletzt bearbeitet:
Hallo Jabo,
sorry aber ich muss Dir nochmal auf die Sprünge helfen.
sudo und su ist nicht das selbe
Das ist mir schon klar, wir haben uns da wohl mißverstanden.

Es macht auf jeden Fall sinn ein Kennwort eingeben zu müssen.
Stell Dir mal ein vergessenes offenes Terminal vor. Übrigens geht
es bei unserer "sudoers" Datei um ca. 3000 Benutzer und 300 Gruppen
auf ca. 300 Servern.
Das hängt halt extrem von der Umgebung ab, die die du hier (übrigens gerade zum ersten mal im Thread) beschreibst, legt grundsätzlich strenge Regeln nahe.

Und falls Du es noch nicht bemerkt hast, musst Du wenn Du als
Benutzer "jens" sudo machst nicht das root Kennwort eingeben,
das wäre ja Blödsinn, sondern Dein Benutzerkennwort, und das solltest
Du ja wissen.
Ich meinte, daß ich das Eingeben des Kennwortes für einen bestimmten Befehl tatsächlich einsparen wollte, da ist es dann egal, welches fällig wäre. Und zum Paßwort schau mal mein Beispiel unten. Ich brauche ohne NOPASSWD definitv das root-Paßwort in dem Fall. Mit der sudoers könnte ich das jemandem erlauben, ohne ihm das Paßwort sagen zu müssen. *Das* fände ich nämlich gefährlich.

Bei mir geht es aber auch nicht um so viele Leute, das ist klar. So eine Situation haben wir auch auf unseren Kundenservern nicht, weil die nicht direkt daran arbeiten bzw. überhaupt Unix-/ Linux-Terminals haben.

So und jetzt sollte auch klar sein, wen ich root bin und auf den Benutzer switche
das ich bei einem "sudo -l" das Kennwort des Benutzers nicht weiss
na sicher ist das klar, ich hab sudo -l als Vergleichsausgabe gepostet, nicht als Lösung, aber ich dachte das hätte ich auch gesagt?

Übrigens auf Shellskripte, Befehle wie "vi" , "more" oder less ist es
extrem gefährlich sudo Rechte zu geben
Also, das "mailrestart"-Dings z.B. macht in einem Rutsch einen Neustart von Postfix und Fetchmail, das hat einen bestimmten Grund, warum ich das als User auf *diesem* Rechner können möchte. Die Init-Scripte direkt starten oder stoppen oder den Daemons irgend welche Parameter übergeben kann ich deshalb noch lange nicht.

Und wenn ich das NOPASSWD da raus nehme, brauche ich definitv das root-Paßwort und nicht meins, sonst passiert das:
Code:
~> mailrestart
Password:
Sorry, try again.

Und bei der Anzahl von Benutzer stimmst Du mir bestimmt zu das es auf Gruppenebene
besser zu administrieren ist.
Unbedingt!

Aktuell muss ich mir also die Arbeit machen nachzusehen in welchen Gruppen ein Benutzer
ist um dann in der sudoers nachzusehen welche Befehle er auf welchem System ausführen darf.
Aber das kannst du doch auch verskripten. "groups" auf den User und die Antwort in ein Array, damit dann sudoers durch baggern. Ob du nun nach nem User grepst oder nach der Gruppe, ist grep doch eigentlich egal...

Du weisst das man in der sudoers auch Gruppen eintragen kann?
Ja sicher. s.o., dann greppe halt nach der Gruppe.... und frage die für den User vorher ab.

Du weisst das man eine sudoers für alle System pflegen kann und diese dann verteielen kann.
Ja, es ist ja eine Datei. Die kann man durch die Gegend kopieren, das überrascht mich nicht sooo sehr :)

[Edit]
Du sagst, fällt mir gerade ein, daß du das als root feststellen möchtest. Was spricht dagegen:
Code:
#sudo -u Benutzername sudo -l

Als root mußt du ja bei sudo -u Benutzername nicht dessen Kennwort wissen. Bei mir führt das zu exakt der selben Ausgabe wie sudo -l als der User.
 
Zuletzt bearbeitet:
Hallo Jabo,

ich vermute das Du SuSE Linux nutzt, Da gibt es in der Voreinstellung
diesen Eintrag in der sudoers : Defaults targetpw

Hier auch der Kommentar aus der Manual Page

If set, sudo will prompt for the password of the user specified by the -u flag (defaults to root) instead of the password of the invoking user. Note that this precludes the use of a uid not listed in the passwd database as an argument to the -u flag. This flag is off by default.

Dann musst das Passwort des Benutzers angeben unter dem du das Kommando ausführen willst. Und genau das will man ja vermeiden.

Und dann klappt dein Vorschlag leider wieder nicht
sudo -u Benutzername sudo -l

Ich habe schon ne weile gegoogled und bei sourceforge geguckt,


Muss man doch mal bischen awk Skripten.


Gruß
Christian
 
Zuletzt bearbeitet:
Hallo Jabo,
Ich vermute das Du SuSE Linux nutzt, Da gibt es in der Voreinstellung
diesen Eintrag in der sudoers : Defaults targetpw
Ja, stimt. Jetzt wo du's sagst... ich hab noch 2 Debianer, einen Etch und einen Lenny, da ist es so wie du es beschreibst. Auf denen hatte ich bisher die sudoers nicht benutzt und dadurch eine offenbar einseitige Vorstellung davon :D

Aber wenn das mit dem SuSE-Stil geht, ist das dann nicht auch woanders praktikabel? Ich probiere das mal auf Debian aus...
 
Hallo Jens,

schön. ich glaube jetzt verstehst Du mein Problem. Ich will nicht wie ein Meckerkopf
rüber kommen. ich denke wir haben einfach da wir unterschiedliche Einsatzgebiete
haben aneinander vorbei geredet.

Mit Sicherheit hat die Voreinstellung unter SuSE einen Grund,
ich weiss aber leider nicht welchen.

Ich werde aber mal noch ein bischen suchen, und wenn nicht selbst skripten.

Besten Dank für Deine Hilfe

Gruß
Christian
 

Ähnliche Themen

Microsoft Windows: Sudo findet seinen Weg von Linux nach Redmond

Shell Programmierung

mehrere Textdateien gleichzeitig öffnen.

NAS-Drive Mount in Bash-Script über crontab

Samba keine rechte auf Überordner, aber auf Unterordner

Zurück
Oben