部署FTP服務器時,默認是使用真實用戶來登陸和使用,若是用戶數量不少,則須要創建不少的真實用戶來知足需求,麻煩且不安全。創建虛擬用戶的vsftp就能夠解決這個問題,同時添加刪除用戶也十分方便,下面開始詳解安裝和配置的過程。
1.
編譯安裝vsftp
tar zxvf vsftpd-
2.0.7
.tar.gz
cd vsftpd-
2.0.7
若是是64位的系統則需修改vsf_findlibs.sh
vi vsf_findlibs.sh
修改
locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0"; 成 locate_library /lib64/libpam.so.0 && echo "/lib64/libpam.so.0";
locate_library /lib/libcap.so.1 && echo "/lib/libcap.so.1";成 locate_library /lib64/libcap.so.1 && echo "/lib64/libcap.so.1";
make
install -m 755 vsftpd /usr/sbin/vsftpd
cp vsftpd.conf /etc/
vi /home/passwd.txt
用戶名(隨意輸入)
密碼(隨意輸入)
例:download
123456
upload
123456
admin
123456
2. 安裝db4
rpm -ivh db4-utils-
4.3.29
-9.fc6.i386.rpm (32位系統)
rpm –ivh db4-utils-
4.3.29
-9.fc6.x86_64.rpm(64位系統)
db_load -T -t hash -f /home/passwd.txt /etc/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db
cd vsftpd-
2.0.7
cd EXAMPLE/
cp VIRTUAL_USERS/vsftpd.pam /etc/pam.d/ftp
若是是64位系統則需修改/etc/pam.d/ftp
vi /etc/pam.d/ftp
改爲
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
3. 建立虛擬用戶
useradd -d /home/ftpsite/ virtual
vi /etc/passwd
修改成:virtual:x:510:510::/home/ftpsite/:/bin/nologin
4.編輯vsftp配置文件
vi /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
ftpd_banner=Welcome to tfhudong FTP service.
listen=yes
listen_port=21
guest_enable=YES
pam_service_name=ftp
user_config_dir=/etc/vsftpd_user_conf
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
#50K
#Local_max_rate=50000
#30K
#Anon_max_rate=30000
pasv_min_port=50000
pasv_max_port=60000
pasv_enable=yes
max_clients=200
max_per_ip=4
check_shell=NO
anon_root=/home/ftpsite/m
5.建立虛擬用戶權限文件
mkdir /etc/vsftpd_user_conf
cd /etc/vsftpd_user_conf
touch download upload admin
6. 建立用戶家目錄(若是須要則添加)
mkdir /home/ftpsite/download
chmod 700 /home/ftpsite/download
chown virtual.virtual /home/ftpsite/download
mkdir /home/ftpsite/upload
chmod 700 /home/ftpsite/upload
chown virtual.virtual /home/ftpsite/upload
mkdir /home/ftpsite/admin
chmod 700 /home/ftpsite/admin
chown virtual.virtual /home/ftpsite/admin
7編輯用戶權限文件
vi download
anon_world_readable_only=NO
guest_username=virtual
local_root=/home/ftpsite/download #download用戶的家目錄,需自定義
vi upload
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
guest_username=virtual
local_root=/home/ftpsite/upload #upload 用戶的家目錄
vi admin
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_umask=0999
guest_username=virtual
local_root=/home/ftpsite/admin #admin 用戶的家目錄
8配置iptables防火牆並開放ftp端口
vi /etc/sysconfig/iptables
添加:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT # 21是監聽端口,在vsftpd.conf中設置的listen [端口]對應
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50000:60000 -j ACCEPT #傳輸數據用50000----60000之間的端口 和vsftpd.conf中的pasv_min_port=50000 和pasv_max_port=60000 對應
重啓iptables
/etc/init.d/iptables restart
9啓動vsftpd
不間斷運行vsftpd
nohup /usr/sbin/vsftpd /etc/vsftpd.conf &
10 測試
先測試download用戶(只容許下載,不容許上傳、新建、刪除)
把123文件下載到本地
測試上傳功能(應阻止上傳)
測試成功!
同理測試upload和admin用戶功能。