Назад | Перейти на главную страницу

Применение схем владения с другого сервера

Допустим, есть два недавно установленных выделенных сервера с идентичным программным обеспечением и пользователями на обоих.

Предположим, что по какой-то причине я хотел бы скопировать схемы владения с одного из этих серверов на другой. Это возможно?

Первый абзац почти не имеет смысла, но ваш вопрос:

Могу ли я восстановить и настроить права доступа к файлам и права собственности, используя другой сервер в качестве ссылки / шаблона?

Короткий ответ: возможно ...

Более длинный ответ заключается в том, что такая стратегия не сработает для каждого файла, который не существует на обоих серверах. Что касается сценариев, вам нужно будет особенно внимательно относиться к специальным файлам, (символическим) ссылкам, специальным символам в именах файлов / каталогов и т. Д. И т. Д.

Но как chmod и chown команды поддерживают --reference флаг. Вы можете указать на существующий файл и chmod будет использовать разрешения этого файла вместо того, чтобы вам нужно было указывать значения MODE при изменении режима файла.
так же chown будет использовать владельца и группу этого справочного файла / каталога, а не указывать значения OWNER: GROUP.

Тогда упражнение:

  1. Сделайте источник, необходимые вам ссылочные деревья каталогов доступными в качестве шаблона на целевом сервере. (Если у вас достаточно свободного места, просто скопируйте исходный каталог, сохранив права собственности и настройки режима, или, в качестве альтернативы, используйте, например, NFS, чтобы экспортировать дерево исходных каталогов и смонтировать его как шаблон.)
  2. Затем запустите эти грубые find команды, которые выполняют chown и chmod:

(Обратите внимание, что это только концептуальные и непроверенные. Пожалуйста, добавьте ограничения для find чтобы, например, только найти файлы и каталоги и опустить следующие символические ссылки и тому подобное ... )
Чтобы сбросить права собственности и режимы на поврежденном /etc/:

cd /template/etc
find . -exec chmod -v --reference='{}' /etc/'{}' \;
find . -exec chown -v --reference='{}' /etc/'{}' \;