FTPは既に RedHat Linux 6.2 をインストールした時から、WU-FTPが動作しています。
FTPでぜひやりたいのはユーザディレクトリより上の階層のディレクトリファイルを見せないことです。
この設定はもちろん WU-FTPでもできるのですが、設定が面倒なこととユーザディレクトリに ls コマンド等を設置しなければならないので、ユーザ管理が複雑になります。
これに対して ProFTPは断然、ユーザ管理がし易いのです。
現在、ProFTPに人気があるのが判ります。
バーチャルディレクトリ設定ができるので、ユーザが見られるディレクトリの制限が簡単にかけれます。
しかも設定ファイルはまるで Apache みたいで、(Apache を見なれている人には)直感的に理解できます。
幸い WebminにもProFTPを管理する仕組があります。
ProFTPをインストール
-
ProFTPサイト
から最新版の proftpd-1.2.8.tar.gz をダウンロードして /usr/local/src ディレクトリに入れます。
-
カレントディレクトリを /usr/local/src にし、次のコマンドを実行します。
# tar xvzf proftpd-1.2.8.tar.gz
# cd proftpd-1.2.8
# ./configure
# make
# make install
これで ProFTPのインストールは完了です。
nogroupグループの作成
-
Webmin から
システム
をクリックし、そこに表示される
ユーザおよびグループ
アイコンをクリックします。
-
ローカルグループ
メニューにある
新しいグループを作成
をクリックすると
グループの詳細
が表示されます。
-
グループの詳細
グループ名を
nogroup
、グループIDを
201
に設定します。
そして
作成
をクリックします。
/etc/shells の作成
以下のような /etc/shells ファイルを作成します。
ここに記述がない shellコマンドを使うユーザは FTPにログインできません。
特に
/usr/bin/passwd
は必ず記述します。
# cat /etc/shells
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/bash2
/bin/tcsh
/bin/csh
/usr/bin/passwd
/etc/ftpusers の作成
以下のような /etc/ftpusers ファイルを作成します。
ここには
FTPでのログインを許可しないユーザ
を記述します。
特に
root
は必ず記述します。
以下の例では root, bin, boot などのユーザをログイン不許可にしています。
# cat /etc/ftpusers
root
bin
boot
adm
daemon
games
gopher
halt
lp
mail
named
news
operator
postgres
shutdown
sshd
sync
uucp
xfs
/usr/local/etc/proftpd.conf の編集
以下が編集した /usr/local/etc/proftpd.conf の内容です。
Anonymous FTP は公開しないので、この項目を全てコメントアウトしました。
ServerName "ProFTPD Default server" ・・・ログイン時のコメント
ServerType inetd ・・・inetd から起動
DefaultServer on
Port 21 ・・・ポート21を使用
Umask 022 ・・・ファイルPUT時のアクセス権
MaxInstances 30
User nobody ・・・ユーザ認証されるまでの間のユーザ権限
Group nogroup ・・・(同上)
DefaultRoot ~ ・・・各ユーザディレクトリより上の階層が見えない
<Directory />
AllowOverwrite on ・・・書込許可
</Directory>
#<Anonymous ~ftp>
# User ftp
# Group ftp
# UserAlias anonymous ftp
# MaxClients 10
# DisplayLogin welcome.msg
# DisplayFirstChdir .message
# <Limit WRITE>
# DenyAll
# </Limit>
#</Anonymous>
#<Global>
#</Global>
/etc/inetd.conf の編集
/etc/inetd.conf 記述のうち
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
を以下のように書き直します。
ftp stream tcp nowait root /usr/sbin/tcpd in.proftpd
/usr/sbin/in.proftpd を作成
次のコマンドを実行して /usr/sbin/in.proftpd に proftpd のソフトリンクを張ります。
# ln -s /usr/local/sbin/proftpd /usr/sbin/in.proftpd
inetd の再起動
# kill -HUP `cat /var/run/inetd.pid`
以上で ProFTP がアクセス可能になっています。
以下のことを確認してください。
- shell を与えられたユーザでFTPログインでき、SSHログインもできること。
- shell に /noexistent(shellなし。)を与えられたユーザでFTPログインでき、SSHログインできないこと。
- root でログインできないこと。
- FTPログインできたユーザが自分のディレクトリ以下のファイルが参照できるが、上位のディレクトリが見れないこと。
WebminからProFTPを管理
WebminからProFTPサーバを管理できるように設定します。
今回は設定を全てエディタを使って行ったので、ここでは設定情報とリンクさせるだけです。
以降の ProFTP のメンテナンスは Webminからやったほうが楽です。
-
ProFTPD Server
Webmin から
サーバ
をクリックし、そこに表示される
ProFTPD Server
アイコンをクリックします。
-
モジュール設定
モジュール設定
をクリックするとこのような画面が表示されるので、設定内容はこの通りに入力して
保存
をクリックします。
-
これまでに設定した内容が Webmin にてどのように反映されているかを確認してください。