
Home > FTPサーバ > vsftpdの設定(共有ディレクトリ)
| vsftpdの設定 - 共有ディレクトリ編 - |
このページでは、vsftpdを使用してFTPサーバの構築を行います。ここで設定する仕様としては、
全てのユーザが1つのディレクトリにアクセスするような設定をします。
このような仕様にした場合には、何かの情報などを複数のユーザで共有するのに便利です。
このように複数のユーザが1つのディレクトリに対してアクセスできる場合に注意点が1点あります。
それはファイルの削除に対しての権限です。自分がアップしたファイルを他のユーザが削除できない
ようにするのがセキュリティ上、安全だと言えます。
このページでは以上を踏まえて、先ずはvsftpdの設定を行い、次に削除に対する権限の
設定をしていきます。
| vsftpdの設定(共有ディレクトリ) |
先ずはvsftpdがインストールされているか確認し、無い場合にはインストールを行います。
| # rpm -q vsftpd ←インストールされてるかの確認 # yum -y install vsftpd ←入ってない場合はインストール |
vsfptdの設定ファイルは、/etc/vsftpd/vsftpd.confになりますので、早速編集していきます。
| # vi /etc/vsftpd/vsftpd.conf anonymous_enable=YES ←12行目 ↓ anonymous_enable=NO ←NOに。アノニマス接続は拒否 xferlog_enable=YES ←38行目 xferlog_file=/var/log/vsftpd.log ←追加。/var/log/vsftpd.logへログを記録 #idle_session_timeout=600 ←57行目 ↓ idle_session_timeout=600 ←コメント解除 #ascii_upload_enable=YES ←81、82行目 #ascii_download_enable=YES ↓ ascii_upload_enable=YES ←コメント解除 ascii_download_enable=YES chroot_local_user=YES ←96行目付近に追加 local_root=/var/ftp/pub ←追加。共有ディレクトリの指定 #ls_recurse_enable=YES ←104行目 ↓ ls_recurse_enable=YES ←有効にするとディレクトリごと削除できるようになる use_localtime=YES ←追加。タイムスタンプを日本時間に合わせる userlist_enable=YES ←追加。ユーザごとのアクセス制御 (行数については、あくまでも目安です) |
以上で設定は完了です。上の記述について何点か説明したいと思います。
anonymous_enableですが、これは匿名でのアクセスを許可するかどうかです。
プライベートな環境で使いたい場合には必ず、NOにしてください。
idle_session_timeout=600の指定は、接続して10分間何も無い状態だと接続状態では無くなるという設定です。
ascii_upload_enableとascii_download_enableは、アスキーモードを有効にするかどうかの設定です。
テキストファイルなどを転送する機会がある場合には、ここの2つは有効にしておきます。
Windowsで編集したテキストファイルをアスキーモードでは無くバイナリモードで転送すると、
そのまま転送します。LinuxとWindowsとでは、改行コードが異なるので、この場合には、
テキストファイルの中身がぐちゃぐちゃになってしまいます。
chroot_local_user=YESは96行目付近にchrootと書かれた行が見当たると思いますので、
その付近に追加しておきます。これは、各ユーザが移動できる範囲の限定です。
これを設定することによって、ルートディレクトリよりも上に移動できなくなります。
またこのすぐ近くにでもlocal_root=/var/ftp/pubを追加しておきます。
これは、共有ディレクトリのパスの指定になります。
この2つの設定より、全てのユーザは/var/ftp/pubにアクセスし、そこより上層へは行けない
という設定になりました。
userlist_enable=YESは、ユーザごとのアクセス制御です。
この設定をしないと全てのユーザがFTPにアクセスできるようになっています。
なので、今回設定したFTPの共有ディレクトリにアクセスさせる必要の無いユーザや
アクセスさせたくないユーザを制限する必要があります。上の記述を追加してから
次に以下のファイルを開き、アクセスさせたくないユーザの記述を行います。
| # vi /etc/vsftpd.user_list chibi ←ユーザ名を記述 |
ここでは例として、chibiユーザをFTPにアクセスできないようにしてみました。
1行につき1ユーザを記述します。
次に、共有に使うディレクトリを、複数のユーザがアクセスでき、ファイルを見たり、書き込んだり
できるようにしておきます。以下のようにして、パーミッションの設定を行います。
| # chmod 777 /var/ftp/pub |
それでは、vsftpdを起動し、自動起動オンにする設定にします。
| # service vsftpd start # chkconfig --level 345 vsftpd on |
またFTPはポートの20番と21番を使用します。
当サイトのファイアウォールスクリプト使用の場合は、そのままでOKです。
スクリプトを使用せず、iptableを有効にしている場合は、以下のような記述を追加してポートをオープンし、
設定を反映させる為iptablesを再起動させます。
| # vi /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT # service iptables restart |
| スティッキービットの設定をして、削除権限を制限する |
上では、/var/ftp/pubというディレクトリを共有ディレクトリにして、複数のユーザをここにアクセスさせ、
ファイルの追加や削除を行なえるようにしました。ただ、問題点としては、Aというユーザがアップした
ファイルを、Bというユーザが削除できるという点です。全ての人が全てのファイルを削除することが
可能なのです。
このような設定ではなく、Aというユーザがアップしたファイルはみんな見ることが可能だが
削除は、全てのユーザができるのでは無く、Aだけができるようにしたい。という設定にしたい場合には、
スティッキービットの設定を行なう必要があります。
以下のようにして、/var/ftp/pubのパーミッションを変更します。
| # chmod 1777 /var/ftp/pub |
先ほどは、777としましたが、ここでは1777としました。これで、ファイルをアップしたユーザだけが
削除可能になります(注:このディレクトリ自体の所有者も削除可能です)。
ディレクトリに対して、wの権限(書き込み権限)を与えると、そのディレクトリの中にファイルを
書き込めると同時に、そのディレクトリの中のファイルを削除することもできてしまうのです。
かと言って、wの権限を外してしまうと今度は書き込みが出来なくなります。
書き込み権限は与えるが、削除権限は与えないとしたい場合には、上で行なった
スティッキービットの設定をする必要があるのです。
最終更新 : 05/31/2005