SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【linux】vsftpd 導入手順(バーチャルユーザー版)

概要

OSのユーザーを使わないで、バーチャルなユーザーでFTPできるようにする。

手順

1、vsftpdのインストール

# yum install vsftpd

2、後でこれも必要

# yum install db4-utils

3、FTPユーザーのデータベースを作成

テキストで書いて

# vi /etc/vsftpd/vsftpd.txt
user1
password1
user2
password2
......
......

dbファイルにする

# db_load -T -t hash -f /etc/vsftpd/vsftpd.txt /etc/vsftpd/vsftpd.db

4、実ユーザーを作成

バーチャルなユーザーはOSのいずれかのユーザーに対応させる必要がある。

既存のユーザーに割り当てるなら新規作成は不要。

新しいユーザーに割り当てるならここで作成。

# useradd -m -d /home/ftp_user -s /bin/bash ftp_user

例えば、Webサーバーの実行ユーザーと一致させると、WebのソースをFTPで触っても、Webサーバーの実行ユーザーと喧嘩することがない。

5、vsftpdの設定

/etc/vsftpd/vsftpd.conf

# 匿名ユーザーのFTPは不可
anonymous_enable=NO
local_enable=YES

#書き込みを可能にする。
write_enable=YES

# バーチャルなユーザーのみで運用する。
guest_enable=YES

# 仮想ユーザーがアクセスできるのはホームディレクトリのみに制限する
chroot_local_user=YES

# バーチャルユーザーに対応するOSのユーザー
guest_username=ftp_user

# バーチャルユーザー個別に設定ができるように
user_config_dir=/etc/vsftpd/vsftpd_user_conf/

# バーチャルユーザーにいろいろ許可
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
# umask
anon_umask=022
# chmodできるようにする
virtual_use_local_privs=YES

6、PAMの設定

/etc/pam.d/vsftpd に書かれているデフォルトの認証方式を全部コメントアウトして、3で作ったデータベースを見てもらうように設定する。

#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     system-auth
#account    include     system-auth
#session    include     system-auth
#session    required     pam_loginuid.so

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd

7、ログインするバーチャルユーザーに応じてホームディレクトリを変更する

guest_usernameのユーザーのホームディレクトリしか使えなかったら意味がない。

バーチャルユーザーごとに以下のようにファイルを作り、local_rootの設定を書く。

/etc/vsftpd/vsftpd_user_conf/アカウント名

local_root=/home/どこか/どこか

8、FTPサーバー再起動

# /etc/init.d/vsftpd restart

関連するメモ

コメント