pure-ftpdの設定&rsyncの設定

新しいVPSの設定はほぼ完了したのでバックアップ周りの設定をしました。WrodPressのデータなどをVPN経由のFTPで旧VPSへバックアップとるためにpure-ftpdの設定をしました。

問題はデーモンモードだとdbファイルを読めませんでした。原因が分からず調べまくってるうちにできてたみたいで今ひとつ納得がいきません。そこでinetdの起動にかえたところ納得できる結果になりました。

pure-ftpdの設定

/etc/inetd.conf

ftp     stream  tcp     nowait  root    /usr/sbin/pure-ftpd -O stats:/var/log/pure-ftpd/pureftpd.log       pure-ftpd -l puredb:/etc/pure-ftpd/pureftpd.pdb

/etc/default/pure-ftpd-common

STANDALONE_OR_INETD=inetd

/etc/pure-ftpd/pure-ftpd.conf

ChrootEveryone               yes
Daemonize                    no
NoAnonymous                  yes
PureDB                       /etc/pure-ftpd/pureftpd.pdb
MinUID                       100

ホームディレクトリのないユーザの作り方は検索で調べて次のようにしました。

groupadd ftpgroup -g 1123
useradd ftpuser -u 1122 -g ftpgroup -d /dev/null -s /etc

/etc/passwd

ftpuser:x:1122:1123::/dev/null:/etc

/etc/group

ftpgroup:x:1123:

pure-ftp専用のパスワード作成

sudo pure-pw useradd vftp -m -u 1122 -g 1123 -d /srv/ftp
sudo pure-pw mkdb

ユーザの削除

pure-pw userdel someuser

ユーザの確認

pure-pw list
pure-pw show someuser

port: 21/tcp

Note: ftpのモードにはアプティブモードとパッシブモードがあります。VPN経由でFirewallの状態によってはパッシブモードが使えない場合があります。

rsyncの設定

サーバ側:

/etc/default/rsync

RSYNC_ENABLE=true

/etc/inetd.conf

rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon

/etc/rsyncd.conf

charset = utf-8
uid = root
gid = root
use chroot = no
#use chroot = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
read only = yes
auth users = root
secrets file = /etc/rsyncd.secret

[etc]
path = /etc
read only = no
uid root
gid root

[var]
path = /var
read only = no
uid root
gid root

/etc/rsyncd.secret

root:<password>

port: 873/tcp

クライアント側:

export RSYNC_PASSWORD=<password>
rsync -a -v --delete rsync://root@<server IP>/etc $dir/etc
rsync -a -v --delete rsync://root@<server IP>/var $dir/var