Ubuntu下vsftpd-仮想アカウント構成

3943 ワード

まず、私はlinuxのマスターではありません.普段暇があれば、自分の仮想マシンで何回か游んでみてください.だから文章の中に何か間違っているところや専門的ではないところがあって、みんなの理解を忘れています.
最近、ある創業プロジェクトが必要なため、サーバーアーキテクチャ全体が自分で構築する必要があります.今日はaliyunサーバーで、自分でFTPを構築してみました.Ubuntu OSにvsftpdをインストールし、仮想アカウントログインを構成しました.
大体の手順はこうです.
vsftpdインストール->仮想ユーザデータベースの作成->PAMファイルの構成->仮想ユーザのローカルシステムユーザの作成->master vsftpdプロファイルの変更->仮想ユーザvsftpdプロファイルの変更->vsftpdプロファイルの再起動
完璧で、瑕疵がない.vsftpdのインストール方法については、こちらの文章では説明しませんが、分からないところは度娘に聞いてみてください.ここでは、FTP仮想ユーザーの作成方法について詳しく説明します.
仮想ユーザー・データベースの作成
テキストファイルを作成しますie,usrlist.txt .保存したアドレスは自分で決めることができます.私のは/etc/vsftpd/です.
フォーマットは次のとおりです.
user_id
password

注意:奇数動作アカウント名、偶数動作パスワード.つまり1.3.5です.等行為ユーザー名、2.4.6行為パスワード;最后の行は车に戻る必要があります(さもなくばデータベースのファイルを创立する时最后の行を认识することができなくて、奇数行の间违いを报告します)ここで私は赤いhighlightを使うのは自分がかつてここで転んだことがあるためです..
データベースの生成
もしあなたのシステムにdb-utilがインストールされていないならば、自分で手動でインストールする必要があります.私はネット上の他の場所の多くの人がdb-utilをインストールしているのを見ましたが、私のサーバーでこのパッケージが見つからないので、私は直接db-utilをインストールしました.このツールは、対応するテキストファイルを対応するデータベースファイルに変換することです.
sudo apt-get install db-util

インストールが完了すると、作成したばかりのtxtテキストファイルをデータベースに変換し、検証ファイルを生成できます.
db_load -T -t hash -f usrlist.txt /etc/vsftpd/vsftpd_login.db
chmod 600  /etc/vsftpd/vsftpd_login.db

PAMファイルの構成
pamファイルアドレスは/etc/pam.d/vsftpd. 私は元の基礎の上で2行を投げて、直接あなたたちに見せます:
auth sufficient  pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient  pam_userdb.so db=/etc/vsftpd/vsftpd_login
# Standard behaviour for ftpd(8).( pam                 )
auth	required	pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.

# Standard pam includes
 @include common-account
 @include common-session
 @include common-auth
 auth	required	pam_shells.so

最後に作成したデータベースファイルvsftpd_loginはここで適用されます.
私たちが確立した仮想ユーザーは、/etc/vsftpdを介してPAMを使用して検証されます.confファイルの文pam_service_name=vsftpdを有効にします.後述します.
仮想ユーザーのローカルシステムユーザーの作成
新しいシステムユーザーvsftpdを作成し、ユーザーホームディレクトリは/home/vsftpd、ユーザーログイン端末は/bin/false(システムにログインできなくても)に設定します.
sudo useradd vsftpd -d /home/vsftpd -s /bin/false
sudo chown vsftpd:vsftpd /home/vsftpd

私たちが作成した仮想ユーザーは、このローカルユーザーを利用してftpにログインします.
マスターvsftpdプロファイルの変更
masterプロファイルは/etc/vsftpd.conf、私たちは次にこのファイルを構成することによって仮想ユーザーを有効にします.主なコマンドはいくつかあります.
listen=YES
anonymous_enable=NO (                     ,           NO)
dirmessage_enable=YES (           )
xferlog_enable=YES (      )
xferlog_file=/var/log/vsftpd.log (  、        )
xferlog_std_format=YES 
chroot_local_user=YES 
guest_enable=YES 
guest_username=vsftpd(                )
user_config_dir=/etc/vsftpd_user_conf (      )
pam_service_name=vsftpd (pam    ,     ) 
local_enable=YES (        )
secure_chroot_dir=/var/run/vsftpd  

仮想ユーザvsftpdプロファイルの変更
上のuser_によるとconfig_dirパス仮想ユーザがftpuserであるなど、仮想ユーザがカスタマイズした権限設定を作成すると、そのパスの下にftpuserというファイルを作成します.
プロファイルの内容を直接表示します.
local_root=/usr/www (     ftp      )
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

vsftpdサービスの再起動
やっと、サービスを再起動して、テストして、成功しました.
>> ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.2)
Name (localhost:root): 
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 


Troubleshooting
  • 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

  • フォルダの問題です.ftpアカウントに登録されているフォルダを読み取り専用に設定すると正常にログインできますが、ftpに登録されているフォルダのルートディレクトリにファイルを書き込むことができず、新しいフォルダを1つ作成して使用するしかありません.次のように追加して、vsftpdを再起動します.
    echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf