Представим сценарий, что нужно скопировать или клонировать права и разрешения на файл из другого файла на Linux.
Существует ли опция командной строки bash для клонирования прав собственности пользователя, группы и прав доступа в файл из другого файла в операционной системе Linux?
Чтобы установить владельца и группу файла, используется команда chown.
Для изменения режима файла, стикибитов (прав доступа) используется команда chmod.
Обе команды принимают опцию использования другого файла в качестве ссылки, известную как RFILE.
Другими словами, в Linux можно копировать разрешения из одного файла в другой с помощью команды chmod и опции —reference.
Синтаксис для клонирования прав из другого файла или каталога в Linux с помощью команды chmod
Синтаксис следующий: используйте режим RFILE вместо значений MODE:
Примеры: Права на копирование файлов, но не файлов
Перечислим оба файла:
Чтобы скопировать права на файл install58.iso в файл xenial-server-amd64.iso, введите:
Проверим:
Вы можете указать несколько файлов:
Вы можете комбинировать и использовать команду find и команду xargs следующим образом:
Синтаксис для клонирования права владения из другого файла или каталога в Linux с помощью команды chmod
Чтобы использовать владельца и группу RRFILE, а не указывать значения OWNER:GROUP, синтаксис выглядит следующим образом
Примеры: Скопируем права собственности на файлы
Чтобы скопировать права собственности пользователей и групп файла install58.iso в файл xenial-server-amd64.iso, введите:
Копирование с помощью списков контроля доступа (ACL) в Linux
Linux тоже поддерживает ACL.
Используйте команду getfacl filename, чтобы узнать, включены ли ACL:
Если вы видите вывод, выходящий за рамки типичных прав Linux, значит, ACL включены.
# file: foo.txt # owner: vivek # group: vivek user::rw- user:chinu:rw- user:marlena:rw- group::rw- mask::rw- other::r--
Далее скопируйте ACL следующим образом:
Где:
- –set-file=file Чтение записей ACL для установки из файла
- -M Считать записи ACL для изменения из файла
- -b Удалить все расширенные записи ACL
- -n Не пересчитывать маску эффективных прав
Заключение
Вы узнали, как копировать разрешения из одного файла в другой в Linux, а также объяснения и соображения по поводу использования команд chown, chmod и getfacl.
Для получения дополнительной информации смотрите следующие страницы руководства, используя команду help или man:
см. также:
- Как предоставить пользователю привилегии chown и chmod для определенного каталога в Linux
- 📷 Как отключить определенную команду для конкретного пользователя в Linux
- 🐧 Как сохранить права собственности и права доступа к файлам при копировании файлов или каталогов