先說說主配置文件vsftpd.conf中的配置參數說明:這里的參數只是初步設定的默認參數,具體可在各虛擬用戶中配置
anonymous_enable=NO #不允許匿名訪問
local_enable=YES #設定本地用戶可以訪問。注意:主要是為虛擬宿主用戶,如果該項目設定為NO那么所有虛擬用戶將無法訪問。
write_enable=YES #設定可以進行寫操作。
local_umask=022 #設定上傳后文件的權限掩碼,文件644,文件夾755
anon_upload_enable=NO #禁止匿名用戶上傳文件。
anon_mkdir_write_enable=NO #禁止匿名用戶建立目錄。
dirmessage_enable=YES #設定開啟目錄標語功能。
xferlog_enable=YES #設定開啟日志記錄功能。
connect_from_port_20=YES #設定端口20進行數據連接。
chown_uploads=NO #設定禁止上傳文件更改宿主。
xferlog_file=/var/log/vsftpd.log #設定Vsftpd的服務日志保存路徑。注意,該文件默認不存在。必須要手動touch出來,並且由於這里更改了Vsftpd的服務宿主用戶為手動建立的Vsftpd。必須注意給與該用戶對日志的寫入權限,否則服務將啟動失敗。
xferlog_std_format=YES #設定日志使用標准的記錄格式。
#idle_session_timeout=600 #設定空閑連接超時時間,這里使用默認。將具體數值留給每個具體用戶具體指定,當然如果不指定的話,還是使用這里的默認值600,單位秒。
nopriv_user=www2013 #設定支撐Vsftpd服務的宿主用戶為手動建立的Vsftpd用戶。注意,一旦做出更改宿主用戶后,必須注意一起與該服務相關的讀寫文件的讀寫賦權問題。比如日志文件就必須給與該用戶寫入權限等。
async_abor_enable=YES #設定支持異步傳輸功能。
ascii_upload_enable=YES
ascii_download_enable=YES #設定支持ASCII模式的上傳和下載功能。
ftpd_banner=This Vsftp server supports virtual users ^_^ #設定Vsftpd的登陸標語。
Banner_file =/… #設定Vsftpd的登陸標語的文件。
下面是一個比較扯淡的參數:有下面4種組合
chroot_local_user=YES
chroot_list_enable=NO
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
參數 |
取值 |
取值 |
取值 |
取值 |
chroot_local_user |
YES |
NO |
YES |
NO |
chroot_list_enable |
YES |
YES |
NO |
NO |
意義 |
文件中列出的用戶根目錄為系統根目錄,其它用戶根目錄為自己主目錄。 |
文件中列出的用戶根目錄為自己主目錄,其它用戶根目錄為系統根目錄。 |
全部用戶根目錄都是自己主目錄。 |
全部用戶根目錄都是系統根目錄。 |
紅色部分是常用到的,它的意思是,所有用戶的目錄都是共享的ftp目錄,不可以切到別的目錄,包括上傳的時候,只能上傳所在目錄的文件,不能上傳別的目錄里的文件。
ls_recurse_enable=NO #禁止用戶登陸FTP后使用"ls -R"的命令。該命令會對服務器性能造成巨大開銷。如果該項被允許,那么擋多用戶同時使用該命令時將會對該服務器造成威脅。
listen=YES #開啟獨立進程vsftpd,不使用超級進程xinetd。設定該Vsftpd服務工作在StandAlone模式下。順便展開說明一下,所謂StandAlone模式就是該服務擁有自己的守護進程支持,在ps -A命令下我們將可用看到vsftpd的守護進程名。如果不想工作在StandAlone模式下,則可以選擇SuperDaemon模式,在該模式下 vsftpd將沒有自己的守護進程,而是由超級守護進程Xinetd全權代理,與此同時,Vsftp服務的許多功能將得不到實現。
pam_service_name=vsftpd #設定,啟用pam認證,並指定認證文件名/etc/pam.d/vsftpd。
userlist_enable=YES #設定userlist_file中的用戶將不得使用FTP。
tcp_wrappers=YES #設定支持TCP Wrappers。
實際操作過程:環境CENTOS 6.8
目標:實現在同一跟目錄下對admins,upload,download三個虛擬用戶的不同權限的控制。具體權限控制列表如下:
用戶名 |
權限說明 |
admins |
管理員,可以上傳、下載、新建文件夾、刪除和更改文件和文件夾名。 |
upload |
不可以下載,可以上傳、新建文件夾,但不能刪除文件和文件夾,不能重命名原有文件和文件夾; |
download |
只能下載,不能進行其他操作。 |
1、安裝vsftpd
Yum install vsftpd -y
2、添加虛擬映射用戶
Useradd –d /home/ftp123 –s /sbin/nologin
然后創建虛擬用戶和密碼
Cat >>vsuser<<eof
admins
123456
upload
123456
download
123456
eof
[root@DHCP-service vsftpd]# cat vsuser
admins
123456
upload
123456
download
123456
然后呢 安裝db4,制作vsftp的用戶認證文件,因為剛才的虛擬帳號和密碼的文本文件無法被系統帳號直接調用,需要創建用於系統認證的db文件
[root@DHCP-service vsftpd]# yum install db4
[root@DHCP-service vsftpd]#db_load -T -t hash -f /etc/vsftpd/vsuser /etc/vsftpd/vsuser.db
接着配置pam.d下的vsftpd,添加認證文件的位置
vim /etc/pam.d/vsftpd #將文將中原來的內容改為下面的內容(記得先備份呀)
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsuser
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsuser
以上針對64位機器
如果是32位的話將lib64改為lib即
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsuser
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsuser
然后就是配置vsftp了:
cd /etc/vsftpd/
[root@DHCP-service vsftpd]# vim vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES #centos 7需要添加
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
nopriv_user=ftp123
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service ^_^
ls_recurse_enable=NO
listen=YES
local_root=/home/ftp123
guest_enable=YES
guest_username=ftp123
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/conf
主配置文件修改完畢,配置各個虛擬用戶的權限文件
首先mkdir conf
注意:這個文件夾下的文件名一定要與我們剛開始創建的3個虛擬用戶名相對應
Cd conf/中去
Cat >>admins<<eof
write_enable=YES
download_enable=YES
eof
然后是upload用戶
Cat >>upload<<eof
virtual_use_local_privs=NO
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
eof
最后是download用戶
Echo “anon_world_readable_only=NO” >> download
然后就是啟動vsftpd服務
[root@DHCP-service conf]# /etc/init.d/vsftpd restart
下載windows上的ftp客戶端軟件fileZilla安裝測試
經過測試完成預期目標 ^_^