У меня есть два файла в каталоге. Один имеет правильные разрешения, а другой нет. Есть ли способ, которым я могу «скопировать» набор разрешений из одного файла в другой?
14
У меня есть два файла в каталоге. Один имеет правильные разрешения, а другой нет. Есть ли способ, которым я могу «скопировать» набор разрешений из одного файла в другой?
GNU-версия утилиты chmod может копировать режим из одного файла ( RFile
) в другой ( file
).
chmod --reference=RFile file
GNU coreutils встречается в большинстве дистрибутивов Linux и Cygwin среди других мест. Не все реализации chmod предоставляют эту возможность.
--reference
опция включена в версии GNU; OSX, вероятно, использует вместо этого chmod , созданный с помощью BSD. OSX man chmod : developer.apple.com/Mac/library/documentation/Darwin/Reference/…cp -dpR <source-file> <dest-file>
при копировании файла будут копироваться разрешения, а также файл.rЯ придумал это:
Это не полностью пуленепробиваемое, но делает то, что мне нужно.
источник
попробуй это:
find /PATH/TO/TARGET -exec chmod --reference /PATH/TO/SOURCE/{} {} \;
это будет происходить многократно и chmod для каждого файла, если два файла не совпадают в файлах, вы увидите много ошибок «Нет такого файла или каталога».
источник
find /home/myubuntuuser/Desktop/test1 -exec chmod --reference /home/myubuntuuser/Desktop/test2/{} {} \;
Вы можете использовать
getfacl
для получения полного списка прав доступа к файлу, владельца, группы и дополнительных ACL (списки контроля доступа).Если вы сохраните этот вывод в файл (например
acl.txt
), вы можете восстановить из этого формата с помощьюsetfacl --restore acl.txt
. Если вы хотите восстановить только один файл, и этот файл имеет имя файла, отличное от исходного файла, вы можете использовать егоsetfacl --set-file acl.txt filename.txt
(гдеfilename.txt
новое имя файла).меры
Сохранить исходные разрешения для
acl.txt
:Разрешения на перезапись (для демонстрации; это просто для того, чтобы вы могли видеть, что восстановление на следующем шаге работает)
Используйте
setfacl
для восстановления правильных разрешений изacl.txt
:Имя файла взято из
# file:
комментария, сгенерированного пользователемgetfacl
, поэтому нет необходимости указывать его в командной строке.Если вы хотите восстановить эти разрешения в другом файле, вы можете использовать
--set-file
вместо--restore
этого:пример
Если в конечном итоге вы перезаписываете разрешения для некоторых файлов
/usr
, но не знаете, какие файлы вы перезаписали, вы обычно можете это исправить, восстановив из другой аналогично настроенной системы.Разрешения на резервное копирование из рабочей системы (примечание:
getfacl
генерирует относительные пути, поэтому убедитесь, что вы находитесьcd
в согласованном месте на обеих машинах)Скопируйте дамп ACL в систему с нарушенными разрешениями
Восстановите дамп ACL, чтобы перезаписать сломанные разрешения теми, которые получены на известной исправной машине.
источник