3

После неудачной аварии с rsync, удаляющей неправильные файлы из-за неправильного параметра назначения, я хочу ограничить rsync (или выполняющий его скрипт bash) возможностью удалять / изменять файлы только в определенном каталоге. Я подумал о любом:

  1. создайте и запустите rsync/script под пользователем, у которого есть права доступа только к этому каталогу. Проблема здесь в следующем: как мне использовать / создать такого пользователя динамически? (Это часть сценария сборки, который должен "просто запускаться" для других пользователей).

  2. убедитесь, что пути назначения, указанные для rsync, находятся в определенном каталоге. Кажется, что направление использует команду test , но я не мог понять, как правильно ее использовать, и это не так безопасно, поскольку проверка параметра path все еще может не синхронизироваться с фактическим параметром path, который выполняется, поэтому я думаю (1) является более надежным.

2 ответа2

1

При использовании pubkey auth вы можете применить такое поведение с помощью файла авторизованного ключа и rrsync, который является частью rsync. Обычно он хранится в папке rsync docs, например, на коробке Debian в: /usr/share/doc/rsync/scripts/rrsync.gz

На целевой машине вам необходимо:

  • Извлеките скрипт в какое-нибудь место, например, " /usr/bin " или " ~/bin "
  • Установите авторизованный ключ в " ~/.ssh/authorized_keys "
  • Добавьте ключ с установленной опцией команды:

    command="/usr/bin/rrsync /foo/bar/baz" ssh-rsa AAAA[...]

При rsyncing с набором rootdir не забудьте изменить целевой путь, чтобы он был относительно данного rootdir.

0

Если вы можете запустить демон rsync по назначению, вы можете заранее определить, к каким каталогам (так называемым модулям) вы разрешаете доступ. Просто отредактируйте /etc/rsyncd.conf и добавьте что-то вроде:

[mydirectory]
        path = /tmp

Теперь вы можете передавать по протоколу rsync, используя псевдоним (модуль) вместо пути к каталогу:

rsync --delete /origin/dir rsync://$DEST_HOST/mydirectory

/mydirectory будет переведен в /tmp, и если вы неправильно введете mydirectory, вы получите ошибку, вместо того, чтобы испортить файлы.

Это был, пожалуй, самый простой пример, но вы также можете настроить аутентификацию и множество других параметров. Вы можете найти больше информации здесь:

http://linux.die.net/man/5/rsyncd.conf

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .