-флаг перми в поиске

Bash сбрасывает привилегии при запуске, поэтому вы не часто будете сталкиваться с процессом bash, работающим с разными действующими и реальными UID. Это возможно с другими реализациями sh.

Обратите внимание: если вы хотите проверить, работает ли ваш скрипт от имени пользователя root, проверьте правильность EUID, и вам не нужно заботиться о реальном UID.

И даже проверка EUID часто неверна. Как узнать, что требуется root-доступ? Возможно, все файлы и устройства имеют разрешения, которые позволяют пользователю без полномочий -получить к ним доступ, и если вам нужно использовать некоторые инструменты, которые требуют привилегий, не контролируемых разрешениями на доступ, ваш сценарий может работать с требуемыми возможностями, или может быть имитирован (, т.е. смоделирован в целях тестирования ).

2
06.09.2020, 14:49
3 ответа

В руководстве вы можете найти:

Operators
              Operators join together the other items within the expression.
              They include for example -o (meaning logical OR) and -a
              (meaning logical AND).  Where an operator is missing, -a is
              assumed.

Таким образом, буквально \( -perm -0002 -a ! -perm -1000 \)означает :допуск = 0002, а не допуск = 1000

perm = 0002 означает возможность записи для других
perm = 1000 означает, что установлен липкий бит.

Таким образом, это выражение ищет файл, доступный для записи для другого и без наборов липких битов.

Поиск каталога выполняется с помощью-type ddозначает каталог, поэтому найдите объект типа каталог

Из руководства по поиску -permимеет несколько форм:

  • -perm 0002будет соответствовать всем файлам с точно такой же настройкой разрешений
  • -perm -0002будет соответствовать всем файлам, в которых установлен этот правый бит, (, что означает 0772, 1752... любая комбинация, если файл доступен для записи для других)
4
18.03.2021, 23:07
  • -a:является логическим И(-oможет использоваться для ИЛИ)
  • \(,\):поскольку круглые скобки имеют особое значение в оболочке, для их экранирования используется косая черта
  • четырехзначные -разрешения связаны с sticky bit, setuid,setgid
2
18.03.2021, 23:07

В -type d \( -perm -0002 -a ! -perm -1000 \), во-первых, косая черта выходит за скобки для оболочки, поэтому они могут быть переданы в качестве аргумента вместо того, чтобы интерпретироваться оболочкой как специальные операторы. (Вам понадобится то же самое, например, для. >, по понятным причинам. )Они могли быть записаны как '('или "(", но в итоге findвидит только (и ).

Скобки группируют условия, а -aявляется конъюнкцией и . Это также неявное значение по умолчанию для условий перехода назад -в -, например, использованное здесь с -type dи выражением в скобках, их явное -aне связывает. Выражение точно эквивалентно -type d -perm -0002 ! -perm -1000. Скобки действительно нужны только с союзом или -o.

-type dочевидно, а -perm -NNNNозначает поиск файла с установленными всеми битами разрешения NNNN. Или, в этом случае, каталоги с установленным разрешением на запись для других (0002), а бит закрепления(1000)не установлен (из-за отрицания ). Я думаю, что комбинация здесь также может быть записана как -perm -o+w ! -perm -o+t. Обратите внимание на тире перед строкой разрешения, без него смысл был бы другим. См., например.справочная страница Linux для find , найдите «(expr )» и «-perm mode».

Доступ на запись к каталогу позволяет создавать, удалять и переименовывать файлы внутри него, а липкий бит предотвращает удаление и переименование файлов, принадлежащих другим пользователям. Все выражение ищет каталоги, в которых любой может удалить или переименовать любые файлы.

5
18.03.2021, 23:07

Теги

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