🐧 Как скопировать права доступа из одного файла в другой на Linux |

🐧 Как скопировать права доступа из одного файла в другой на Linux

Мануал

Представим сценарий, что нужно скопировать или клонировать права и разрешения на файл из другого файла на Linux.

Существует ли опция командной строки bash для клонирования прав собственности пользователя, группы и прав доступа в файл из другого файла в операционной системе Linux?

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

Для изменения режима файла, стикибитов (прав доступа) используется команда chmod.

Обе команды принимают опцию использования другого файла в качестве ссылки, известную как RFILE.

Другими словами, в Linux можно копировать разрешения из одного файла в другой с помощью команды chmod и опции —reference.

Синтаксис для клонирования прав из другого файла или каталога в Linux с помощью команды chmod

Синтаксис следующий: используйте режим RFILE вместо значений MODE:

chmod --reference=RRFILE FILE
chmod [options] --reference=RRFILE FILE
chmod --reference= target_file

Примеры: Права на копирование файлов, но не файлов

Перечислим оба файла:

  ls -l install58.iso xenial-server-amd64.iso
-rw-rw-rw- 1 libvirt-qemu kvm 230862848 Aug 16  2015 install58.iso
-rw-r--r-- 1 libvirt-qemu kvm 786432000 Mar 14 02:01 xenial-server-amd64.iso

Чтобы скопировать права на файл install58.iso в файл xenial-server-amd64.iso, введите:

chmod --reference=install58.iso xenial-server-amd64.iso

Проверим:

  ls -l install58.iso xenial-server-amd64.iso
-rw-rw-rw- 1 libvirt-qemu kvm 230862848 Aug 16  2015 install58.iso
-rw-rw-rw- 1 libvirt-qemu kvm 786432000 Mar 14 02:01 xenial-server-amd64.iso

Вы можете указать несколько файлов:

  chmod --reference=file.txt dest1.txt dest2.txt dest3.conf

Вы можете комбинировать и использовать команду find и команду xargs следующим образом:

find /path/to/dest/ -type f -print0 | xargs -O -I {} chmod --reference=/path/to/rfile.txt {}

Синтаксис для клонирования права владения из другого файла или каталога в Linux с помощью команды chmod

Чтобы использовать владельца и группу RRFILE, а не указывать значения OWNER:GROUP, синтаксис выглядит следующим образом

chown --reference=RRFILE FILE
chown [options] --reference=RRFILE FILE

Примеры: Скопируем права собственности на файлы

Чтобы скопировать права собственности пользователей и групп файла install58.iso в файл xenial-server-amd64.iso, введите:

chown --reference=install58.iso xenial-server-amd64.iso
ls -l

Копирование с помощью списков контроля доступа (ACL) в Linux

Linux тоже поддерживает ACL.

Используйте команду getfacl filename, чтобы узнать, включены ли ACL:

getfacl foo.txt

Если вы видите вывод, выходящий за рамки типичных прав Linux, значит, ACL включены.

# file: foo.txt
# owner: vivek
# group: vivek
user::rw-
user:chinu:rw-
user:marlena:rw-
group::rw-
mask::rw-
other::r--

Далее скопируйте ACL следующим образом:

getfacl reference_file | setfacl -b -n -M -- target_file
 getfacl reference_file | setfacl --set-file=- target_file
getfacl foo.txt | setfacl --set-file=- bar.txt
 getfacl foo.txt | setfacl -b -n -M -- bar.txt

Где:

  • –set-file=file Чтение записей ACL для установки из файла
  • -M Считать записи ACL для изменения из файла
  • -b Удалить все расширенные записи ACL
  • -n Не пересчитывать маску эффективных прав

Заключение

Вы узнали, как копировать разрешения из одного файла в другой в Linux, а также объяснения и соображения по поводу использования команд chown, chmod и getfacl.

Для получения дополнительной информации смотрите следующие страницы руководства, используя команду help или man:

man chown
 man chmod
 man getfacl
 man setfacl

см. также:

 

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий