一、下載當前vsftp最新版本
代碼如下:
wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.3.4.tar.gz
二、安裝前準備
1、建立虛擬使用者映射的本機使用者wwwftp
代碼如下:
useradd wwwftp -d /data/www -s /sbin/nologin
2、建立自訂配置目錄
代碼如下:
mkdir -p /data/soft/vsftpd/conf
mkdir -p /data/soft/vsftpd/bin
mkdir -p /data/soft/vsftpd/lib
mkdir -p /data/soft/vsftpd/user_conf
mkdir -p /data/soft/vsftpd/empty
mkdir -p /data/soft/vsftpd/logs
mkdir -p /data/www
mkdir -p /data/www/user1
mkdir -p /data/www/user2
3、對自訂目錄設定許可權
代碼如下:
chown -R wwwftp:www /data/www
chmod -R 700 /data/soft/vsftpd/empty/
chown -R wwwftp:wwwftp /data/soft/vsftpd/empty/
4、複製用於驗證使用者登入的庫檔案到自訂目錄方便管理
代碼如下:
cp /lib/security/pam_userdb.so /data/soft/vsftpd/lib/
5、安裝所需軟體
代碼如下:
yum -y install gcc db4* pam*
三、解壓安裝vsftpd
代碼如下:
tar zxvf vsftpd-2.3.4.tar.gz
cd vsftpd-2.3.4
源碼安裝預設不支援tcp_wrappers和ssl
需要修改builddefs.h
代碼如下:
/*預設值如下:*/
#undef VSF_BUILD_TCPWRAPPERS /*是否支援TCP WRAPPERS*/
#define VSF_BUILD_PAM /*是否支援自訂虛擬使用者登入*/
#undef VSF_BUILD_SSL /*是否支援SSL傳輸*/
/*支援則將對應項設為define,否則設為undef*/
編譯vsftpd
代碼如下:
make
查看編譯的vsftpd二進位檔案是否載入了pam
代碼如下:
ldd vsftpd
如下:
代碼如下:
[root@CentOS5 vsftpd-2.3.4]# ldd vsftpd
linux-gate.so.1 => (0x00628000)
libwrap.so.0 => /lib/libwrap.so.0 (0x00cee000)
libnsl.so.1 => /lib/libnsl.so.1 (0x0015f000)
libpam.so.0 => /lib/libpam.so.0 (0x00fc4000)
libdl.so.2 => /lib/libdl.so.2 (0x007dc000)
libresolv.so.2 => /lib/libresolv.so.2 (0x008d8000)
libutil.so.1 => /lib/libutil.so.1 (0x00110000)
libcap.so.1 => /lib/libcap.so.1 (0x00d99000)
libc.so.6 => /lib/libc.so.6 (0x0029a000)
libaudit.so.0 => /lib/libaudit.so.0 (0x00114000)
/lib/ld-linux.so.2 (0x004a2000)
看到libpam.so.0 => /lib/libpam.so.0 (0x00fc4000)表示已成功載入pam認證模組
代碼如下:
cp vsftpd /data/soft/vsftpd/bin
四、配置vsftpd
1、建立主設定檔
代碼如下:
vi /data/soft/vsftpd/conf/vsftpd.conf
如下:
代碼如下:
local_enable=YES
anonymous_enable=NO
anon_upload_enable=NO
anon_other_write_enable=NO
anon_mkdir_write_enable=NO
ftpd_banner=Welcome to FTP service.
listen=YES
listen_port=21
connect_from_port_20=YES
nopriv_user=nobody
tcp_wrappers=YES
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/data/soft/vsftpd/chroot_list
userlist_enable=yes
userlist_deny=no
userlist_file=/data/soft/vsftpd/allow
dual_log_enable=YES
vsftpd_log_file=/data/soft/vsftpd/logs/vsftpd.log
xferlog_enable=YES
xferlog_file=/data/soft/vsftpd/logs/xferlog
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=60000
guest_enable=YES
guest_username=wwwftp
pam_service_name=vsftpd
virtual_use_local_privs=YES
use_localtime=YES
user_config_dir=/data/soft/vsftpd/user_conf
secure_chroot_dir=/data/soft/vsftpd/empty
2、建立允許登入ftp的使用者檔案
代碼如下:
vi /data/soft/vsftpd/allow
如下:
代碼如下:
user1
user2
3、建立用於鎖定使用者目錄的使用者列表檔案
代碼如下:
vi /data/soft/vsftpd/chroot_list
如下
代碼如下:
user1
user2
4、配置vsftpd的pam認證模組(用於虛擬使用者認證)
代碼如下:
vi /etc/pam.d/vsftpd
如下
代碼如下:
auth required /data/soft/vsftpd/lib/pam_userdb.so db=/data/soft/vsftpd/login
account required /data/soft/vsftpd/lib/pam_userdb.so db=/data/soft/vsftpd/login
儲存退出
5、建立使用者名稱密碼文字檔
代碼如下:
vi /data/soft/vsftpd/login.txt
如下:一行使用者名稱一行密碼
代碼如下:
user1
123456
user2
654321
儲存退出
6、用db_load產生使用者資料庫
代碼如下:
db_load -T -t hash -f /data/soft/vsftpd/login.txt /data/soft/vsftpd/login.db
chmod 600 /data/soft/vsftpd/login.db
rm -rf /data/soft/vsftpd/login.txt
7、配置虛擬使用者自訂設定檔
代碼如下:
vi /data/soft/vsftpd/user_conf/user1
user1所有許可權
代碼如下:
local_root=/data/www/user1
write_enable=YES
local_umask=022
儲存退出
代碼如下:
vi /data/soft/vsftpd/user_conf/user2
user2隻允許下載
代碼如下:
local_root=/data/www/user2
write_enable=NO
download_enable=YES
local_umask=022
儲存退出
8、啟動vsftpd服務
代碼如下:
/data/soft/vsftpd/bin/vsftpd /data/soft/vsftpd/conf/vsftpd.conf &
五、測試
user1登入可讀、寫、刪除、建立、修改一切許可權
user2登入僅有下載許可權