Centos7下,Vsftpd工具,搭建ftp伺服器
Centos7安裝Vsftpd工具
1.下載與安裝
1.1 安裝環境
測試系統:Centos7.0
所用軟體:vsftpd-3.0.2-21.e17.x86_64
下載地址: http://mirror.centos.org/centos/7/os/x86_64/Packages/vsftpd-3.0.2-21.el7.x86_64.rpm
1.2 開始安裝
1.2.1 查詢是否系統已經自帶了vsftpd
rpm -q vsftpd
1.2.2 使用yum安裝vsftpd
yum -y vsftpd
1.2.3 使用rpm安裝vsftpd
rpm -ivh vsftpd-3.0.2-21.e17.x86_64
1.2.4 啟動vsftpd服務
service vsftpd start
1.3 登陸測試
安裝完成之後,預設允許匿名登陸,預設的目錄是/var/ftp,可以用ftp命令測試一下
ftp 212.192.31.9
2.配置檔案和使用者詳解
2.1配置檔案
安裝完成之後,配置檔案在/etc/vsftpd目錄
/etc/vsftpd/vsftpd.conf 主配置檔案
/etc/vsftpd/ftpusers 配置到這裡的使用者,不能訪問ftp
/etc/vsftpd/user_list 這裡的使用者預設情況(即在/etc/vsftpd/vsftpd.conf中設定了userlist_deny=YES)下也不能訪問FTP伺服器
/etc/vsftpd/vsftpd.conf的配置項
anonymous_enable=YES #允許匿名登陸
local_enable=YES #啟動home目錄
write_enable=YES #ftp寫的許可權
local_umask=022
dirmessage_enable=YES #連線列印的訊息
connect_from_port_20=YES #20埠
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
ascii_upload_enable=YES #上傳
ascii_download_enable=YES #下載
chroot_local_user=NO #是否限制使用者在主目錄活動
chroot_list_enable=YES #啟動限制使用者的列表
chroot_list_file=/etc/vsftpd/chroot_list #每行一個使用者名稱
allow_writeable_chroot=YES #允許寫
listen=NO
listen_ipv6=YES
pasv_min_port=50000 允許ftp工具訪問的埠起止埠
pasv_max_port=60000
pam_service_name=vsftpd #配置虛擬使用者需要的
userlist_enable=NO #配置yes之後,user_list的使用者不能訪問ftp
tcp_wrappers=YES
chroot_list 檔案需要自己建,內容一行一個使用者名稱字
anon_root=/data/ftp/public #修改匿名使用者的訪問路徑
2.2 使用者
Vsftpd的使用者有兩種,其一虛擬使用者過於複雜,本文不多介紹,其二和linux系統的使用者相關聯
例如我們想建立一個自己的ftp使用者,simon01,
useradd -d /data/www/simon01 -s /sbin/nologin simon01 建立使用者
passwd simon01 設定密碼
修改vsftpd.conf
anonymous_enable=YES為NO
local_enable=YES
write_enable=YES
service vsftpd restart儲存, 重啟vsftpd. ftp 192.222.32.9 登陸測試 可能用到的命令: groups 檢視當前登入使用者的組內成員 groups gliethttp 檢視gliethttp使用者所在的組,以及組內成員 /etc/group檔案包含所有組 /etc/shadow和/etc/passwd系統存在的所有使用者名稱
2.3 修改vsftpd預設的埠
1.編輯 /etc/vsftpd/vsftpd.conf 檔案,在該配置檔案中新增此行:listen_port=801
2.編輯 /etc/services 檔案,將其中的 ftp 21/tcp 改為 ftp 801/tcp , ftp 21/udp 改為 ftp 801/udp
3.執行 /etc/init.d/vsftpd restart 重新啟動 vsftpd 服務,啟動完成後可以使 用 netstat -ntpl | grep vsftpd 命令可以檢視到系統現
監聽的 vsftpd 的埠為 801
3.結合實際情況進行配置
3.1配置simon02使用者,不允許ssh登陸,允許ftp登陸,ftp登陸只能訪問/data/ftp/simon02目錄
1.建立simon02使用者
useradd -d /data/ftp/simon02 -s /sbin/nologin simon02
Passwd simon02
2.根據2.1的配置進行設定
在chroot_list,新增simon02使用者
在user_list,新增simon02使用者
3.重啟vsftpd
service vsftpd restart
4.使用simon02,登陸測試
不允許ssh登陸
3.2 配置simon03使用者,允許ssh登陸,可以ftp登陸不限制在自己的主目錄,可以看其它人的目錄。
1.建立simon3使用者
useradd -d /data/ftp/simon03 simon03
passwd simon3
2.ssh登陸測試
3.ftp登陸測試
4.問題集錦
4.1 問題一 登入報Service not available, remote server has closed connection
檢視/data/ftp/simon02 目錄的許可權,
這個目錄不屬於simon02,而預設目錄又是這個目錄,修正目錄歸屬人即可
4.2 登入報 500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
Vsftpd 2.3版本之後使用chroot限制使用者之後,使用者不能有寫的許可權,導致的。使用者的根目錄可寫,並且使用了chroot限制,而這在最近的更新裡是不被允許的。要修復這個錯誤,可以用命令chmod a-w /home/user去除使用者根目錄的寫許可權。
或者你可以在vsftpd的配置檔案中增加下列兩項中的一項:
對於標準的vsftpd build (vsftpd):
allow_writeable_chroot=YES
對於擴充套件的vsftpd build (vsftpd-ext):
allow_writable_chroot=YES
4.3 用ftp命令可以登陸成功,用ftp工具缺連線不上
習慣認為FTP只用到20和 21兩埠,所以防火牆也只開放這兩埠,在配置項裡
pasv_min_port=50000 允許ftp工具訪問的埠起止埠
pasv_max_port=60000
這兩項,ftp工具不一定是20埠,我們設定了允許的起止埠,在防火牆開啟即可
4.4
Job for vsftpd.service failed because the control process exited with error code
出現錯誤的原因是:由於centos7中vsftp的配置檔案預設將 listen_ipv6=YES 這一行沒有註釋掉,而我們目前的網路環境還不支援ipv6,從而導致出現錯誤無法啟動,所以解決方法是將 listen_ipv6=YES更改為:listen_ipv6=NO,或將這一行註釋掉
按上面的方法註釋掉 listen_ipv6=YES後,成功啟動vsftp
4.5