- 論壇徽章:
- 0
|
操作系統(tǒng): centos 5.2
1、編輯解壓出來的builddefs.h文件:
[root@cacti vsftpd-2.0.7]# vi builddefs.h
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS //修改undef為define,支持tcp-wrappers
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL //修改undef為define,支持ssl
#endif /* VSF_BUILDDEFS_H */
2、安裝前準備:創(chuàng)建必要的帳號和目錄
useradd nobody
mkdir /usr/share/empty
mkdir /var/ftp
useradd -d /var/ftp ftp
chown root.root /var/ftp
chmod og-w /var/ftp
3、編譯安裝:
make && make install
cp vsftpd.conf /etc
cp RedHat/vsftpd.pam /etc/pam.d/ftp
4、驗證結果
1)查看一下二進制文件安裝到了那個目錄。
# which vsftpd
/usr/local/sbin/vsftpd
2)查看一下vsftpd的依賴庫(如果您發(fā)現(xiàn)vsftpd所依賴的庫有l(wèi)ibpam的行,這說明您所編譯的還是通過pam驗證登錄。)
# ldd /usr/local/sbin/vsftpd
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x03db6000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00175000)
libpam.so.0 => /lib/libpam.so.0 (0x00b4b000) ----通過PAM進行驗證
libdl.so.2 => /lib/libdl.so.2 (0x0088f000)
libresolv.so.2 => /lib/libresolv.so.2 (0x009dd000)
libutil.so.1 => /lib/libutil.so.1 (0x003b9000)
libcap.so.1 => /lib/libcap.so.1 (0x00111000)
libc.so.6 => /lib/tls/libc.so.6 (0x00763000)
libaudit.so.0 => /lib/libaudit.so.0 (0x00b6c000)
/lib/ld-linux.so.2 (0x0074a000)
5、測試
[root@cacti ~]# ftp localhost
Connected to cacti.mnu.cn.
220 Welcome to blah FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,118,208)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 25093 Nov 05 11:45 INSTALL
226 Directory send OK.
ftp> bye
221 Goodbye.
6、進階設置:
匿名用戶只允許下載,鎖定在目錄/var/ftp
每個虛擬用戶一個目錄,目錄為/var/ftp/uploads/$USER,鎖定在自身目錄內(nèi),可下載、上傳、刪除、改名、創(chuàng)建目錄等。
/var/ftp/uploads目錄對匿名用戶不可見,以.開頭的隱藏文件對所有用戶不可見。
匿名用戶傳輸速率1MB/s,虛擬用戶2MB/s,同時在線150人,每個IP最多3個連接數(shù)。
6.1) vsftpd.conf配置文件:
[root@cacti ~]# grep -v '^#' /etc/vsftpd.conf
listen=YES
listen_port=21
connect_from_port_20=YES
pam_service_name=ftp #此處pam認證文件名ftp必須跟/etc/pam.d/ftp一致
guest_enable=YES
guest_username=vsftpd #此處為虛擬用戶對應的系統(tǒng)帳號
user_sub_token=$USER
user_config_dir=/etc/vsftpd/vsftpd_user_conf #虛擬用戶個人配置文件目錄
max_clients=150
max_per_ip=3
local_max_rate=2000000 # 2MB/s
anonymous_enable=YES
anon_max_rate=1000000 # 1MB/s
anon_umask=077 #default 077
anon_root=/var/ftp #匿名用戶主目錄
no_anon_password=YES #匿名用戶略過密碼檢查
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
ftpd_banner=Welcome to blah FTP service.
dirmessage_enable=YES
use_localtime=YES
hide_file={.*,uploads} #隱藏的文件和目錄
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #不鎖定主目錄的虛擬用戶寫入此文件
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
6.2) 修改/etc/pam.d/ftp文件:
[root@cacti ~]# vi /etc/pam.d/ftp
#%PAM-1.0
#auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
#auth required /lib/security/pam_unix.so shadow nullok
#auth required /lib/security/pam_shells.so
#account required /lib/security/pam_unix.so
#session required /lib/security/pam_unix.so
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
6.3) 創(chuàng)建虛擬用戶:
[root@cacti ~]# vi user.txt
user
123456
test
123456
[root@cacti ~]# db_load -T -t hash -f user.txt /etc/vsftpd/vsftpd_login.db
[root@cacti ~]# chmod 600 /etc/vsftpd/vsftpd_login.db
6.4) 為虛擬用戶創(chuàng)建映射帳號和主目錄
mkdir -p /var/ftp/uploads/user
mkdir -p /var/ftp/uploads/test
useradd -d /var/ftp/uploads -s /sbin/nologin vsftpd
chown -R vsftpd.vsftpd /var/ftp/uploads
chmod -R 750 /var/ftp/uploads
6.5) 為每個虛擬用戶創(chuàng)建一個配置文件
先創(chuàng)建一個虛擬用戶配置模板:
[root@cacti ~]# vi /etc/vsftpd/vsftpd_user_conf/vsftpd
local_root=/var/ftp/uploads/$USER
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
然后為每個虛擬用戶拷貝一份配置(user,test):
cd /etc/vsftpd/vsftpd_user_conf/
cp vsftp user
cp vsftp test
7、再測試:
分別以匿名帳號anonymous和虛擬帳號user、test進行登錄測試。
不鎖定主目錄的虛擬用戶可以寫入/etc/vsftpd/vsftpd.chroot_list 文件中。
例如user用戶:
echo "user" >>/etc/vsftpd/vsftpd.chroot_list
當用user登錄的時候,用pwd查看目錄,可以看到家目錄為“/var/ftp/uploads/user”,而不是鎖定主目錄虛擬用戶的“/”
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u1/38490/showart_1404014.html |
|