服務器搭建FTP是首要的任務了。虛擬用戶登錄比本地用戶登錄安全系數高。因為vsftpd虛擬用戶,並不是系統的賬號,也就僅用來支持Vsftpd服務用,因此沒有許可他登陸系統的必要,比直接設定本地用戶登錄賬號為登陸系統的用戶安全性高。
一、文章要點:
1.64位系統下使用了PAM數據方式的虛擬用戶配置
2.修改關鍵腳本,是編譯成功通過。必要步驟,詳細安裝配置說明過程。
3.完全配置實例,Centos5.6編譯安裝vsftpd-2.3.4(配置本地用戶登錄、虛擬用戶登錄)
下載
wget http://xiazai.xiazaiba.com/Soft/V/vsftpd-2.3.4.tar.gz
tar xzvf vsftpd-2.3.4.tar.gz
cd vsftpd-2.3.4
關鍵步驟:由於64位系統的SO文件路徑有變化,必須更改vsf_findlibs.sh腳本的將lib換成lib64
可以手工修改,也可以執行批量修改。
sed -i 's/lib\//lib64\//g' vsf_findlibs.sh 這裡不執行,在64位系統是無法make成功的
mkdir /var/ftp/
useradd -d /var/ftp ftp
chown root.root /var/ftp/
chmod og-w /var/ftp/
make
make install
cd /etc/
cp /etc/vsftpd/vsftpd.conf.rpmsave vsftpd.conf
二、詳細安裝配置說明過程:
1、首先是安裝PAM
yum install pam-devel db4-utils
2、安裝vsftpd
yum install vsftpd*
3、查看vsftpd是否加載 pam
ldd /usr/sbin/vsftpd
若輸出中出現ibpam.so.0 => /lib/libpam.so.0,表示加載成功
4、生成用戶驗證數據庫文件
1)創建loguser.txt,格式如下(用戶、密碼、用戶、密碼.....)
userid
pass
2)保存後,使用db_load -T -t hash -f loguser.txt /etc/vsftpd/vsftpd_login.db,查看該目錄下文件是否生成
設置訪問權限 chmod 600 /etc/vsftpd_login.db
5、vim /etc/pam.d/vsftpd
在頭部添加如下行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
注意,若為64位操作系統,此處的路徑應該修改為
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
否則,啟動vsftpd後,會報530錯誤,這個錯誤我也是找了好久才明白的,之前其他網站上同類說明文件,均沒有說明此問題
將其它的內容注釋掉
6、vim /etc/vsftpd/vsftpd.conf,確保含有一下設置:
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=virtual //---這裡為映射的本地用戶
listen=YES
listen_port=21
pasv_min_port=30000
pasv_max_port=30999
7、啟動vsftpd
三、完全配置實例
Centos5.6編譯安裝vsftpd-2.3.4(配置本地用戶登錄)
wget http://xiazai.xiazaiba.com/Soft/V/vsftpd-2.3.4.tar.gz
tar zxvf vsftpd-2.3.4.tar.gz
cd vsftpd-2.3.4
mkdir -p /usr/local/man/man8
mkdir -p /usr/local/man/man5
make && make install
cd ../
vim /etc/vsftpd.conf
mkdir /etc/vsftpd
touch /etc/vsftpd/chroot_list
echo "/usr/local/sbin/vsftpd &" >> /etc/rc.local
mkdir /var/ftp
touch /etc/vsftpd/userlist.chroot
touch /etc/vsftpd/userlist_deny.chroot
touch /var/log/vsftpd.log
mkdir -p /usr/share/empty
#防火牆 selinux設置
/usr/local/sbin/vsftpd &
setsebool -P ftpd_disable_trans on
/sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
useradd -d /home/wwwroot -s /sbin/nologin adminftp
pkill vsftpd
/usr/local/sbin/vsftpd &
最後記得設置adminftp密碼
命令:passwd adminftp然後輸入兩次新密碼