<a>1. 目标系統</a>
1. ftp功能
2. 使用者鎖定目錄
3. 上傳下載下傳可行
4. 不使用系統帳戶驗證
5. 多使用者支援
vsftpd-2.0.7
db4-devel-4.2.52-7.1
db4-4.2.52-7.1
db4-utils-4.2.52-7.1
首先下載下傳vsftp元件
解壓至目錄
#tar zxvf vsftpd-2.0.7.tar.gz
#cd vsftpd-2.0.7
清除編譯環境
#make clean
開始進入編譯預準備
#vi builddefs.h
将其中VSF_BUILD_TCPWRAPPERS、VSF_BUILD_PAM、VSF_BUILD_SSL所在行undef改為define。
在vsftpd的目錄裡編譯
#make
随後建立必要的帳号,目錄:
#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,比如以上的nobody和ftp我就設定成/sbin/nologin
開始安裝
#install -m 755 vsftpd /usr/local/sbin/vsftpd-pam
#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-pam.conf
1. 檢視系統是否有相應軟體包
#rpm –qa | grep db4
db4-utils-4.3.29-9.fc6
db4-4.3.29-9.fc6
db4-devel-4.3.29-9.fc6
如果沒有則需要安裝
2. 建立一個logins.txt的檔案,單行為使用者名,雙行為密碼
#vi /home/logins.txt
test
123456
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
6. 修改配置檔案
#vi /etc/vsftpd-pam.conf
在配置檔案修改或添加以下選項
listen=YES
listen_port=21
tcp_wrappers=YES //支援tcp_wrappers,限制通路(/etc/hosts.allow,/etc/hosts.deny)
listen=YES的意思是使用standalone啟動vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推薦使用standalone方式)
anonymous_enable=NO
local_enable=YES //PAM方式此處必須為YES,如果不是将出現如下錯誤:
500 OOPS: vsftpd: both local and anonymous access disabled!
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 //虛拟使用者和本地使用者權限相同
pasv_enable=YES //建立資料聯機采用被動方式
anon_world_readable_only=NO
7. 啟動程式
#/usr/local/sbin/vsftpd-pam /etc/vsftpd-pam.conf &
報錯:500 OOPS: bad bool value in config file for: tcp_wrappers
8. 測試連接配接
報錯:[root@lvs3 vsftpd-2.0.7]# ftp localhost
Connected to lvs3.
500 OOPS: vsftpd: cannot locate user specified in 'guest_username':vsftpd
Connected to 127.0.0.1.
220 (vsFTPd 2.0.7)
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): pool1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (127,0,0,1,83,150)
150 Here comes the directory listing.
226 Directory send OK.
ftp> quit
221 Goodbye.
1. 建立所有需要登入使用者
234567
單行為使用者名,雙行為密碼
2. 更新資料檔案
3. 配置使用者環境
#mkdir /etc/vsftpd_user_conf/
#vi /etc/vsftpd-pam.conf 加入如下語句
user_config_dir=/etc/vsftpd_user_conf
-----------------------以下為單使用者循環配置,每使用者都需要建立------------------------------
#mkdir /home/vsftpd/test
#vi /etc/vsftpd_user_conf/test
添加内容
local_root=/home/vsftpd/test
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
儲存退出
修改配置及目錄權限
# chmod 700 /home/vsftpd/test
# chown vsftpd.vsftpd /home/vsftpd/test/
---------------------------------使用者配置結束---------------------------------------
4. 測試使用者是否登入到自己目錄及上傳下載下傳正常
1. 在建立好的每個使用者/目錄下建立測試檔案兩個(檔案名不要相同);
2. 使用用戶端軟體從外部測試;
3. 分别登入兩個以上的帳号,通過察看根目錄存在檔案檢查是否引導到不同/目錄下;
4. 嘗試下載下傳測試檔案到本地;
5. 嘗試删除測試檔案;
6. 嘗試上傳檔案到測試帳号;
7. 測試完成。
本文轉自vcdog 51CTO部落格,原文連結:http://blog.51cto.com/255361/837801,如需轉載請自行聯系原作者