LPIC 102試験の勉強中。
ftpをsystemdでなくxinetdで起動してみる。
install ftp
一番ハマったのがftp側の設定。
適当に触ったときに hoge=NO
を hoge=NO
と後ろにスペースを入れたら起動しなくて起動しなくて....
古いライブラリはそういう気持ちで付き合いましょう。
(通信チェックだけなら別にftp loginできなくてもいいので、サービス起動さえしてればよかったりする。悔しかったので。)
まずftpサービスを起動する
# install
yum install -y vsftpd ftp
# ftpサーバの設定
vim /etc/vsftpd/vsftpd.conf
# listenを有効にする
listen=YES
#listen=NO
# ipv6コメントアウト
#listen_ipv6=YES
# 一番下にこれを追加
userlist_deny=NO
ログインユーザの設定
# rootで使えるようにする
vim /etc/vsftpd/ftpusers
root の行をコメントアウトする
#root
# 起動して試す
systemctl start vsftpd && systemctl status vsftpd
ここで起動中のport, processの関係を見ておく
# port状況を確認
[root@cent70 vsftpd]# netstat -na | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
# processのリレーションを確認
[root@cent70 vsftpd]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
└─vsftpd
systemdの下にvsftpdが起動しているのがわかる。ここがxinetdでは変わるはず。
次に、ここにftp接続されるとpstreeがどう変わるか見ていく。systemdなftpに接続してみる。
# ftp 接続してみる
ftp localhost
Name: root # ここで Name: と来ていればftp通信はできてることになる
Password: *** # rootの普通のpassword, sshで使ったりするやつ
ftp> dir # ファイル一覧出ればok
この接続中のpstreeを別terminalから確認する。
[root@cent70 vsftpd]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
└─vsftpd───vsftpd───vsftpd
systemd
の下にvsftpdが連なって何個も起動している。
xinetdを設定していく
こちらを参考にした
まずvsftpdを止める
systemctl stop vsftpd
# port が消えたか確認
[root@cent70 vsftpd]# netstat -na | grep 21
なし
vsftpdのlistenを無効にしておく
vim /etc/vsftpd/vsftpd.conf
#listen=YES
listen=NO
xinetdにvsftpd用の設定を作る
vim /etc/xinetd.d/vsftpd
# default: off
# description: The vsftpd FTP server serves FTP connections. It uses \
# normal, unencrypted usernames and passwords for authentication.
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd.conf
nice = 10
disable = no
flags = IPv4
}
xinetdを起動
systemctl start xinetd && systemctl status xinetd
ポートとプロセスをチェク!
[root@cent70 vsftpd]# netstat -na | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
[root@cent70 vsftpd]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
└─xinetd
ポートが空いてる & xinetd がプロセスに変わっています!
ではftp接続してftpをxinetd経由で起動してみよう
# ftp 接続してみる
ftp localhost
Name: root # ここで Name: と来ていればftp通信はできてることになる
Password: *** # rootの普通のpassword, sshで使ったりするやつ
ftp> dir # ファイル一覧出ればok
接続したままの状態で pstree
を見てみよう!
[root@cent70 xinetd.d]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
└─xinetd───vsftpd───vsftpd
キタ━━━━(゚∀゚)━━━━!! xinetd が親の形でvsftpdが連なっています!
まとめ
xinetdを使うと vsftpc が単体でlistenしなくてよくなった
でも結局xinetdがport開けっぱなしでlistenするのね。その瞬間だけ開く、とかじゃないのか...
サービス起動なんて大した負荷じゃないし今のサーバだとほんと意味なさそう。。。
inetdをインストールしようとしたらxinetdが入ったのでこれをやった。inetdはどうやってcent7で試すんだろう。。。