Snažil jsem se najít spustitelné soubory setuid pomocí „jednoho řádku“.
Řádek, který jsem poprvé zkusil, byl:
find / -perm /u+s -type f
Pak jsem našel řádek, který je podobný, ale dává jiné výsledky:
find / -perm /6000 -type f
Pokud mohu soudit, vypadají stejně, ale první neukazuje tolik výsledků jako druhý (většinou chybí ty s podivnými skupinami). Proč, co je jiné?
Přijatá odpověď:
Většina lidí si to neuvědomuje, ale unixová oprávnění ve skutečnosti nejsou jen User, Group a Others (rwx). Tyto 3 triády jsou typická oprávnění, která umožňují uživatelům, skupinám a dalším uživatelům přístup k souborům a adresářům. Existuje však také skupina bitů, které předcházejí uživatelským bitům. Tyto bity se označují jako „Speciální režimy“.
Jde spíše o zkrácený zápis, že je nemusíte explicitně nastavovat při práci s nástrojem, jako je chmod
.
$ chmod 644
Je ve skutečnosti ekvivalentní:
$ chmod 0644
Zde je seznam bitů:
úryvek z článku na wikipedii s názvem: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
Vaše otázka
Ve svém prvním příkazu tedy hledáte u+s
, což by vyšlo na bit 04000
. Když použijete číselný zápis, požadujete bity 04000
A 02000
. Získáte tak soubory s nastavenými bity nastavení uživatele nebo skupiny.
Další čtení
Vřele doporučuji každému, kdo chce lépe porozumět oprávněním v Unixu, aby si přečetl stránku Wikipedie o chmod
. Velmi jednoduše to rozebírá a je to vynikající reference, když zapomenete.
Odkazy
- Výukový program chmod