Найдите и отличия между -perm /6000 и -perm /u+s

Найдите и отличия между -perm /6000 и -perm /u+s

Я пытался найти исполняемые файлы 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.

Связанный контент