なんか、世間では cvs の脆弱性を突かれて、オープンソースものを 公開しているcvsサーバが乗っ取られて大変らしい。
もちろん、悪さをする方が悪いが、cvsみたいな公共サーバをroot権限で 起動するのもどうかと思う。せっかくポート番号2401って 特権ポートじゃないのに、rootで起動しなくたっていいわけ。というか、するな。
tcpserverとdaemontools使いなはれ。
ついでに、chroot も噛ますと万全。
うちの /service/cvspserver/run
スクリプト。
#!/bin/sh ulimit -c 0 exec env - \ PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin \ HOME=/cvspsv \ chroot /var/chroot/cvsroot \ setuidgid anonymous \ tcpserver -vR -c4 -x/cvspsv/cvs.cdb 0 2401 \ cvs pserver 2>&1
setuidgidは、子プロセスを起動する前に UID/GID を変えるコマンド。 非特権ポートを掴むデーモンを起動する場合は setuidgid を使う。 いっぽう、特権ポートを使うデーモンを呼ぶ場合には envuidgid と tcpserver の -U オプションを組み合わせて使うべし。
え、どうやるかって? 自分で調べなはれ。