在Readhat as4下編譯通過
#tar zxf vsftpd-2.0.3.tar.gz
# cd vsftpd-2.0.3 //進入vsftpd-2.0.3的源代碼目錄
# vi builddefs.h //編輯builddefs.h 文件,文件內容如下:
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#undef VSF_BUILD_PAM
#define VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
將以上undef都改為define,支持tcp_wrappers,支持PAM認證方式,支持SSL
# make //直接在vsftpd-2.0.3里用make編譯
# ls -l vsftpd
-rwxr-xr-x 1 root root 86088 Jun 6 22:26 vsftpd //可執行程序已被編譯成功
創建必要的帳號,目錄:
# useradd nobody //可能你的系統已經存在此帳號,那就不用建立
# mkdir /usr/share/empty //可能你的系統已經存在此目錄,那就不用建立
# mkdir /var/ftp //可能你的系統已經存在此目錄,那就不用建立
# useradd -d /var/ftp ftp //可能你的系統已經存在此帳號,那就不用建立
# chown root:root /var/ftp
# chmod og-w /var/ftp
請記住,如果你不想讓用戶在本地登陸,那么你需要把他的登陸SHELL設置成/sbin/nologin,
安裝vsftp配置文件,可執行程序,man等:
# install -m 755 vsftpd /usr/local/sbin/vsftpd
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd.conf
這樣就安裝完成了,那么我們開始進行簡單的配置
對于用DB庫存儲用戶名及密碼的方式來說:
(1)查看系統是否有相應軟件包
# rpm –qa | grep db4
db4-devel-4.2.52-7.1
db4-4.2.52-7.1
db4-utils-4.2.52-7.1
(2)建立一個logins.txt的文件,單行為用戶名,雙行為密碼,例如
# vi /home/logins.txt
test1
12345
test2
12345
(3)建立數據庫文件并設置文件屬性
# db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db
# chmod 600 /etc/vsftpd_login.db
(4)建立認證文件
# vi /etc/pam.d/ftp 插入如下兩行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
(5)建立一個虛擬用戶
useradd -d /home/vsftpd -s /sbin/nologin vsftpd
只要更改這個虛擬用戶的目錄,那么ftp登錄之后的目錄也就隨之更改
ls -ld /home/vsftpd
drwx------ 3 vsftpd vsftpd 1024 Jun 6 22:55 /home/vsftpd/
(6)編寫配置文件
# vi /etc/vsftpd.conf
listen=YES //使用standalone啟動vsftpd
listen_port=2121
max_clients=100 //可接受的最大連接數
max_per_ip=5 //每個IP最大的連接數
local_max_rate=5120000 //本地用戶的傳輸比率(b/s)
tcp_wrappers=YES //支持tcp_wrappers,限制訪問(/etc/hosts.allow,/etc/hosts.deny)
anonymous_enable=NO //禁用匿名賬戶
local_enable=YES //PAM方式此處必須為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=vsftpd //這兩行的意思是采用虛擬用戶形式
virtual_use_local_privs=YES //虛擬用戶和本地用戶權限相同
user_config_dir=/etc/vsftpd_user_conf //定義虛擬用戶配置文件目錄
pasv_enable=YES //建立資料聯機采用被動方式
pasv_min_port=30000 //建立資料聯機所可以使用port 范圍的上界,0表示任意。默認值為0。
pasv_max_port=30999 //建立資料聯機所可以使用port 范圍的下界,0表示任意。默認值為0。
xferlog_enable=YES //開啟日志記錄
xferlog_file=/var/log/vsftpd.log //日志存放文件位置
idle_session_timeout=600 //空閑連接超時
data_connection_timeout=120 //數據傳輸超時
accept_timeout=60 //PAVS請求超時
connect_timeout=60 // PROT模式連接超時
(7)建立每個用戶的根目錄、配置文件的目錄和配置文件
# mkdir /home/vsftpd/test1
# mkdir /etc/vsftpd_user_conf
# vi /etc/vsftpd_user_conf/test1 文件內容如下
local_root=/home/vsftpd/test1
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
# vi /etc/vsftpd_user_conf/test2 文件內容如下
local_root=/home/vsftpd/test1
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# chmod 700 /home/vsftpd/test1
# chown vsftpd.vsftpd /home/vsftpd/test1
這樣,test1用戶可以下載、上傳、修改 /home/vsftpd/test1里的文件,而test2用戶只能下載/home/vsftpd/test1里面的文件。
(8)啟動程序 、測試