vsftpd+pam_mysql仮想ユーザー構成


企業プロジェクトのニーズ:
うちの会社は化粧品電子商取引会社です.
1.ftpサーバーを構築して小包宅配便の写真をアップロードし、基本的なアップロードとダウンロード機能を実現する
2.vsftpd仮想ユーザログインにより、外部ネットワークアクセスが可能
3.仮想ユーザログインipの制限
4.仮想ユーザー関連プロファイルはインタフェース操作による追加、修正などが可能で、しかも直ちに更新する
以下は主に1、2ステップの実現手順と注意事項である.
3、4の2つのステップは別のブログで詳細な説明とコード(vsftpd+pam_mysql+shell)があります.
pam_のインストールmysql(必ずインストールしてください.以下vsftpdエラー3で説明します)ここではmysqlのインストールはありません
cd pam_mysql-0.7RC1
./configure --with-mysql=/home/mysql/app/mysql5/
make && make install
インストールエラー:
1.PAM unable to dlopen(/lib/security/pam_mysql.so): libmysqlclient.so.18: cannot open shared object file: Permission denied
cp mysql_dir/lib/libmysqlclient.so.18/usr/lib 64/ここでは、mysqlのユーザー権限を実行するファイル権限をコピーする必要があるソフト接続を作成することはできません.ログインできないし、エラーも報告されません.
vsftpdのインストール
注意:
centos 32ビット直接yumインストールでOK
centos 64ビットはインストールをコンパイルする必要があります.yumインストールでエラーが発生した場合:libgcc_s.so.1 must be installed for pthread_cancel to work
tar zxvf vsftpd.3-2
vim defs.h    
次の行を変更して、上の問題を解決します(libgcc_s.so)
#define VSFTP_AS_LIMIT   100UL * 1024 * 1024
#define VSFTP_AS_LIMIT   400UL * 1024 * 1024   
vim builddefs.h     
次の行を変更します.vsftpdを構成するときに使用するモードtcpwrappersを設定します.構成がなければ、エラーが発生します.
500 OOPS: tcp_wrappers is set to YES but no tcp wrapper support compiled in
#unfin VSF_BUILD_TCPWRAPPERS   
#define VSF_BUILD_TCPWRAPPERS
more INSTALLインストール事項を確認します.これらは一般的にはもういいです.ここではただ言います.
make && make install
インストール中に発生したエラー:
1.tcpwrap.c:16:20:エラー:tcpd.h:そのファイルやディレクトリがありません
yum install -y tcp_wrappers tcp_wrappers-devel
2./usr/bin/ld: cannot find -lcap 
yum-y install libcap libcap-devel(LCAPはリンクの動的集約を実現するプロトコルアクティブモード、パッシブモード)
3.530 Login incorrect vsftpd+pam_mysqlはすべて正常に配置してしかしログインすることができなくて、ずっと知りません
どこが問題なのか、後でvsftpdの依存関係をよく調べてみたらpam_mysql依存関係なし(ldd/usr/local/sbin/vsftpd)
vsftpdをインストールする前にpam_をインストールmysql
vsftpdの構成
cp vsftpd.conf/etc/プロファイルは必ず/etcの下に置く
cp RedHat/vsftpd.pam/etc/pam.d/vsftpd
次に、使用中のオンラインftpサービス構成テンプレート(パラメータの意味はリストされません)を示します.
vim vsftpd.conf
anonymous_enable=YES
no_anon_password=YES
ftp_username=ftp
anon_root=/var/ftp
anon_upload_enable=NO
anon_world_readable_only=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_max_rate=0
#chown_uploads=YES/NO
#chown_username=username
#anon_umask=077
#deny_email_enable=YES/NO
#banned_email_file=/etc/vsftpd/banner_emails
#[local]
#login name:local user, login passwd:local passwd, ftp dir:local path, exclude user in:/etc/vsftpd.ftpusers
isolate_network=NO
local_enable=YES
local_root=/home/virtual
local_umask=077
file_open_mode=0755
local_max_rate=0
#chroot_list_enable=YES,chroot_local_user=YES:vsftpd.chroot_list is allow
#chroot_list_enable=YES,chroot_local_user=NO:vsftpd.chroot_list is deny
#chroot_list_enable=NO,chroot_local_user=YES:all deny
#chroot_list_enable=NO,chroot_local_user=NO:all allow
chroot_list_enable=NO
#chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=NO
allow_writeable_chroot=YES
#[welcome message]
#message type:file or string
#dirmessage_enable=YES
#message_file=.message
#banner_file=/etc/vsftpd/banner
ftpd_banner=Welcome to test's FTP server
#[other]
text_userdb_names=NO
ls_recurse_enable=NO
hide_ids=NO
download_enable=YES
#[globle]
#all config is about this globle config
write_enable=NO
#[transfer mode]
#image or exec file:BINARY,CGI file or HTML file:ASCII
#ascii_upload_enable=NO
#ascii_download_enable=NO
#[access control]
#type:host control(hosts.allow) ,user control  ftpusers level is gt vsftpd.user_list
tcp_wrappers=YES
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=YES
#[timeout]
accept_timeout=60
connect_timeout=60
data_connection_timeout=120
idle_session_timeout=300
#[logfile]
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
log_ftp_protocol=YES
#[ftp work type and work port]
#work type:PORT FTP and PASV FTP
listen_port=22
#connect_from_port_20=YES
#ftp_data_port=20
#pasv_addr_resolve=
#pasv_address=
#pasv_promiscuous=
pasv_enable=YES
pasv_max_port=53001
pasv_min_port=52999
#[connect]
listen=YES
max_clients=100
max_per_ip=10
use_localtime=YES
#listen_address=IP
#setproctitle_enable=NO
#[pam user]       
guest_enable=YES
pam_service_name=vsftpd
guest_username=virtual
virtual_use_local_privs=NO
user_config_dir=/etc/vsftpd/userconf

注意:
1.refusing to run with writable root inside chroot()
allow_writeable_chroot=YESプラスこの一言
仮想ホストユーザーの作成:virtual dir:/home/virtual/
仮想ユーザtestの作成
ユーザープロファイル:/etc/vsftpd/vuser_conf/test
ユーザープロファイルについては、多くのパラメータを設定できます.これらの機能は強化できます.
local_root=/home/virtual/test
write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
cmds_allowed=PASV,TYPE,LIST,CWD,PWD,SIZE,CDUP,TYPE,MKD,MDTM,NLST,PASS,QUIT,USER,REIN,RETR,STOR,RNTO,APPE,RNFR,DELE,RMD

注意:
1.226 Transfer done (but failed to open directory)
testユーザーディレクトリ権限設定は7 XXでなければなりません.最初は7(すべての権限)chmod 700 testでなければなりません.
pam_の構成mysql
vim/etc/pam.d/vsftpd   
関連パラメータを揃えればいいpam_msyqlインストールパッケージにも関連説明ファイルがあります
auth required /lib/security/pam_mysql.so user= passwd= host= db= table= usercolumn= passwdcolumn= crypt=0
account required /lib/security/pam_mysql.so user= passwd= host= db= table= usercolumn= passwdcolumn= crypt=0

外部ネットワークアクセスについて:
外部ネットワークがftpにアクセスするとき、パッシブモードでアクセスするには、外部ネットワークマッピングのデータ転送ポートが連続している必要があります.そうしないと、クライアントはリンクを確立できません.リンク時に次のエラーに遭遇しました.
Using host address  instead of the one suggested by the server: 
vsftpd+ssl暗号化伝送
証明書の申請が面倒だと思っていたので、まだ構成されていません.