サーバー設定 · 1 min read · Feb 09, 2026

Debian Etch における vsftpd と MySQL を使用した仮想ホスティング - ページ 2

4 vsftpd の設定

まず、nogroup グループに属する vsftpd という名前の特権のないユーザーを作成します。このユーザーの下で vsftpd を実行し、仮想ユーザーの FTP ディレクトリは /home/vsftpd ディレクトリ内に配置されます(例:/home/vsftpd/user1、/home/vsftpd/user2 など)。

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

次に、元の /etc/vsftpd.conf ファイルのバックアップを作成し、自分のファイルを作成します:

cp /etc/vsftpd.conf /etc/vsftpd.conf_orig  
cat /dev/null > /etc/vsftpd.conf  
vi /etc/vsftpd.conf

ファイルには以下の内容が含まれている必要があります:

| listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES nopriv_user=vsftpd chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/vsftpd.pem guest_enable=YES guest_username=vsftpd local_root=/home/vsftpd/$USER user_sub_token=$USER virtual_use_local_privs=YES user_config_dir=/etc/vsftpd_user_conf |

設定オプションの詳細は http://vsftpd.beasts.org/vsftpd_conf.html で説明されています。仮想セットアップにとって重要なオプションは chroot_local_user、guest_enable、guest_username、user_sub_token、local_root、virtual_use_local_privs です。

user_config_dir オプションを使用すると、グローバル設定の一部を上書きするユーザーごとの設定ファイルのディレクトリを指定できます。この機能を使用するかどうかは完全に任意です。ただし、今すぐそのディレクトリを作成する必要があります:

mkdir /etc/vsftpd_user_conf

次に、PAM を設定して、/etc/passwd および /etc/shadow の代わりに MySQL データベースを使用して仮想 FTP ユーザーを認証するようにします。vsftpd の PAM 設定は /etc/pam.d/vsftpd にあります。元のファイルのバックアップを作成し、次のように新しいファイルを作成します:

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig  
cat /dev/null > /etc/pam.d/vsftpd  
vi /etc/pam.d/vsftpd

| auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 |

MySQL のパスワードを自分のものに置き換えることを忘れないでください!

その後、vsftpd を再起動します:

/etc/init.d/vsftpd restart

5 最初の仮想ユーザーを作成

データベースをポピュレートするには、MySQL シェルを使用できます:

mysql -u root -p
USE vsftpd;

次に、パスワード secret で仮想ユーザー testuser を作成します(これは MySQL の PASSWORD 関数を使用して暗号化されて保存されます):

INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));  
quit;

testuser のホームディレクトリは /home/vsftpd/testuser です。残念ながら、vsftpd はそのディレクトリが存在しない場合、自動的に作成しません。したがって、今手動で作成し、vsftpd ユーザーと nogroup グループの所有にします:

mkdir /home/vsftpd/testuser  
chown vsftpd:nogroup /home/vsftpd/testuser

次に、作業ステーションの FTP クライアントプログラムを開きます(Windows システムの場合は WS_FTP や SmartFTP、Linux デスクトップの場合は gFTP など)で接続を試みます。ホスト名には server1.example.com(またはシステムの IP アドレス)を使用し、ユーザー名は testuser、パスワードは secret です。

接続できた場合はおめでとうございます!できない場合は、何かがうまくいかなかったことになります。

6 データベース管理

ほとんどの人にとって、MySQL のグラフィカルフロントエンドがある方が簡単です。したがって、vsftpd データベースを管理するために phpMyAdmin(この例では http://server1.example.com/phpmyadmin/ の下)を使用することもできます。

ユーザーを作成または変更する際は、必ず MySQL の PASSWORD 関数を使用してそのユーザーのパスワードを暗号化してください。また、新しい仮想ユーザーを作成する際は、前の章の最後に示したように、そのユーザーのホームディレクトリをシェルで作成することを忘れないでください。

7 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。