Я пытался найти исполняемые файлы setuid, используя `однострочник'.
Первая строчка, которую я попробовал, была:
find / -perm /u+s -type f
Затем я нашел строку, которая похожа, но дает другие результаты:
find / -perm /6000 -type f
Насколько я могу судить, они выглядят одинаково, но первый вариант не показывает столько результатов, как второй (в основном те, в которых отсутствуют странные группы). Почему, в чем разница?
решение1
Большинство людей не знают, но разрешения Unix на самом деле не просто Пользователь, Группа и Другие (rwx). Эти 3 триады являются типичными разрешениями, которые позволяют пользователям, группам и другим пользователям получать доступ к файлам и каталогам. Однако есть также группа битов, которые предшествуют битам Пользователя. Эти биты называются «Специальными режимами».
Это скорее сокращенная запись, указывающая на то, что вам не нужно явно задавать их при работе с таким инструментом, как chmod
.
$ chmod 644
Фактически эквивалентно:
$ chmod 0644
Вот список битов:
отрывок статьи Википедии под названием:чмод
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
Ваш вопрос
Итак, в вашей первой команде вы ищете u+s
, что будет bit 04000
. Когда вы используете числовую нотацию, вы запрашиваете биты04000
И 02000
. Это даст вам файлы с установленными битами setuid пользователя или группы.
Дальнейшее чтение
Я настоятельно рекомендую всем, кто хочет лучше понять права доступа в Unix, прочитатьСтраница Википедии оchmod
. Он очень просто все объясняет и является отличным справочником, если вы забудете.
Рекомендации
решение2
Режим 6000
— это u+s,g+s
, а не просто u+s
(это было бы 4000
).
find / -perm /u+s
или find / -perm /4000
находит только файлы, у которых установлен бит setuid. find / -perm /u+s
или find / -perm /6000
находит файлы, у которых установлен бит setuid или бит setgid.