Как скопировать файлы и одновременно изменить права и разрешения

В этом кратком руководстве описывается, как копировать файлы и одновременно изменять права и разрешения из командной строки в Unix-подобных операционных системах. Обычно мы используем команду «cp» для копирования файлов из одного места в другое. Затем мы используем команды «chmod» и «chown» для изменения прав доступа и прав собственности на файл, соответственно. Тем не менее, мы можем объединить все эти задачи в одну команду и получить тот же результат, вместо запуска трех последовательных команд. Это может быть полезно, когда вы хотите делать это на регулярной основе или внутри скрипта.

Рассмотрим следующий пример.
Чтобы скопировать файлы и изменить права доступа и права собственности, мы делаем следующее:

$ cp /dir1/file1 /dir2
$ chmod 775 -R /dir2
$ chown -R newowner:newgroup /dir2/file1

Однако вам не нужно использовать три команды для этой простой задачи. Мы можем сделать это с помощью одной команды. В этом случае на понадобится всего одна команда - «install» .

Я думал, что команда «install» предназначена для установки программ. Но я был неправ! Команда «install» используется для копирования файлов в выбранное вами место назначения и установки атрибутов. Команда является частью GNU coreutils, поэтому она входит по умолчанию во все дистрибутивы Linux.

Теперь попробуем изменить права доступа и права собственности на файл во время копирования.

$ sudo install -C -m 775 -o newowner -g newgroup /dir1/file1 /dir2

Вышеприведенная команда скопирует файл file1 из каталога /dir1 в каталог /dir2, изменит разрешения файла на 775, владельца на newowner и группу на newgroup.

Давайте разложим по полочкам вышеприведенную команду и посмотрим, что делает каждая часть команды.

-C, (–compare) сравнивать каждую пару файл источника и назначения, и, в некоторых случаях, вообще не изменять файл назначения
-m, (–mode) устанавливать режим разрешений (как chmod)
-o, (–owner) устанавливать владельца
-g, (–group) устанавливать группу пользователей

Более детально с аргументами команды можно ознакомиться в man

$ man install

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