Что делают эти две строки?
find /backup/folder -type d|xargs chmod 770
find /backup/folder -type f|xargs chmod 660
Я погуглил, но не могу понять, что делают d|xargs
и f|xargs
.
Вы упомянули 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 … {} +
) с учетом каталогов и (отдельно) файлов - это путь.