• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

SUID Bit

hallo,

ich müsste herausfinden bei welchen Dateien innerhalb von /bin und /sbin das SUID-Bit gesetzt ist. Das sollte irgendwie mit find und -perm machbar sein.

Hat das schon mal jemand ausprobiert oder weiß wie es geht?

Aus welchem Grund ist eigentlich bei manchen Files in /bin und /sbin das SUID Bit gesetzt?
 
A

Anonymous

Gast
http://www.linuxfibel.de/access.htm#spez

zum finden von Dateien mit SUID (4000) und/oder SGID(2000) funktioniert sowas hier
Code:
find / -type f \( -perm -02000 -o -perm -04000 \) -print
Zum Finden nur von Scripten mit SUID und/oder SGID funktionert sowas hier, (in neuen LINUX-Versionen sollte das bei Scripten aber eh nicht mehr funktionieren.)
Code:
find / -type f \( -perm -02000 -o -perm -04000 \) -exec file {} \; | grep -v "executable"

Am besten in eine Datei im Homeverzeichnis von root schreiben und hin und wieder mal vergleichen ob nicht doch eventuell neue dazugekommen sind.

robi
 
Ich habe gerade den zweiten Befehl ausprobiert im bin Verzeichnis:

find . -type f \( -perm -02000 -o -perm -04000 \) -exec file {} \; | grep -v "executable"

leider passiert da gar nichts, obwohl in dem bin files vorhanden sind wo das s bit gesetzt ist.

kannst du mir vielleicht kurz erklären wie der ausdruck funktioniert?
 
Zum warum SUID:
Klassisches Beispiel ist das Programm passwd.
Code:
ls -l /usr/bin/passwd
-rwsr-xr-x  1 root  root  32296 Jul 14 11:22 /usr/bin/passwd
Die Passwörter der user liegen MD5 verschlüsselt in der Datei /etc/shadow, die nur für root schreib- und lesbar ist. Wenn jetzt ein user sein Passwort ändern will, muss das neue Passwort (bzw. der MD5 Hash des Passworts) in die /etc/shadow geschrieben werden, und hierzu muss das Programm passwd Rootrechte haben, auch wenn ein User es aufruft.
 
A

Anonymous

Gast
rob3000 schrieb:
kannst du mir vielleicht kurz erklären wie der ausdruck funktioniert?

Der zweite Befehl den du ausprobiert hast, würde dir nur Dateien oder Scripte anzeigen, bei denen ein "s" gesetzt ist, diese Datei aber keine Binärdatei ist also der Befehl file Datei in der Ausgabe kein executable enthält, "grep -v Ausdruck" (finde alles wo Ausdruck nicht drin steht)

robi
 
Eigentlich würde das doch genügen um zu überprüfen, ob es files im /bin verzeichnis gibt wo das suid bit gesetzt ist:

find . -perm -u=s

damit werden mir alle dateien ausgegeben, wo das suid bit gesetzt ist, daher ist mir dein langer ausdruck nicht ganz klar...?
(auch diese fünfstelligen zahlen 02000, denn ich habe ja eigentlich nur 4 stellen, die erste gibt an ob suid,guid oder sticky bit gesetzt ist, das zweite den owner, dann group und dann others)
 
A

Anonymous

Gast
rob3000 schrieb:
(auch diese fünfstelligen zahlen 02000, denn ich habe ja eigentlich nur 4 stellen, die erste gibt an ob suid,guid oder sticky bit gesetzt ist, das zweite den owner, dann group und dann others)

sicherlich es führen viele Wege nach Rom, :wink:
die 02000 ist ehr der Versuch sich an einer korrekten Schreibweise zu gewöhnen, die dann zB auch auf anderen Unixsystemen problemlos laufen würde.
Sicherlich es würde hier auch eine 2000 oder eine 4000 reichen, aber es sind und es bleiben Oktal zu interpetierende Werte und desshalb die "0" am Anfang, dann interpretiert die Bash die nachfolgende Zahl als Oktal.
Hier bei den Zugriffsrechen sind die Zahlenwerte in den einzelnen Stellen dezimal, oktal und hexadezimal zufällig gleich, aber das ist eben nicht bei jeder Zahl in jedem Programm und bei jeder Anwendung so.
Wenn die Rechtschreibekorrektor in meinem Textverarbeitungsprogramm erkennt das "udn" und heißen soll, dann sollte ich mir doch auch tunlichst angewöhnen trotzdem immer "und" zu schreiben und es nicht zur Angewohnheit machen immer "udn" zu schreiben, weil die Textverarbeitung das per Autokorretur sowieso regelt. ( na ja vielleicht schlechtes Beispiel, aber wenigstenes der Versuch) :oops:


robi
 
Oben