vsftpdにrootで接続する

vsftpdのデフォルト設定ではrootユーザでのFTP接続は制限されているようだ。まぁ当然と言えば当然なのかもしれない。
…けどやっぱり不便に感じる時もあるのでrootユーザでの接続を許可できるようにしておこう。また他のユーザでの接続制限の設定をどこで設定すれば良いのかも知っておきたいから。
今回の目的『vsftpdの接続制限設定を知る』

設定ファイルは /etc/vsftpd/ 配下にありそうだ。

[root@CentOS-5.2 vsftpd]# find /etc/vsftpd/ 
/etc/vsftpd/
/etc/vsftpd/user_list
/etc/vsftpd/ftpusers
/etc/vsftpd/vsftpd_conf_migrate.sh
/etc/vsftpd/vsftpd.conf
[root@CentOS-5.2 vsftpd]# 

vsftpd.conf

vsftpd自体の設定ファイルのようだ。下記のような設定項目がある。設定項目と設定値をそれぞれ見てみよう。

  • anonymous_enable=YES

annoymousユーザ(匿名ユーザ)での接続を許可するか。匿名ユーザにはパスワード無しで接続が可能。デフォルト設定では接続可能。試しにFFFTPで接続時にannoymousにチェックを入れて接続してみよう。ユーザにannoymous、パスワードに何かしらの値が自動的に入って接続してみると正常に繋がるようだ。ログインディレクトリは…これどこだろう?後で調べてみよう。

  • connect_from_port_20=YES

・・・よくわからない。とりあえずこいつを無効にするとFTPクライアントによっては使えない奴がでてくるようだ。試しにNOで起動してみたが、FFFTPでは問題なく接続できた。

  • dirmessage_enable=YES

ディレクトリ毎のメッセージを表示するかの設定だそうだ。デフォルト設定ではYES。試しにworkerユーザのホームディレクトリに.messageファイルを作成してみる。中身は適当にメッセージを。FFFTPでは下のウィンドウにメッセージが確かに表示された!ftpコマンドでもログイン後に『230-message』と.messageファイルに書いてあるメッセージが230-と行頭に付けられて表示される。

  • listen=YES

スタンドアローンモード(?)で起動する・・・だそうだ。listen_ipv6という設定もあるらしいが同時使用はできないとのこと。つまりはサービス(デーモン)として起動できるかできないかって事だよね。

  • local_enable=YES

ローカルユーザがシステムにFTP接続できるかどうか。デフォルトではYES。

  • local_umask=022

FTP接続した後のアップロード時等のファイル作成時に適用されるumask。

  • pam_service_name=vsftpd

vsftpd用のPAMサービスネームを設定…。PAM?今後の要調査。

  • tcp_wrappers=YES

/etc/hosts.allow, /etc/hosts.deny ファイルによるアクセス制御を行うか。デフォルトではYES。

  • userlist_enable=YES

userlist_file項目に設定したユーザ一覧ファイルに記述されたユーザのFTP接続を制限する。デフォルトでは/etc/vsftpd/user_listが設定されているようだ。

  • write_enable=YES

デフォルトYES。DELE,PNFR,STORなどのファイルシステムを変更するコマンドが使用可能。

  • xferlog_enable=YES

ログ出力するかどうか。デフォルトYES。出力するログは/var/log/vsftpd.log

  • xferlog_std_format=YES

デフォルトYES。YESだとFTPサーバに接続しただけのログは出力されない。ファイル転送のみログ出力。

他にもいろいろ設定項目があるようだが、今回は割愛。そのうちやってみよう。


user_list

vsftpd.confのuserlist_enableがYESになっている時のデフォルトファイル。
このファイルからrootをコメントアウトしてvsftpdを再起動してみたもののrootでは接続できない。ちなみにこのファイルに記述されているユーザでFTP接続をすると、ユーザ名を入れた後、即失敗する。コメントアウトしたユーザはパスワードまでは聞かれるが正しいパスワードを入力しても失敗する。


ftpusers

このファイルに記述されているユーザは接続できない。user_listよりも優先されるとのこと。
ここからもrootをコメントアウトしてvsftpdを再起動して接続してみたところ、rootユーザでも接続が可能となった。


コマンド/ファイル

  • コマンド
    • /usr/bin/find
  • ファイル
    • /etc/vsftpd/user_list
    • /etc/vsftpd/ftpusers
    • /etc/vsftpd/vsftpd.conf