Diffrence между “перманентом - режим” &\“ перманент / режим” в команде находки

Я прочитал страницу справочника для findно это не ясно для меня.

find -perm -mode ------>, по крайней мере, они бит (биты) должен быть установлен, чтобы файл соответствовал

Например: find -perm -754 находит 754,755,757,774,777

Что относительно? find -perm /754 объясните мне примерами

3
задан 26 September 2016 в 09:52

2 ответа

Это - в основном различие между всеми тремя битами (-mode) и любым единственным битом (/mode) тест подмножества разрешения (-perm).

  • find -perm -mode:

    В этом случае упомянутые биты полномочий должны присутствовать для файла. Например, если Вы сделаете find -perm -666 и если файл будет иметь 776, то он будет подобран. Так же 666, 777 и т.д. будет подобран также, но 665 не будет подобран. Таким образом, упомянутым (три) биты должно быть подмножество битов полномочий.

  • find -perm /mode:

    Здесь любой бит подмножества сделал бы. Например, если мы сделаем find -perm /666, и если файл будет иметь 644, то файл будет подобран, потому что полномочия пользователя укусили, 6, и мы ищем единственное разрядное подмножество. Точно так же 700, 060, 006 и т.д. будет подобран, но не, например, 444, поскольку никакой бит не содержит подмножества необходимых битов полномочий.

4
ответ дан 1 December 2019 в 15:53

Другой ответ правильно объясняет часть find -perm -mode. Однако этот ответ исправляет неверное утверждение о части find -perm /mode.

Здесь подойдет любой один бит подмножества. Например, если мы найдем -perm /666, и если файл имеет 644, файл будет сопоставлен, потому что бит разрешения пользователя равен 6, и мы ищем однобитовое подмножество. Точно так же будут совпадать 700, 060, 006 и т. д., но не, например. 444, так как ни один бит не содержит подмножества требуемых битов разрешения.

Первое предложение верно, однако часть, утверждающая, что 444 не будет сопоставлена, неверна.

-perm /mode соответствует, если совпадает любой бит разрешения, а не целое число.

При передаче /666 мы просим команду find искать файлы, которые имеют любой из следующих битов rw-rw-rw (6 = 4+2, что означает рв-). Таким образом, он будет соответствовать любому файлу, доступному для чтения или записи, или и тому, и другому для любого типа владельца (пользователя, группы или другого). Это означает, что не будут сопоставляться только файлы со следующими разрешениями: 000, 001, 010, 011, 100, 101, 110 и 111. Любое другое разрешение будет соответствовать -perm /666, так как ему будут назначены флаги чтения или записи.


Для получения дополнительной информации см. следующий пример.

for h in {0..7}; \
do for i in {0..7}; \
do for j in {0..7}; \
do for k in {0..7}; \
do \
touch $h$i$j$k; \
chmod $h$i$j$k $h$i$j$k; \
done; \
done; \
done; \
done 
find -perm /666 -printf '%04m %M\n' | grep 444
7444 -r-Sr-Sr-T
6444 -r-Sr-Sr--
5444 -r-Sr--r-T
4447 -r-Sr--rwx
4446 -r-Sr--rw-
4445 -r-Sr--r-x
4444 -r-Sr--r--
4443 -r-Sr---wx
4442 -r-Sr---w-
4441 -r-Sr----x
4440 -r-Sr-----
3444 -r--r-Sr-T
2444 -r--r-Sr--
1444 -r--r--r-T
0444 -r--r--r--

Таким образом, единственное, что не совпадает, это файлы с разрешениями, не содержащими 2 или 4: т.е.все файлы, которые содержат только 1 или 0:

# remove special permissions (since it was 0 every file that matches and only differs in the set of special permissions is found again)
find \! -perm /666 -printf '%04m %M\n' | grep '^0'| sed 's/ .../ /g'
0111 x--x--x
0110 x--x---
0101 x-----x
0100 x------
0011 ---x--x
0010 ---x---
0001 ------x
0000 -------

можно немного уточнить:

при следующих разрешениях

  • WXYZ: права доступа к файлам (например, 0755 W=0, Z=5)
  • wxyz: права поиска
  • w&W > 0, если хотя бы один бит соответствует

/ — это операция ИЛИ: возврат w&W || х&Х|| г&Г || z&Z

т.е. вернуть, если файл содержит какое-либо разрешение (W-Z), которое соответствует (по крайней мере) искомым разрешениям (w-z).

пока - является операцией И: возврат w&W && x&X && y&Y && z&Z

т.е. вернуть, если файл содержит все разрешения (W-Z), соответствующие (как минимум) искомым разрешениям (w-z).

В обоих случаях это может означать, что W установил более чем w битов. (6 сетов 2 и 4, но не 3 или 1)

1
ответ дан 27 January 2021 в 12:37

Другие вопросы по тегам:

Похожие вопросы: