Як шукати всі файли SUID / SGID?


11

Усі хауто, які я знаходжу в Інтернеті:

Find all SUID files:
find / -perm -4000 -print
Find all SGID files:
find / -perm -2000 -print 

Але це неправда. Подивитися:

$ 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
$

Питання: Отже, що таке правда? Як я можу реально перерахувати всі файли SUID / SGID?


Ум, так чому саме це "неправда"? Ви зробили R EAD T він F riendly M Anual, вірно? Біти дозволу файлу є саме режимом (восьмеричним або символічним).
0xC0000022L

** тест ** - файл. Знайдіть пошук у каталогах. Тож вам слід скористатися знаходженням у каталозі, де знаходиться тест.
Нілс

1
@Nils: неправда. find(GNU виявиться точним) візьме так само каталоги та файли. Він / вона просто не вистачає точки -permвимикача. Читання посібника допоможе.
0xC0000022L

@ 0xC0000022L Цікаво. Моя linux-manpage на CentOS 5 повідомляє мені, що вона займе лише каталоги. Чи є сенс запускати його у файлі?
Нілс

@Nils: Ні, немає особливого сенсу робити це. Але це вам не запобіжить від цієї дурості. Незважаючи на це, на перший погляд я також вважав, що це питання. На жаль, це не питання. Ви можете спробувати перевірити наявність будь-яких бітів у такому файлі, find $FILE -perm /7777щоб побачити, чи findробить це чи запобігає.
0xC0000022L

Відповіді:


14

Якщо ви хочете перевірити наявність будь-якого з бітів, використовуйте /. Тобто для вашого випадку використання:

find "$DIRECTORY" -perm /4000

і:

find "$DIRECTORY" -perm /2000

або комбіновано:

find "$DIRECTORY" -perm /6000

Ви можете використовувати як папки, так і файли як аргумент для GNU find.

Інший, IMO, що краще читається, підхід використовує мнемічні ярлики. Тобто:

find "$DIRECTORY" -perm /u=s,g=s

Caveat emptor

Майте на увазі, що варіанти findрізняться. Вони також можуть поводитися по-різному. Завжди читайте дружній посібник (RTFM).


8

За допомогою наступної команди ви можете перерахувати всі бінарні файли, що мають дозвіл SUID. -perm -u=sПрапор findінструмент робить трюк:

find / -perm -u=s -type f 2>/dev/null
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.