Finden und Unterschiede zwischen -perm /6000 und -perm /u+s

Finden und Unterschiede zwischen -perm /6000 und -perm /u+s

Ich habe versucht, Setuid-ausführbare Dateien mit einem „Einzeiler“ zu finden.

Die Zeile, die ich zuerst ausprobiert habe, war:

find / -perm /u+s -type f

Dann habe ich eine Zeile gefunden, die ähnlich ist, aber andere Ergebnisse liefert:

find / -perm /6000 -type f

Diese sehen, soweit ich das beurteilen kann, identisch aus, aber das erste zeigt nicht so viele Ergebnisse wie das zweite (meistens fehlen solche mit seltsamen Gruppen). Warum, was ist anders?

Antwort1

Die meisten Leute wissen es nicht, aber die Unix-Berechtigungen bestehen eigentlich nicht nur aus Benutzer-, Gruppen- und anderen Berechtigungen (rwx). Diese 3 Triaden sind die typischen Berechtigungen, die Benutzern, Gruppen und anderen Benutzern Zugriff auf Dateien und Verzeichnisse gewähren. Es gibt jedoch auch eine Gruppe von Bits, die den Benutzerbits vorangehen. Diese Bits werden als „Spezialmodi“ bezeichnet.

Es handelt sich eher um eine Kurznotation, die Sie beim Arbeiten mit einem Tool wie nicht explizit festlegen müssen chmod.

$ chmod 644

Ist eigentlich gleichbedeutend mit:

$ chmod 0644

Hier ist die Liste der Bits:

Auszug aus einem Wikipedia-Artikel mit dem Titel:chmod

Flag                Octal value     Purpose
----                -----------     -------
S_ISUID             04000           Set user ID on execution
S_ISGID             02000           Set group ID on execution
S_ISVTX             01000           Sticky bit
S_IRUSR, S_IREAD    00400           Read by owner
S_IWUSR, S_IWRITE   00200           Write by owner
S_IXUSR, S_IEXEC    00100           Execute/search by owner
S_IRGRP             00040           Read by group
S_IWGRP             00020           Write by group
S_IXGRP             00010           Execute/search by group
S_IROTH             00004           Read by others
S_IWOTH             00002           Write by others
S_IXOTH             00001           Execute/search by others

Ihre Frage

In Ihrem ersten Befehl suchen Sie also nach u+s, was sich als bit herausstellen würde 04000. Wenn Sie die numerische Notation verwenden, fragen Sie nach Bits04000 UND 02000. Dadurch erhalten Sie Dateien mit gesetzten Benutzer- oder Gruppen-Setuid-Bits.

Weitere Informationen

Ich empfehle jedem, der die Berechtigungen in Unix besser verstehen möchte, dieWikipedia-Seite überchmod. Es erklärt alles ganz einfach und ist ein hervorragendes Nachschlagewerk, falls Sie es vergessen.

Verweise

Antwort2

Modus 6000ist u+s,g+s, nicht nur u+s(das wäre 4000).

find / -perm /u+soder find / -perm /4000findet nur Dateien, bei denen das Setuid-Bit gesetzt ist. find / -perm /u+soder find / -perm /6000findet Dateien, bei denen das Setuid-Bit oder das Setgid-Bit gesetzt ist.

verwandte Informationen