LinuxのFTP ツール「vsftpd」の設定ファイルを説明します
設定ファイルは”/etc/vsftpd”配下にあります
結構奥が深いので、細かく記事を書きました
【環境】
vsftpd version 2.0.5
設定ファイル
■vsftpd.conf
VSFTPDの基本設定ファイル
anonymous_enable=[YES|NO] (Default:YES)
匿名ユーザ(“ftp”、”anonymous”)のログインを許可する
local_enable=[YES|NO] (Default:YES)
ローカルユーザのログインを許可する
write_enable=[YES|NO] (Default:YES)
ファイルシステムを直接変更するようなFTPコマンド(以下)を許可する
delete : ファイル削除
rename : ファイル名変更
mkdir : ディレクトリ作成
rmdir : ディレクトリ削除
append : データ追加
site : 拡張(任意のOSコマンドを実行)
put : ファイルのアップロード
local_umask=numeric (Default:022)
ローカルユーザがディレクトリやファイルを作成する際に使用されるumaskを指定する
また、リモートに put する際も同様となる(上記の場合だとパーミッションは -rw-r–r– (644) となる)
anon_upload_enable=[YES|NO] (Default:NO)
匿名ユーザがファイルをアップロードすることを許可する。 write_enableオプションが有効になっており
親ディレクトリに匿名ユーザに対する書き込み許可が設定されていること
anon_mkdir_write_enable=[YES|NO] (Default:NO)
匿名ユーザが新規ディレクトリを作成することを許可する。 write_enableオプションが有効になっており
親ディレクトリに匿名ユーザに対する書き込み許可が設定されていること
dirmessage_enable=[YES|NO] (Default:YES)
ユーザが新しいディレクトリに初めて移動したとき、メッセージを表示する。メッセージを格納するファイルはmessage_file=<PATH>オプションで指定できる
xferlog_enable=[YES|NO] (Default:YES)
ファイルのアップロードとダウンロードをログファイルに記録する
connect_from_port_20=[YES|NO] (Default:YES)
データコネクションを20番で固定するかの設定
これを”NO”にするといわゆる、パッシブFTP となる
chown_uploads=[YES|NO] (Default:NO)
匿名ユーザがアップロードしたファイルの所有者を、chown_usernameオプションで指定したユーザにする
chown_username=<ユーザ名> (Default:whoever (comment out))
匿名ユーザがアップロードしたファイルの所有者を指定する
chwon_uploadオプションが有効であれば、このオプションの設定は有効
xferlog_file (Default:/var/log/xferlog)
xferlog_std_format に対するログ出力先
xferlog_std_format=[YES|NO] (Default:YES)
ログ出力を wu-ftpd フォーマットで行う。出力先ファイルは xferlog_file で指定したものとなり
“NO” の時の出力先は vsftpd_log_file で指定したファイルとなる
idle_session_timeout=numeric[sec] (Default:600 (comment out))
リモートクライアントのアイドルが指定した時間を超過した場合、切断する
data_connection_timeout=numeric[sec] (Default:120 (comment out))
FTPセッション確率後、データを転送しない時間が指定した時間を超過した場合、切断する
nopriv_user=<ユーザ名> (Default:ftpsecure (comment out))
vsftpdが使用する非特権ユーザを指定する
async_abor_enable=[YES|NO] (Default:NO)
“非同期 ABOR”コマンドを有効にする。ファイル転送をキャンセルしようとすると
ハングアップしてしまうクライアントもあるらしいので、その場合にこのオプションを有効にする
ascii_download_enable=[YES|NO] (Default:NO)
asciiモードのダウンロードを許可する。無効にすると、すべてbinaryモードでダウンロードされる
ascii_upload_enable=[YES|NO] (Default:NO)
asciiモードのアップロードを許可する。無効にすると、すべてbinaryモードでアップロードされる
ftpd_banner=<messege> (Default:Welcome to blah FTP service. (comment out))
サーバに接続したとき(ユーザ名を入力する前)に表示されるテキストを指定する
deny_email_enable=[YES|NO] (Default:NO)
匿名ユーザーでログインを拒否する電子メールパスワードのリストファイルを有効にする
リストファイルは、banned_email_fileオプション(デフォルトは/etc/vsftpd.banned_emails)で指定できる
banned_email_file=<PATH> (Default:/etc/vsftpd.banned_emails (comment out))
匿名ユーザーでログインを拒否する電子メールパスワードのリストファイル名を指定する
deny_email_enableオプションが有効であれば、このオプションが検査される
chroot_list_enable=[YES|NO] (Default:NO)
chroot_local_userオプションとの組み合わせでchrootする・しないの対象が変わる
ケース | chroot_list_enable | chroot_local_user |
1 | YES | YES |
→ chroot_list_fileオプションで指定したファイルにリストされたユーザ以外はchrootされる | ||
2 | YES | NO |
→ chroot_list_fileオプションで指定したファイルにリストされたユーザはchrootされる | ||
3 | NO | YES |
→ すべてのローカルユーザはchrootされる | ||
4 | NO | NO |
→ すべてのローカルユーザはchrootされない |
chroot_list_file=<path> (Default:/etc/vsftpd.chroot_list (comment out))
chroot(する・しない)ローカルユーザのリストを含むファイル名を指定する
ls_recurse_enable=[YES|NO] (Default:NO)
“ls -R”コマンド(ディレクトリリストを再帰的に表示)の使用を許可する
大きなサイトのトップレベルディレクトリで”ls -R”コマンドを使用すると
多くのリソースを消費するかもしれないので注意すること
listen=[YES|NO] (Default:YES)
vsftpdをスタンドアロンモードで起動する
inetdやxinetdから起動する場合は、無効にする
listen_ipv6=[YES|NO] (Default:NO)
IPv4ソケットの代わりにIPv6ソケットをリッスンする
このオプションとlistenオプションは、同時に有効にすることができない
pam_service_name=<PAMservicename> (Default:vsftpd)
vsftpdが使用するPAMサービス名を指定する
userlist_enable=[YES|NO] (Default:YES)
userlist_enableオプションが有効であれば、このオプションが検査される userlist_fileオプション
(デフォルトは/etc/vsftpd.user_listファイル)で指定したファイルに含まれるユーザリストを元にログインの許可 / 拒否が決定される。ログインが拒否される場合
パスワード入力を求められる前に”Permission denied.”が表示される
tcp_wrappers=[YES|NO] (Default:YES)
vsftpdがtcp_wrapperをサポートするようコンパイルされていれば
サーバへの接続はtcp_wrapperによって制御される
■user_list
FTPクライアントからの FTPアクセスしてくるユーザを拒否する(デフォルト)
vsftpd.conf の内容が以下の場合、user_list への記載の有無で動作が変わる
・userlist_deny=NO(デフォルト)リストアップしているユーザーのみアクセス拒否する
・userlist_deny=YES リストアップしているユーザーのみアクセス許可する
拒否されているログ
[root@localhost vsftpd]# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): root
530 Permission denied. ★
Login failed.
ftp> bye
221 Goodbye.
■ftpusers
FTPサーバにFTPアクセスさせるユーザを制御する
ユーザ名をファイルに追加するとFTPクライアントができなくなる
拒否されているログ
[root@localhost vsftpd]# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): root
331 Please specify the password.
Password:
530 Login incorrect. ★
Login failed.