ftp服務器配置之vsftp

一、目標要求:

同時支持匿名ftp和用戶隔離ftp,匿名空間只允許查看和下載,用戶空間可下載和上傳。

二、運行環境:
1.操作系統
Asianux Server 3 64-bit
[root@localhost ~]# lsb_release -a
LSB Version: 3.1
Distributor ID: AsianuxServer
Description: Asianux Server 3 (Quartet SP2)
Release: 3
Codename: QuartetSP2
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-128.7AXS3 #1 SMP Fri Jun 19 13:48:55 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
2.ftp服務器
[root@localhost ~]# rpm -aq|grep vsftp
lime-vsftp-1.1.4-1
vsftpd-2.0.5-12.1AXS3
3.數據庫
[root@localhost ~]# rpm -aq|grep db4
db4-devel-4.3.29-9
db4-tcl-4.3.29-9
db4-utils-4.3.29-9
db4-4.3.29-9
db4-4.3.29-9
db4-java-4.3.29-9
db4-devel-4.3.29-9

三、配置

1.創建系統帳戶
# useradd nobody
# mkdir /var/ftp
# useradd -d /var/ftp ftp

# useradd -d /home/ftpvirter -s /sbin/nologin ftpvirter // 用作虛擬用戶的系統帳戶

2.必要的目錄
匿名用戶根目錄:
# mkdir /var/ftp
虛擬用戶配置目錄:
# mkdir /etc/vsftpd/vconf
虛擬用戶空間目錄:
# mkdir /opt/vsftp
# chown ftpvirter:ftpvirter /opt/vsftp
# chmod ug=rw /opt/vsftp

用於存放每個虛擬用戶配置,每個配置文件以虛擬用戶命名


3.建立虛擬用戶數據庫(文件數據庫)
1)新建用戶名密碼文本文件
# vi /etc/vsftpd/virtusers
格式爲一行用戶名,一行該用戶密碼,如:
lrg
123456
zhouxing
654321
......
......

2)生成db4數據庫:
# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
3)配置虛擬用戶認證(PAM認證)

修改vsFTP的PAM認證配置文件/etc/pam.d/vsftpd:
#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
注:如果是32位的Linux則應把上面的lib64改爲lib


4.修改vsftp配置文件/etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log
vsftpd_log_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=30
nopriv_user=vsftpd
async_abor_enable=YES
chroot_list_enable=NO
chroot_local_user=YES
chmod_enable=NO
ls_recurse_enable=NO
pam_service_name=vsftpd
userlist_enable=YES
listen=YES
tcp_wrappers=YES

guest_enable=YES
guest_username=ftpvirter
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf

5.爲每個虛擬用戶創建配置文件,以用戶名爲文件名,存放在/etc/vsftpd/vconf/目錄,如lrg
local_root=/opt/vsftp/lrg
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000

6.創建虛擬用戶個人目錄,如用戶lrg
# mkdir /opt/vsftp/lrg
有多少個虛擬用戶,就在虛擬用戶主目錄下建多少個用戶目錄

7.ftp用戶維護

1)添加用戶目錄
# mkdir -p /opt/vsftp/xyz

2)添加用戶配置文件
# cp /etc/vsftpd/vconf/lrg /etc/vsftpd/vconf/xyz
# vi /etc/vsftpd/vconf/xyz
其中修改local_root=/opt/vsftp/xyz

3)修改用戶庫文本文件/etc/vsftpd/virtusers:
如果是添加用戶,如用戶名:xyz,密碼:xyz,可用如下命令:
echo "xyz" >> /etc/vsftpd/virtusers
echo "xyz" >> /etc/vsftpd/virtusers

4)重新生成db4數據庫文件:
# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

5)重啓 vsFTP
# service vsftpd restart

 

/////////////////// 附:vsftpd配置參數,摘自網絡《vsftp配置大全》////////////////////////////
#開啓匿名用戶
anonymous_enable=YES
#匿名用戶login時不詢問口令
no_anon_password=YES
#匿名用戶主目錄
anon_root=(none)
#接受本地用戶
local_enable=YES
#本地用戶主目錄
local_root=(none)
#如果匿名用戶需要密碼,那麼使用banned_email_file裏面的電子郵件地址的用戶不能登錄
deny_email_enable=YES
#僅在沒有pam驗證版本時有用,是否檢查用戶有一個有效的shell來登錄
check_shell=YES
#若啓用此選項,userlist_deny選項才被啓動
userlist_enable=YES
#若爲YES,則userlist_file中的用戶將不能登錄,爲NO則只有userlist_file的用戶可以登錄
userlist_deny=NO
#如果和chroot_local_user一起開啓,那麼用戶鎖定的目錄來自/etc/passwd每個用戶指定的目錄(這個不是很清楚,很哪位熟悉的指點一下)
passwd_chroot_enable=NO
#定義匿名登入的使用者名稱。默認值爲ftp。
ftp_username=FTP

#################用戶權限控制###############
#可以上傳(全局控制).
write_enable=YES
#本地用戶上傳文件的umask
local_umask=022
#上傳文件的權限配合umask使用
#file_open_mode=0666
#匿名用戶可以上傳
anon_upload_enable=NO
#匿名用戶可以建目錄
anon_mkdir_write_enable=NO
匿名用戶其它的寫權利(更改權限?)
anon_other_write_enable=NO
如果設爲YES,匿名登入者會被允許下載可閱讀的檔案。默認值爲YES。
anon_world_readable_only=YES
#如果開啓,那麼所有非匿名登陸的用戶名都會被切換成guest_username指定的用戶名
#guest_enable=NO
所有匿名上傳的文件的所屬用戶將會被更改成chown_username
chown_uploads=YES
匿名上傳文件所屬用戶名
chown_username=lightwiter
#如果啓動這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄
chroot_list_enable=YES
#允許使用"async ABOR"命令,一般不用,容易出問題
async_abor_enable=YES
管控是否可用ASCII 模式上傳。默認值爲NO。
ascii_upload_enable=YES
#管控是否可用ASCII 模式下載。默認值爲NO。
ascii_download_enable=YES
#這個選項必須指定一個空的數據夾且任何登入者都不能有寫入的權限,當vsftpd 不需要file system 的權限時,就會將使用者限制在此數據夾中。默認值爲/usr/share/empty
secure_chroot_dir=/usr/share/empty

###################超時設置##################
#空閒連接超時
idle_session_timeout=600
#數據傳輸超時
data_connection_timeout=120
#PAVS請求超時
ACCEPT_TIMEOUT=60
#PROT模式連接超時
connect_timeout=60

################服務器功能選項###############
#開啓日記功能
xferlog_enable=YES
#使用標準格式
xferlog_std_format=YES
#當xferlog_std_format關閉且本選項開啓時,記錄所有ftp請求和回覆,當調試比較有用.
#log_ftp_protocol=NO
#允許使用pasv模式
pasv_enable=YES
#關閉安全檢查,小心呀.
#pasv_promiscuous+NO
#允許使用port模式
#port_enable=YES
#關閉安全檢查
#prot_promiscuous
#開啓tcp_wrappers支持
tcp_wrappers=YES
#定義PAM 所使用的名稱,預設爲vsftpd。
pam_service_name=vsftpd
#當服務器運行於最底層時使用的用戶名
nopriv_user=nobody
#使vsftpd在pasv命令回覆時跳轉到指定的IP地址.(服務器聯接跳轉?)
pasv_address=(none)

#################服務器性能選項##############
#是否能使用ls -R命令以防止浪費大量的服務器資源
#ls_recurse_enable=YES
#是否使用單進程模式
#one_process_model
#綁定到listen_port指定的端口,既然都綁定了也就是每時都開着的,就是那個什麼standalone模式
listen=YES
#當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者的名稱,則將此功能開啓。
text_userdb_names=NO
#顯示目錄清單時是用本地時間還是GMT時間,可以通過mdtm命令來達到一樣的效果
use_localtime=NO
#測試平臺優化
#use_sendfile=YES

################信息類設置################
#login時顯示歡迎信息.如果設置了banner_file則此設置無效
ftpd_banner=歡迎來到湖南三辰Fake-Ta FTP 網站.
#允許爲目錄配置顯示信息,顯示每個目錄下面的message_file文件的內容
dirmessage_enable=YES
#顯示會話狀態信息,關!
#setproctitle_enable=YES

############## 文件定義 ##################
#定義不能更改用戶主目錄的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
#定義限制/允許用戶登錄的文件
userlist_file=/etc/vsftpd/vsftpd.user_list
#定義登錄信息文件的位置
banner_file=/etc/vsftpd/banner
#禁止使用的匿名用戶登陸時作爲密碼的電子郵件地址
banned_email_file=/etc/vsftpd.banned_emails
#日誌文件位置
xferlog_file=/var/log/vsftpd.log
#目錄信息文件
message_file=.message

############## 目錄定義 #################
#定義用戶配置文件的目錄
user_config_dir=/etc/vsftpd/userconf
#定義本地用戶登陸的根目錄,注意定義根目錄可以是相對路徑也可以是絕對路徑.相對路徑是針對用戶家目錄來說的.
local_root=webdisk #此項設置每個用戶登陸後其根目錄爲/home/username/webdisk
#匿名用戶登陸後的根目錄
anon_root=/var/ftp

#############用戶連接選項#################
#可接受的最大client數目
max_clients=100
#每個ip的最大client數目
max_per_ip=5
#使用標準的20端口來連接ftp
connect_from_port_20=YES
#綁定到某個IP,其它IP不能訪問
listen_address=192.168.0.2
#綁定到某個端口
#listen_port=2121
#數據傳輸端口
#ftp_data_port=2020
#pasv連接模式時可以使用port 範圍的上界,0 表示任意。默認值爲0。
pasv_max_port=0
#pasv連接模式時可以使用port 範圍的下界,0 表示任意。默認值爲0。
pasv_min_port=0

##############數據傳輸選項#################
#匿名用戶的傳輸比率(b/s)
anon_max_rate=51200
#本地用戶的傳輸比率(b/s)
local_max_rate=5120000

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章