2013-11-18 3 views
2

Я пытаюсь запустить rsync в режиме демона на одной машине, называемой node0. Я хочу, чтобы машина принимала соединения только с node0 (self) или node1 (какая-то другая машина, которая определена)ограничение rsync в режиме демона

Единственный путь, который я хочу использовать для использования/tmp /. Чтобы любая операция чтения/записи на любой другой путь была запрещена, для любой машины-оригинатора.

Я не хочу, чтобы пользовательские ограничения или rsync выполнялись по ssh.

Я настроил /etc/rsyncd.conf следующим образом:

syslog facility = syslog 
max verbosity = 3 
log file = /var/log/mylog.log 
port = 873 

[Proj1] 
path = /tmp/ 
include = /tmp/ 
exclude = * 
comment = some comment 
hosts allow = node0, node1 
hosts deny = * 
max verbosity = 3 
log file = /var/log/filedistributer.log 

Я не выполнять Rsync в режиме демона с помощью следующей команды:

/usr/bin/rsync --daemon --config=/etc/rsyncd.conf --verbose 

чем из node1 я бегу: rsync -a test.out node0:/tmp/ и он работает правильно.

Но если я запустил: rsync -a max.out node0:/someOtherDir, и он также работает - там, где он не должен.

Если я иду на другую машину и запустить:

rsync -a someFile.out [email protected]:/someOtherDir 

Он просит меня разрешить ключ SSH и введите пароль для суперпользователя, после этого копий I файла ... Это не должно быть.

Что мне не хватает? Ни один из моих ТРЕБОВАНИЯМ не будут выполнены:

  1. Rsync использует SSH, когда он не должен
  2. Rsync не ограничивает хозяев.
  3. Rsync не ограничивает папки

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

2013/11/18 12 : 32: 35 [22289] rsyncd версия 3.0.6 запуска, прослушивания на порт 873

Кроме того еще одна проблема, я сталкиваюсь, что если я запускаю команду Rsync от NODE0 к node1, это STI ll удастся, даже без меня запуск rsync в режиме демона на node1.

Ваша помощь в использовании.

Спасибо, Макс.

+1

Есть два способ для Rsync, чтобы связаться с удаленной системой: с помощью программы удаленной оболочки, как транспорт (такие как ssh или rsh) или обращение к демона rsync непосредственно через TCP. Поэтому, когда вы связываете его с node0 на node1, это, вероятно, то, что вы делаете, в этом случае удаленная оболочка вызывает сервер rsync на node1 (с произвольным портом - вы можете проверить это, чтобы проверить мое предположение) –

+1

Используйте двойные двоеточия для подключения к демон rsync непосредственно вместо того, чтобы запустить ssh. 'rsync -a test.out node0 :: Proj1 /' (хост ** :: ** share) – mivk

ответ

1

Так после некоторого копания, что я придумал, что:

  1. По умолчанию при запуске Rsync будет пытаться использовать SSH в качестве транспорта, поэтому он SSH, чтобы машины назначения и вызывает Rsync там. Для использования потребуются действительные учетные данные на машине назначения. Невозможно избежать этого - кроме удаления демон ssh с конечного компьютера. Чтобы ограничить работу rsync в этом режиме, на самом деле требуется ограничить использование ssh или rsh (или любой другой оболочки в качестве транспорта) от приема соединений от несвязанных хостов. Тем не менее, по-прежнему невозможно заставить хосты «белого списка» работать только в желаемых папках в этом режиме.

  2. Мои ограничения в RSync в режиме демона с помощью rsyncd.conf правильны, и они работают, но для того, чтобы использовать протокол TCP в качестве транспортного слоя, а не SSH, то необходимо использовать Rsync иначе

    Rsync Rsync: // NODE0/proj1

Это будет на самом деле сделать Rsync пройти через соединение TCP и подключение к Rsync демона по назначению.

Очень valueble источник информации о том, как RSYN работы можно найти в ссылке ниже: http://rsync.samba.org/how-rsync-works.html

0

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

+0

Он читается - если я подключаюсь с rsync от другого узла к этому, с: rsync rsync:// node0 Я вижу модуль, который я раскрыл в файле конфигурации. Дело в том, что даже если я ограничу все хосты, чем синтаксис вопроса как-то работает. От того, что я вырыл, это может быть связано с тем, что rsync проходит через SSH-туннель и не переходит непосредственно к демону rsync ... Я просто не знаю, как предотвратить это –

+0

. Текущая версия rsync использует ssh по умолчанию поэтому здесь нечего мешать, вы можете, если хотите изменить удаленную оболочку на что-то еще, конечно, с флагом -e –

Смежные вопросы