ограничить rsync (или сценарий bash) каталогом

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

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

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

2
задан 50-3
25.03.2023 18:39 Количество просмотров материала 2527
Распечатать страницу

2 ответа

при использовании pubKey auth, вы можете обеспечить такое поведение с помощью файла authorized_keys и 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.

1
отвечен toubsen 2023-03-27 02:27

Если вы можете запустить демон 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

0
отвечен mxlian 2023-03-27 04:44

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

bash
macos
permissions
rsync
shell
Вверх