基本配置
- 切換到root用戶
- 查看是否安裝vsftp;
rpm -qa |grep vsftpd
- 如果沒(méi)有發(fā)現(xiàn),則安裝。
yum install vsftpd -y
- 啟動(dòng)vsftpd服務(wù)
service vsftpd start (啟動(dòng))
service vsftpd restart (重啟)
service vsftpd stop (停止)
- 測(cè)試一下能否登錄FTP了,先安裝一個(gè)ftp客戶端組件。
yum -y install ftp
嘗試登錄一下
ftp localhost
輸入用戶名ftp,密碼隨便(因?yàn)槟J(rèn)是允許匿名的)
登錄成功,就代表ftp服務(wù)可用了。
但是,外網(wǎng)是訪問(wèn)不了的,所以還要繼續(xù)配置。
- 取消匿名登錄
vi /etc/vsftpd/vsftpd.conf
把第一行的 anonymous_enable=YES ,改為NO
重啟
service vsftpd restart
- 創(chuàng)建一個(gè)組,用于存放ftp用戶
groupadd ftpgroups
8.創(chuàng)建ftp用戶,并加入ftpgroups組,/home/ftp是自己建的目錄,不存在就自己創(chuàng)建一個(gè)
useradd -d /home/ftp/ftptest -g ftpgroups ftptest
設(shè)置密碼
passwd ftptest
設(shè)置不允許用于用戶登錄
usermod -s /sbin/nologin ftptest
9.這時(shí)候重啟一下vsftpd服務(wù)
service vsftpd restart
登錄一下看,可以登錄了,但是發(fā)現(xiàn)也能訪問(wèn)上層目錄,甚至根目錄,這不是我們希望的,修改一下配置文件讓其只能訪問(wèn)自身目錄
vi /etc/vsftpd/vsftpd.conf
如下設(shè)置
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
++chroot_list文件里的用戶是可以訪問(wèn)上層目錄的++
另外,從2.3.5之后,vsftpd增強(qiáng)了安全檢查,如果用戶被限定在了其主目錄下,則該用戶的主目錄不能再具有寫權(quán)限了!如果檢查發(fā)現(xiàn)還有寫權(quán)限,就會(huì)報(bào)該錯(cuò)誤。
要修復(fù)這個(gè)錯(cuò)誤,可以用命令chmod a-w /home/user
去除用戶主目錄的寫權(quán)限,注意把目錄替換成你自己的?;蛘吣憧梢栽趘sftpd的配置文件中增加下列項(xiàng): allow_writeable_chroot=YES
好了,這樣就只能訪問(wèn)自身所屬目錄。
如果希望某個(gè)用戶可以訪問(wèn)根目錄,把用戶名加入
/etc/vsftpd/chroot_list
不存在就創(chuàng)建這個(gè)文件,一行一個(gè)用戶名。
如果還是登陸不了ftp,那很有可能是selinux的問(wèn)題,這個(gè)東西把他關(guān)掉就行
vi /etc/selinux/config
SELINUX=enforcing 設(shè)置成SELINUX=disabled
重啟一下服務(wù)器
reboot
重啟完了別忘了把vsftpd服務(wù)打開,默認(rèn)是自啟的。
連不上的話,開啟防火墻的情況,需要開啟端口
1.關(guān)于防火墻
service iptables status (查看防火墻命令)
service iptables start
service iptables stop
service iptables restart
2.FTP主動(dòng)、被動(dòng)模式
FTP支持兩種模式,一種方式叫做Standard (也就是 PORT方式,主動(dòng)方式),一種是 Passive (也就是PASV,被動(dòng)方式)。 Standard模式 FTP的客戶端發(fā)送 PORT 命令到FTP服務(wù)器。Passive模式FTP的客戶端發(fā)送 PASV命令到 FTP Server。
PORT 和 PASV的簡(jiǎn)單區(qū)別如下:
Port模式FTP 客戶端首先和FTP服務(wù)器的TCP 21端口建立連接,通過(guò)這個(gè)通道發(fā)送命令,客戶端需要接收數(shù)據(jù)的時(shí)候在這個(gè)通道上發(fā)送PORT命令。 PORT命令包含了客戶端用什么端口接收數(shù)據(jù)。在傳送數(shù)據(jù)的時(shí)候,服務(wù)器端通過(guò)自己的TCP 20端口連接至客戶端的指定端口發(fā)送數(shù)據(jù)。 FTP server必須和客戶端建立一個(gè)新的連接用來(lái)傳送數(shù)據(jù)。
Passive模式在建立控制通道的時(shí)候和Standard模式類似,但建立連接后發(fā)送的不是Port命令,而是Pasv命令。FTP服務(wù)器收到 Pasv命令后,隨機(jī)打開一個(gè)高端端口(端口號(hào)大于1024)并且通知客戶端在這個(gè)端口上傳送數(shù)據(jù)的請(qǐng)求,客戶端連接FTP服務(wù)器此端口,然后FTP服務(wù)器將通過(guò)這個(gè)端口進(jìn)行數(shù)據(jù)的傳送,這個(gè)時(shí)候FTP server不再需要建立一個(gè)新的和客戶端之間的連接。
一般瀏覽器默認(rèn)使用的是Passive(被動(dòng))模式
3.修改vsftpd.conf配置文件讓它支持Passive(被動(dòng))模式
vim /etc/vsftpd/vsftpd.conf
在最后一行添加如下內(nèi)容:
pasv_enable=YES (注意 后面不能用空格)
pasv_min_port=10050 (設(shè)置被動(dòng)模式的端口范圍)
pasv_max_port=10060(設(shè)置被動(dòng)模式的端口范圍)
4.開放防火墻端口
vim /etc/sysconfig/iptables
添加如下內(nèi)容:
-A INPUT -p tcp -m multiport --dport 20,21 -m state --state NEW -j ACCEPT --開啟20,21端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT --開啟21主動(dòng)端口
-A INPUT -p tcp --dport 10050:10060 -j ACCEPT --開啟被動(dòng)端口