>一般都使用ftp軟通過sftp登錄,上傳文件。
# centos啟用ftp功能
vsftpd作為FTP服務器,在Linux系統中是非常常用的。下面我們介紹如何在centos系統上安裝vsftp。
## 什么是vsftpd
vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特點是小巧輕快,安全易用。
vsftpd 的名字代表”very secure FTP daemon”, 安全是它的開發者 Chris Evans 考慮的首要問題之一。在這個 FTP 服務器設計開發的最開始的時候,高安全性就是一個目標。
### 1、安裝vsftpd
1、以管理員(root)身份執行以下命令
yum install vsftpd
2、設置開機啟動vsftpd ftp服務
chkconfig vsftpd on
3、啟動vsftpd服務(默認ftp服務是沒有啟動的,用下面命令啟動)
`service vsftpd start`
管理vsftpd相關命令:
~~~
停止vsftpd: service vsftpd stop
重啟vsftpd: service vsftpd restart
~~~
安裝完后,有/etc/vsftpd/vsftpd.conf 文件,用來配置,還有新建了一個ftp用戶和ftp的組,指向home目錄為/var/ftp,默認是nologin(不能登錄系統)
可以用下面命令查看用戶
`cat /etc/passwd `
### 2、安裝ftp客戶端組件(用來驗證是否vsftpd)
`yum -y install ftp `
執行命令嘗試登錄
`ftp localhost `
輸入用戶名ftp,密碼隨便(因為默認是允許匿名的)
登錄成功,就代表ftp服務可用了。
但是,外網是訪問不了的,所以還要繼續配置。
### 3、配置防火墻
因為ftp默認的端口為21,而centos默認是沒有開啟的,所以要修改iptables文件
`vi /etc/sysconfig/iptables `
在行上面有`22 -j ACCEPT` 下面另起一行輸入跟那行差不多的,只是把22換成21,或者**添加這行代碼**:`-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT`,然后`:wq`保存。
保存和關閉文件,重啟防火墻:
`service iptables restart `
外網是可以訪問上去了,可是發現沒法返回目錄,也上傳不了,因為selinux作怪了。
##4、配置vsftpd服務器
默認的配置文件是/etc/vsftpd/vsftpd.conf,你可以用文本編輯器打開。
vi /etc/vsftpd/vsftpd.conf
添加ftp用戶
下面是添加ftpuser用戶,設置根目錄為/home/wwwroot/ftpuser,禁止此用戶登錄SSH的權限,并限制其訪問其它目錄。
**1、修改/etc/vsftpd/vsftpd.conf**
把第一行的 `anonymous_enable=YES` ,改為`NO`,取消匿名登陸
將底下三行
~~~
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
~~~
改為
~~~
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
~~~
重啟
`service vsftpd restart `
##5、新建一個用戶(ftpuser為用戶名,隨便就可以)
`useradd ftpuser `
修改密碼(輸入兩次)
`passwd ftpuser `
這樣一個用戶建完,可以用這個登錄,記得用普通登錄不要用匿名了。**登錄后默認的路徑為 /home/ftpuser.**
> **這種方法不能設置自己的目錄,推薦使用下面的方法設置用戶和用戶ftp目錄。**
## 6、增加用戶ftpuser,指向目錄/home/wwwroot/ftpuser,禁止登錄SSH權限。
`useradd -d /home/wwwroot/ftpuser -g ftp -s /sbin/nologin ftpuser`
1、設置用戶口令
`passwd ftpuser`
2、編輯文件chroot_list:
`vi /etc/vsftpd/chroot_list`
內容為ftp用戶名,每個用戶占一行,如:
~~~
peter
john
~~~
另外,如果覺得以后管理ftp用戶名嫌麻煩,可以使用centos官方發布的腳本管理。地址如下:
http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users
## 7、修改selinux(遇到的問題經常與之有關)
`getsebool -a | grep ftp `
執行上面命令,再返回的結果看到兩行都是off,代表,沒有開啟外網的訪問。(這是因為服務器開啟了selinux,這限制了FTP的登錄。)
~~~
....
allow_ftpd_full_access off
....
....
ftp_home_dir off
~~~
只要把上面都變成on就行
執行
~~~
setsebool -P allow_ftpd_full_access 1
setsebool -P ftp_home_dir off 1
~~~
再重啟一下vsftpd
`service vsftpd restart `
這樣應該沒問題了(如果,還是不行,看看是不是用了ftp客戶端工具用了passive模式訪問了,如提示Entering Passive mode,就代表是passive模式,默認是不行的,因為ftp passive模式被iptables擋住了,下面會講怎么開啟,如果懶得開的話,就看看你客戶端ftp是否有port模式的選項,或者把passive模式的選項去掉。如果客戶端還是不行,看看客戶端上的主機的電腦是否開了防火墻,關吧)
## 8、開啟passive模式
默認是開啟的,但是要指定一個端口范圍,打開vsftpd.conf文件,在后面加上
~~~
pasv_min_port=30000
pasv_max_port=30999
~~~
表示端口范圍為30000~30999,這個可以隨意改。
改完重啟一下vsftpd
由于指定這段端口范圍,iptables也要相應的開啟這個范圍,所以像上面那樣打開iptables文件
也是在21上下面另起一行,更那行差不多,只是把21 改為30000:30999,然后`:wq`保存,重啟下iptables。這樣就搞定了。