VSFTPDで準仮想ユーザ
純粋な仮想ユーザではない方法。PAMで認証時に独自ユーザーDBで認証した後、シェル等の確認をさせる。
#%PAM-1.0 auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vpasswd auth required pam_shells.so account required pam_stack.so service=system-auth session required pam_stack.so service=system-auth # original are below ##%PAM-1.0 #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed #auth required pam_stack.so service=system-auth #auth required pam_shells.so #account required pam_stack.so service=system-auth #session required pam_stack.so service=system-auth
この方法の利点?は、ApacheでSuexecを使えるようにしてるとき、各ユーザごとにSuexecが使える。VSFTPDのドキュメントに書いてる、仮想ユーザの使い方だと、ある単一のユーザIDの下で、すべてのファイルが来てしまうので、FTPサーバとWebサーバがバラバラならいいが、一緒になっているような場合に困る。特にSuexecを使えるような場合は、すべて同じユーザ権限で動くので、あるユーザのCGIから他のユーザのディレクトリに書き込みとかできてしまう。これはマズイので、手軽に仮想ユーザを使いつつ、独立したホームディレクトリやSuexecを利用できるようにしたのが、上の設定。
システムのユーザIDを使いつつ、システムと別のパスワードを設定できるため、セキュリティ的にちょいマシになる。まあ、うちの場合はSSHの登録済みキーでしか入れないから、万一パスワードが漏れても直接は進入できないと思うが。(FTPDとかのサーバの脆弱性から進入されるとNGだなぁ)まあ、何にせよシステムで設定されているパスワードが漏れる、というのは精神衛生上良くないので。