准備工作
1、centos 卸載vsftpd 刪除原有的vsftpd(卸載前先關閉 vsftpd: systemctl stop vsftpd)
[root@localhost ~]# rpm -aq vsftpd
vsftpd-2.0.5-16.el5_5.1 #此處是查找vsftpd的返回結果
[root@localhost ~]# rpm -e vsftpd-2.0.5-16.el5_5.1
2、驗證是否刪除完成
warning: /etc/vsftpd/user_list saved as /etc/vsftpd/user_list.rpmsave
warning: /etc/vsftpd/ftpusers saved as /etc/vsftpd/ftpusers.rpmsave #刪除時將備份vsftp的用戶列表文件。
3、查找關於 vsftpd 的文件夾,刪除相關的文件
[root@localhost ~]# find / -name vsftpd
刪除歷史文件部分就結束了
開始安裝vsftpd
1、yum安裝vsftp
[root@localhost ~]# yum -y install vsftpd
2、找到/etc/vsftpd文件夾
[root@localhost ~]# cd /etc/vsftpd/
3、啟動vsftpd服務
[root@iZj6ccwnt0ocpvjw1kqkkiZ vsftpd]# systemctl start vsftpd.service
vsftpd就安裝安裝完畢了,下面就需要配置了。vsftp兩種登錄方式:功能一(匿名),功能二(虛擬用戶)推薦配置第二種,可以添加設置用戶。
功能一(匿名):
1、首先我們在企業中ftp服務器,一般情況下都會有個共享服務器,允許員工下載一些公司的軟件或者常用的軟件包(方便,不用再取外網去下載,也省帶寬)
2、vsftp提供了匿名登錄,默認anonymous_enable=YES的情況下,就啟用了匿名訪問,這種情況下你只能把需要給用戶的文件,存放到/var/ftp/pub下(默認路徑),如果想更改的話需要添加anon_root= /data/pub,后面的路徑就是匿名登錄后實際訪問的目錄。如果,總是那么多如果,匿名用戶也需要上傳的功能的話(一般情況下不會的)
功能二(虛擬用戶):
1、備份vsftpd.conf 為vsftpd.conf.bak
[root@iZj6ccwnt0ocpvjw1kqkkiZ vsftpd]# cp vsftpd.conf vsftpd.conf.bak
2、創建ftpuser系統宿主用戶
[root@iZj6ccwnt0ocpvjw1kqkkiZ sbin]# useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
Creating mailbox file: File exists
出現這個問題
原來linux下添加用戶后,會在系統里自動加一個郵箱(系統郵箱)
路徑是:/var/spool/mail/用戶名.
可以直接用命令#rm -rf /var/spool/mail/用戶名 ,這樣就可以再次添加同一名字的用戶
[root@iZj6ccwnt0ocpvjw1kqkkiZ sbin]# rm -rf /var/spool/mail/ftpuser
[root@iZj6ccwnt0ocpvjw1kqkkiZ sbin]# userdel ftpuser
3、再次執行創建宿主用戶命令 OK了
[root@iZj6ccwnt0ocpvjw1kqkkiZ sbin]# useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
4、設置用戶 ftpuser 的密碼
[root@iZj6ccwnt0ocpvjw1kqkkiZ sbin]# passwd ftpuser
Changing password for user ftpuser.
passwd: all authentication tokens updated successfully.
5、把 /home/vsftpd 的所有權給ftpuser.root
[root@iZj6ccwnt0ocpvjw1kqkkiZ home]# chown -R ftpuser.root /home/vsftpd
6、建立虛擬用戶文件
[root@iZj6ccwnt0ocpvjw1kqkkiZ vsftpd]# vi /etc/vsftpd/vuser_passwd
# 編輯內容,下面是 vuser_passwd 內容
ftp1
12345678
ftp2
12345678
:wq!#保存退出
7、生成虛擬用戶數據文件
[root@iZj6ccwnt0ocpvjw1kqkkiZ vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
[root@iZj6ccwnt0ocpvjw1kqkkiZ vsftpd]# chmod 600 /etc/vsftpd/vuser_passwd.db
8、創建用戶配置
[root@iZj6ccwnt0ocpvjw1kqkkiZ vsftpd]# mkdir /etc/vsftpd/vuser_conf
[root@iZj6ccwnt0ocpvjw1kqkkiZ vsftpd]# cd /etc/vsftpd/vuser_conf
[root@iZj6ccwnt0ocpvjw1kqkkiZ vuser_conf]# touch ftp1 ftp2
9、每個文件(ftp1和ftp2寫入如下內容,local_root=/home/vsftpd/ftp1#這里寫入這個用戶的實際存儲路勁)
local_root=/home/vsftpd/ftp1
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
10.創建用戶目錄
[root@iZj6ccwnt0ocpvjw1kqkkiZ vuser_conf]# mkdir -p /home/vsftpd/ftp1
[root@iZj6ccwnt0ocpvjw1kqkkiZ vuser_conf]# mkdir -p /home/vsftpd/ftp2
11、開放端口
vi /etc/firewalld/zones/public.xml
12、服務運維
systemctl restart vsftpd.service # 重啟服務
systemctl start vsftpd.service # 啟動服務
systemctl status vsftpd.service # 服務狀態查看
13、生成虛擬用戶的PAM文件
# cd /etc/pam.d/
備份vsftpd文件
#cp vsftpd vsftpd.bak
[root@iZj6ccwnt0ocpvjw1kqkkiZ pam.d]# vi vsftpd
修改vsftpd文件內容(加入第二和第三行,下面的都全部注釋,注意下面是64位操作系統,如果是32位的話lib64需要改成lib)
#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
注:解決window資源管理器無法訪問的問題
FTP時顯示500 Illegal PORT command的解決
FTP時顯示500 Illegal PORT command的解決局域網用FTP命令訪問外網的FTP SERVER,執行任何命令(如dir,ls,put,get)總是報下面的錯誤
ftp:500 Illegal PORT command. 425
ftp:Use PORT or PASV first
或者是下面的錯誤
ftp:500 Illegal PORT command.
ftp: bind: Address already in use
主要是由於Iptables防火牆不支持
ip_nat_ftp
ip_conntrack_ftp
在linux的ftp服務器上執行下列命令即可解決
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp