在CentOS7上安裝ftp服務器用於保存服務端上傳的圖片。vim
若是服務器上已經安裝了vsftpd服務,配置出錯須要卸載vsftpd服務。服務器
[root@localhost /]# rpm -aq vsftpd
返回結果顯示:tcp
vsftpd-3.0.2-21.el7.x86_64 #此處是查找vsftpd的返回結果
表示此服務期以前已經安裝過vsftpd服務。spa
注:在卸載vsftpd以前,先中止vsftpd.net
[root@localhost /]# /sbin/service vsftpd stop
卸載vsftpd:rest
[root@localhost /]# rpm -e vsftpd-3.0.2-21.el7.x86_64
返回結果顯示:code
warning: /etc/vsftpd/vsftpd.conf saved as /etc/vsftpd/vsftpd.conf.rpmsave #刪除時將備份vsftp的用戶列表文件
[root@localhost /]# /sbin/service vsftpd stop Redirecting to /bin/systemctl stop vsftpd.service Failed to stop vsftpd.service: Unit vsftpd.service not loaded. #找不到vsftpd
[root@localhost /]# /sbin/service vsftpd start Redirecting to /bin/systemctl start vsftpd.service Failed to start vsftpd.service: Unit not found. #找不到vsftpd
若是輸入以上兩個命令都顯示找不到vsftpd服務的話,那就證實已經卸載成功。server
[root@localhost /]# yum -y install vsftpd
[root@localhost home]# systemctl start vsftpd.service
[root@localhost /]# firewall-cmd --zone=public --add-port=21/tcp --permanent [root@localhost /]# firewall-cmd --reload
[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf
在vsftpd.conf配置文件中修改如下三項:htm
anonymous_enable=NO #anon_upload_enable=YES #anon_mkdir_write_enable=YES
而後重啓ftp服務:blog
[root@localhost vsftpd]# systemctl restart vsftpd.service
經過配置重啓以後,匿名用戶不能夠登陸了。
新建一個不能登陸系統用戶. 只用來登陸ftp服務 ,這裏若是沒設置用戶目錄。默認是在home下:
[root@localhost vsftpd]# useradd ftpuser -s /sbin/nologin
爲ftpuser用戶設置密碼:
[root@localhost /]# passwd ftpuser
[root@localhost /]# getsebool -a|grep ftp
顯示結果:
ftpd_anon_write --> off ftpd_connect_all_unreserved --> off ftpd_connect_db --> off ftpd_full_access --> off ftpd_use_cifs --> off ftpd_use_fusefs --> off ftpd_use_nfs --> off ftpd_use_passive_mode --> off httpd_can_connect_ftp --> off httpd_enable_ftp_server --> off tftp_anon_write --> off tftp_home_dir --> off
將上面紅色兩項狀態設置爲on:
[root@localhost vsftpd]# setsebool -P allow_ftpd_full_access on [root@localhost vsftpd]# setsebool -P tftp_home_dir on
限制系統用戶鎖定在/home/ftpuser目錄
若是設置爲 chroot_local_user=YES chroot_list_enable=YES(這行能夠沒有, 也能夠有) chroot_list_file=/etc/vsftpd.chroot_list 那麼, 凡是加在文件vsftpd.chroot_list中的用戶都是不受限止的用戶 即, 能夠瀏覽其主目錄的上級目錄. 因此, 若是不但願某用戶可以瀏覽其主目錄上級目錄中的內容,能夠如上設置, 而後在 文件vsftpd.chroot_list中不添加該用戶便可(此時, 在該文件中的用戶都是能夠瀏覽其主目錄以外的目錄的). 或者, 設置以下 chroot_local_user=NO chroot_list_enable=YES(這行必需要有, 不然文件vsftpd.chroot_list不會起做用) chroot_list_file=/etc/vsftpd.chroot_list 而後把全部不但願有這種瀏覽其主目錄之上的各目錄權限的用戶添加到文件vsftpd.chroot_list(此時, 在該文件中的用戶都是不能夠瀏覽其主目錄以外的目錄的) 中便可(一行一個用戶名).
[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf
這裏有兩種方案,我採用第二種,配置以下:
chroot_local_user=NO chroot_list_enable=YES #(這行必需要有, 不然文件vsftpd.chroot_list不會起做用) chroot_list_file=/etc/vsftpd/chroot_list
默認chroot_list是不存在的
[root@localhost vsftpd]# vim /etc/vsftpd/chroot_list
而後加入 ftpuser ,表示只有ftpuser不能訪問上級目錄,重啓vsftpd。
修改/home/ftpuser 的權限爲不可寫
[root@localhost vsftpd]# chmod a-w /home/ftpuser/taotao
這是由於咱們在上面將/home/ftpuser/taotao文件的權限改成不可寫了,那麼咱們在這個目錄下建立一個images文件夾,用來上傳文件。並將權限賦值給 ftpuser 用戶
[root@localhost taotao]# mkdir images [root@localhost images]# chown ftpuser images
四、開啓PASV(被動模式)
在 /etc/vsftpd/vsftpd.conf 的最下面加入
pasv_enable=YES pasv_min_port=30000 pasv_max_port=30999
而且在userlist_enable=YES文件後面添加
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
開啓防火牆:
[root@localhost taotao]# firewall-cmd --zone=public --add-port=30000-30999/tcp --permanent
[root@localhost taotao]# firewall-cmd --reload
這樣就可使用ftp服務器上傳文件了。
參考:http://blog.csdn.net/uq_jin/article/details/51684722
http://www.jb51.net/article/103904.htm