Centos 7 安裝vsftpd

在CentOS 7上安裝ftp服務器,本文中服務器未開啓SELinux、firewall和iptables

服務器IP: 192.168.2.162

管理員: root         密碼: 123456


一、安裝vsftpd

yum -y install vsftpd


二、運行

systemctl start vsftpd 啓動

systemctl enable vsftpd 開機自啓動


默認配置文件信息:

[root@system2 ~]# grep -v "#" /etc/vsftpd/vsftpd.conf 
anonymous_enable=YES 運行匿名登錄
local_enable=YES 運行本地用戶登錄
write_enable=YES 運行寫入
local_umask=022 本地用戶創建、上傳文件umask值
dirmessage_enable=YES
是否顯示目錄說明文件, 默認是YES
xferlog_enable=YES
記錄使用者所有上傳下載信息
connect_from_port_20=YES
確保ftp-datad 數據傳送使用port 20


xferlog_std_format=YES

listen=YES 兩行一起的。使用standalone啓動vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推薦使用standalone方式)


pam_service_name=vsftpd
PAM所使用的名稱.同userlist_*一樣限制用戶登陸,不同的是userlist_*在進行密碼驗證之前拒絕用戶登陸,pam是在密碼驗證之後拒絕登陸.(提示密碼錯誤) 用戶列表默認存放在/etc/ftpusers中,一行一個. (可通過/etc/pam.d/vsftpd重定向用戶列表存放文件)

userlist_enable=YES
爲yes時, /etc/vsftpd/user__list文件中的用戶將不能訪問vsftpd服務器

tcp_wrappers=YES
支持tcp_wrappers,限制訪問(/etc/hosts.allow,/etc/hosts.deny)


三、ftp的三種用戶模式

1、匿名開放模式

添加以下代碼:

anon_upload_enable=YES                     允許匿名上傳
anon_mkdir_write_enable=YES              允許匿名創建、寫入文件
anon_other_write_enable=YES               允許匿名用戶具有建立目錄,上傳之外的權限,如重命名,刪除

重啓  systemctl restart vsftpd

測試:   注意一定要關閉SELinux

[root@system1 ~]# ftp 192.168.2.164
Connected to 192.168.2.164 (192.168.2.164).
220 (vsFTPd 2.2.2)
Name (192.168.2.164:root): anonymous       匿名用戶
331 Please specify the password.
Password:
ftp> mkdir 123                    

550 Permission denied.                   權限被拒絕

原因是ftp默認目錄/var/ftp     屬組屬主是root    權限爲755,所以其他人沒有權限寫入。但是如果改爲777 程序重啓會出錯(centos6重啓不會報錯,但是創建會提示錯誤),最好方法是在/var/ftp目錄下再創建一個777權限文件夾

測試正常,懶得上圖了

2、本地用戶模式

關閉匿名用戶登錄,再測試:

注意:關閉是把anonymous_enable=YES改爲NO,而不是註釋掉,因爲默認爲允許

[root@system1 ~]# ftp 192.168.2.164
Connected to 192.168.2.164 (192.168.2.164).
220 (vsFTPd 2.2.2)
Name (192.168.2.164:root): test1
331 Please specify the password.
Password:
ftp> mkdir 754826376
257 "/home/test1/754826376" created 默認本地用戶登錄ftp是用戶在系統中的家目錄


/etc/vsftpd/user__list和/etc/vsftpd/ftpusers裏有的系統用戶名稱都是不能登錄ftp的
userlist_enable=YES


3、虛擬用戶模式

新建一個不能登錄系統用戶並定義用戶家目錄,只用來登錄ftp服務,讓用虛擬用戶登錄的使用者創建的文件擁有屬組屬主。如果沒設置用戶目錄。默認是在home下

useradd -d /var/ftproot -s /sbin/nologin vftpuser

chmod 755 /var/ftproot


創建虛擬用戶數據庫

  • [root@system1 ~]# cat /etc/vsftpd/vuser.list 
    lance
    redhat
    lsl
    redhat

奇數爲用戶名,偶數爲密碼

加密:      沒有安裝:yum -y install db4

db_load -T -t hash -f   /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db

選項-T允許應用程序能夠將文本文件轉譯載入進數據庫。由於我們之後是將虛擬用戶的信息以文件方式存儲在文件裏的,爲了讓Vsftpd這個應用程序能夠通過文本來載入用戶數據,必須要使用這個選項。
如果指定了選項-T,那麼一定要追跟子選項-t

子選項-t,追加在在-T選項後,用來指定轉譯載入的數據庫類型。擴展介紹下,-t可以指定的數據類型有Btree、Hash、Queue和Recon數據庫。

-f
參數後面接包含用戶名和密碼的文本文件,文件的內容是:奇數行用戶名、偶數行密碼,例如:


rm -rf /etc/vsftpd/vuser.list                  刪除原始文件

chmod 600 /etc/vsftpd/vuser.db           防止其他用戶破解


建立用於支持虛擬用戶的PAM文件:

[root@system1 ~]# cat /etc/pam.d/vsftpd.vu 
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser


修改配置文件:

[root@system1 ~]# grep -v "#" /etc/vsftpd/vsftpd.conf 

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
guest_enable=YES                    開啓虛擬用戶模式
guest_username=vftpuser        虛擬用戶登錄操作對應的系統用戶
allow_writeable_chroot=YES    允許對禁錮的FTP根目錄進行寫操作,而且不拒絕用戶登錄請求
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu        指定新的PAM文件
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/vusers_dir        虛擬用戶配置文件夾


虛擬用戶配置文件夾你可以定義不同虛擬用戶的功能:

[root@system1 ~]# cat /etc/vsftpd/vusers_dir/lance     上傳、下載、寫入、修改
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES



以下是其他功能介紹


開啓PASV(被動模式)

在 /etc/vsftpd/vsftpd.conf 的最下面加入             

pasv_enable=YES                  開啓被動模式
pasv_min_port=30000              數據連接端口最小-最大範圍
pasv_max_port=30999


配置文件可以添加的內容

local_umask=022        /本地用戶文件上傳後的權限是-rw-r--r--     22行
本地用戶上傳最高權限爲666,默認權限爲666-022=644,即local_umask=022
#anon_umask=022 /默認沒有這一項,匿名用戶上傳後的權限是-rw-------。匿名用戶上傳的默認權限爲600,即anon_umask=066,匿名用戶上傳最大權限是666,這裏權限是用666-022=644方法得來的-rw-r--r--
anon_world_readable_only=YES /允許匿名用戶瀏覽,下載文件,默認沒有這一項,只有在虛擬用戶的配置文件裏纔有用
anon_upload_enable=YES /默認註釋掉了,允許匿名用戶上傳 27行
anon_mkdir_write_enable=YES /默認註釋掉了,允許匿名用戶上傳/建立目錄 31行
anon_other_write_enable=YES /默認沒有這一項,允許匿名用戶具有建立目錄,上傳之外的權限,如重命名,刪除
dirmessage_enable=YES /是否顯示目錄說明文件, 默認是YES 但需要手工創建.message文件,這個.message,只有用命令登陸或者用工具,纔可以看見,他不是一個彈出對話框,而是一段字符,如在pub下建立一個.message,那麼在客戶端進入pub目錄時就會顯示.message文檔中的內容 35行
xferlog_enable=YES /記錄使用者所有上傳下載信息 38行
chown_uploads=YES /默認註釋了,開啓匿名用戶上傳用戶映射,和下面一行一起使用 48行
chown_username=whoever /默認註釋了,將匿名用戶上傳的文件的用戶映射爲whoever用戶 49行
xferlog_file=/var/log/vsftpd.log /默認註釋掉了這一項 51行
#將上傳下載信息記錄到/var/log/vsftpd.log中
connect_from_port_20=YES
#確保ftp-datad 數據傳送使用port 20(20號端口)
idle_session_timeout=600 /默認註釋掉了這一項 58行
#如果使用者600秒沒有動作,則強制離線,也就是指令超時時間,
data_connection_timeout=120 /如果 client與 Server 間的數據傳送在 120 秒內都無法傳送成功,那 Client的聯機就會被我們的 vsftpd 強制剔除! 62行
ftpd_banner=Welcome to blahFTP service. /ftp的歡迎信息 84行
banner_file=/etc/vsftpd/banner_file.txt /默認沒有這一項,ftp的歡迎信息
#歡迎信息存放在banner_file.txt文件中,如果添加中文歡迎信息,就需要在xp中將此文件編輯好後上傳到/etc/vsftpd 目錄中。如果ftpd_banner和banner_file同時設置,那麼banner_file將覆蓋ftpd_banner的設置。
Listen_address=10.1.6.0 /默認沒有這一項,禁止10.1.6.0段訪問此FTP
chroot_list_enable=YES /禁固宿主目錄,默認這一項註釋掉了 95行
#限制使用者不能離開家目錄,例如blue登陸後位於/home/blue下,設置該選項後,他不可以轉到/home/blue的上層目錄,如/bin, /usr,/opt...etc。
chroot_list_file=/etc/vsftpd/chroot_list /默認這一項註釋掉了
#與上條同時使用,設置要禁固宿主目錄的用戶的配置文件爲/etc/vsftpd/chroot_list 建立文本文件/etc/vsftpd/chroot_list,寫入要禁固宿主目錄的用戶,一行一個。當chroot_list_enable=YES時,則禁固chroot_list文件裏面的用戶的宿主目錄,而爲NO時chroot_list文件裏面的用戶不禁固宿主目錄。
tcp_wrappers=YES /默認沒有這一項
#支持tcp_wrappers,限制訪問(/etc/hosts.allow,/etc/hosts.deny)
xferlog_std_format=YES
listen=YES /109行
#使用standalone啓動vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推薦使用standalone方式) 108行
listen_port=21 /默認沒有這一行
#ftp監聽端口
pam_service_name=vsftpd /116行
#PAM所使用的名稱.同userlist_*一樣限制用戶登陸,不同的是userlist_*在進行密碼驗證之前拒絕用戶登陸,pam是在密碼驗證之後拒絕登陸.(提示密碼錯誤) 用戶列表默認存放在/etc/ftpusers中,一行一個. (可通過/etc/pam.d/vsftpd重定向用戶列表存放文件)
#獲得 /etc/pam.d/vsftpd:
#[[email protected]]#cp RedHat/vsftpd.pam/etc/pam.d/vsftpd
userlist_enable=YES / 爲yes時, /etc/vsftpd/user__list文件中的用戶將不能訪問vsftpd服務器 117行
userlist_deny=YES /默認沒有這一項,與下面這條參數:userlist_file=/etc/vsftpd/localuser_list 結合使用。
userlist_file=/etc/vsftpd/localuser_list /默認沒有這一項, 與上面參數:userlist_deny=YES結合使用此參數用,來改變存放可以登錄或禁止登錄的賬號,suerlist_deny爲YES時,這裏面的用戶則不能登錄,當爲NO時,這裏面的用戶可以登錄,和/etc/vsftpd/user_list是一個意思,

max_clients=100 /默認沒有這一項
#最大用戶在線數量
max_per_ip=2 /默認沒有這一項
#每ip最大線程
anon_max_rate=30000 /默認沒有這一項
#匿名用戶最大傳輸速度 單位: bytes/秒
local_max_rate=50000 /默認沒有這一項
#本地用戶最大傳輸速度 單位:bytes/秒
user_config_dir=/etc/userconf /默認沒有這一項
#個別用戶配置目錄(用來設定特殊帳號),例如我想讓blue這個用戶的傳輸速度是100KB
就可以在/etc/userconf/下創建文本文件blue(與用戶名相同),加入local_max_rate=100000即可 /默認沒有這一項
anon_root=/var/ftp /默認沒有這一項
#設定匿名用戶登陸後所在的目錄
local_root=/var/local_user /默認沒有這一項
#設定所有本地用戶登陸後的目錄,如不設置此項,則本地用戶登陸後位於各自家目錄下。
use_localtime=YES /默認沒有這一項
#使用本地時間而不是GMT
nopriv_user=vsftpd /默認沒有這一項

發佈了10 篇原創文章 · 獲贊 41 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章