Вы упомянули 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
параметр, который делает его рекурсивным. Однако вряд ли это полезно, когда вам нужно установить все разрешения одновременно, потому что вам почти всегда нужны другие разрешения для каталогов, чем для файлов, как в этом случае.
Invoking chmod -R 770 /backup/folder
устанавливает все файлы в нем как исполняемые файлы (для их владельца и группы), что редко является тем, что вы хотите. С другой стороны, chmod -R 660 /backup/folder
вы не сможете искать каталоги.
Запуск find -type … | xargs chmod …
(или find -type … -exec chmod … {} +
) с учетом каталогов и (отдельно) файлов - это путь.