1

Что делают эти две строки?

find /backup/folder -type d|xargs chmod 770
find /backup/folder -type f|xargs chmod 660

Я погуглил, но не могу понять, что делают d|xargs и f|xargs .

1 ответ1

3

Вы упомянули d|xargs и f|xargs но ничего из этого не имеет смысла само по себе. Первая команда может быть записана как:

{ find /backup/folder -type d ; } | { xargs chmod 770 ; }

Таким образом, вопрос может быть: что find … | xargs … делать? Он берет то, что find выходные данные и делает его аргументами того, что находится после xargs

В первой команде find находит все каталоги в /backup/folder (включая /backup/folder . Затем xargs выполняет:

chmod 770 <all_these_directories_here>

В результате все эти права доступа к каталогам теперь равны 770 (если вы не могли изменить их в первую очередь). Это означает полный доступ для владельца, группы, без доступа для других пользователей.

Вторая команда пытается установить 660 разрешений для всех файлов (из-за -type f) в /backup/folder . Это означает, что права на чтение и запись для владельца одинаковы для группы, нет доступа для других пользователей.


Обратите внимание, что в chmod есть опция -R которая делает его рекурсивным. Однако вряд ли это полезно, когда вам нужно установить все разрешения одновременно, потому что вам почти всегда нужны другие разрешения для каталогов, чем для файлов, как в этом случае.

Вызов chmod -R 770 /backup/folder устанавливает все файлы в нем как исполняемые файлы (для их владельца и группы), что редко является тем, что вам нужно. С другой стороны, chmod -R 660 /backup/folder не позволит вам искать каталоги.

Запуск find -type … | xargs chmod … (или find -type … -exec chmod … {} +) с учетом каталогов и (отдельно) файлов - это путь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .