Wszystkie porady, które znajduję w sieci, brzmią:
Find all SUID files:
find / -perm -4000 -print
Find all SGID files:
find / -perm -2000 -print
Ale to nie jest prawda. Widzieć:
$ ls -lah test
-r-sr-xr-x 1 user user 0B Jan 24 22:47 test
$
$
$ stat -x test | grep Mode
Mode: (4555/-r-sr-xr-x) Uid: ( 1000/ user) Gid: ( 1000/ user)
$
$
$ find test -perm 4000
$ find test -perm 2000
$
Pytanie: Więc jaka jest prawda? Jak mogę naprawdę wyświetlić wszystkie pliki SUID / SGID?
find
(GNU znajdzie się dokładnie) weźmie katalogi i pliki podobnie. Po prostu brakuje mu punktu-perm
zmiany. Pomocne byłoby przeczytanie instrukcji.find $FILE -perm /7777
aby zobaczyć, czyfind
to robi, czy zapobiega.Odpowiedzi:
Jeśli chcesz przetestować dowolny bit, użyj
/
. Tj. Dla twojego przypadku użycia:i:
lub połączone:
Możesz użyć zarówno folderów, jak i plików jako argumentu dla GNU
find
.Innym, lepiej czytelnym, podejściem IMO jest stosowanie skrótów mnemonicznych. To znaczy:
Zastrzegający emptor
Pamiętaj, że warianty
find
różnią się. Mogą również zachowywać się inaczej. Zawsze czytaj przyjazną instrukcję obsługi (RTFM).źródło
Za pomocą następującego polecenia można wyliczyć wszystkie pliki binarne posiadające uprawnienia SUID.
-perm -u=s
Flagafind
narzędzia załatwia sprawę:źródło