2016-12-08 11 views
0

Я запускаю демона rsync (предоставляя зеркало подписи SaneSecurity).rsync daemon behair eratically

Rsync запускается как это (от runit):

/usr/bin/rsync -v --daemon --no-detach 

И конфигурации содержит:

use chroot = no 
    munge symlinks = no 
    max connections = 200 
    timeout = 30 
    syslog facility = local5 
    transfer logging = no 
    log file = /var/log/rsync.log 
    reverse lookup = no 
    [sanesecurity] 
     comment = SaneSecurity ClamAV Mirror 
     path = /srv/mirror/sanesecurity 
     read only = yes 
     list = no 
     uid = nobody 
     gid = nogroup 

Но что я вижу много "затяжной" RSync процессы:

# ps auxwww|grep rsync 
    root  423 0.0 0.0 4244 1140 ?  Ss Oct30 0:00 runsv rsync 
    root  2529 0.0 0.0 11156 2196 ?  S 15:00 0:00 /usr/bin/rsync -v --daemon --no-detach 
    nobody 4788 0.0 0.0 20536 2860 ?  S 15:10 0:00 /usr/bin/rsync -v --daemon --no-detach 
    nobody 5094 0.0 0.0 19604 2448 ?  S 15:13 0:00 /usr/bin/rsync -v --daemon --no-detach 
    root  5304 0.0 0.0 11156 180 ?  S 15:15 0:00 /usr/bin/rsync -v --daemon --no-detach 
    root  5435 0.0 0.0 11156 180 ?  S 15:16 0:00 /usr/bin/rsync -v --daemon --no-detach 
    root  5797 0.0 0.0 11156 180 ?  S 15:19 0:00 /usr/bin/rsync -v --daemon --no-detach 
    nobody 5913 0.0 0.0 20536 2860 ?  S 15:20 0:00 /usr/bin/rsync -v --daemon --no-detach 
    nobody 6032 0.0 0.0 20536 2860 ?  S 15:21 0:00 /usr/bin/rsync -v --daemon --no-detach 
    root  6207 0.0 0.0 11156 180 ?  S 15:22 0:00 /usr/bin/rsync -v --daemon --no-detach 
    nobody 6292 0.0 0.0 20544 2744 ?  S 15:23 0:00 /usr/bin/rsync -v --daemon --no-detach 
    root  6467 0.0 0.0 11156 180 ?  S 15:25 0:00 /usr/bin/rsync -v --daemon --no-detach 
    root  6905 0.0 0.0 11156 180 ?  S 15:29 0:00 /usr/bin/rsync -v --daemon --no-detach 

(это в настоящее время 15:30)

Итак, есть процессы (даже не имеющие льгот!), Висящих с 15:10, 15:13 и т. П.

И что они делают?

Давайте проверим:

# strace -p 5304 
    strace: Process 5304 attached 
    select(4, [3], NULL, [3], {25, 19185}^C 
    strace: Process 5304 detached 
    <detached ...> 

    # strace -p 5797 
    strace: Process 5797 attached 
    select(4, [3], NULL, [3], {48, 634487}^C 
    strace: Process 5797 detached 
    <detached ...> 

Это happended как с Rsync от Ubuntu дружественный, а также установить из PPA (в настоящее время с помощью Rsync 3.1.2-1 ~ ubuntu16.04.1york0)

ответ

1

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

Вы можете легко создать такой процесс.

nc $host 873 

Вы заметите, что соединение не будет закрыто после 30-х годов из-за тайм-аут только диск ввода/вывода тайм-аут. У клиента rsync есть опция --contimeout, но, похоже, отсутствует опция на стороне сервера.

1

В конце концов, я прибегал к вызову rsync из (x) inetd вместо его автономной работы.

service rsync 
    { 
     disable = no 
     socket_type = stream 
     wait = no 
     user = root 
     server = /usr/bin/timeout 
     server_args = -k 60s 60s /usr/bin/rsync --daemon 
     log_on_failure += USERID 
     flags = IPv6 
    } 

В качестве дополнительной твист, я завернул RSYNC вызов с тайм-аута, добавив еще одну защиту от длительных процессов.