CentOS7 安裝與配置vsftpd

1、FTP的安裝

#安裝
yum install -y vsftpd

#設置開機啓動
systemctl enable vsftpd.service

#啓動
systemctl start vsftpd.service

#停止
systemctl stop vsftpd.service

#查看狀態
systemctl status vsftpd.service

 

2、配置FTP 

#打開配置文件
vim /etc/vsftpd/vsftpd.conf

#顯示行號
:set number

#修改配置 12 行
anonymous_enable=NO

#修改配置 33 行
anon_mkdir_write_enable=YES

#修改配置48行
chown_uploads=YES

#修改配置72行
async_abor_enable=YES

#修改配置82行
ascii_upload_enable=YES

#修改配置83行
ascii_download_enable=YES

#修改配置86行
ftpd_banner=Welcome to blah FTP service.

#修改配置100行
chroot_local_user=YES

#添加下列內容到vsftpd.conf末尾
use_localtime=YES
listen_port=21
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
data_connection_timeout=1
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=1
allow_writeable_chroot=YES

 

3、建立用戶文件

#創建編輯用戶文件
vim /etc/vsftpd/virtusers
#第一行爲用戶名,第二行爲密碼。不能使用root作爲用戶名 

batac
123456

 

4、生成用戶數據文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

#設定PAM驗證文件,並指定對虛擬用戶數據庫文件進行讀取

chmod 600 /etc/vsftpd/virtusers.db 

 

5、修改 /etc/pam.d/vsftpd 文件

複製代碼

# 修改前先備份 

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

vi /etc/pam.d/vsftpd
#先將配置文件中原有的 auth 及 account 的所有配置行均註釋掉
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers 
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers 

# 如果系統爲32位,上面改爲lib

複製代碼

 

6、新建系統用戶vsftpd,用戶目錄爲/home/vsftpd

#用戶登錄終端設爲/bin/false(即:使之不能登錄系統)
useradd vsftpd -d /home/vsftpd -s /bin/false
chown -R vsftpd:vsftpd /home/vsftpd

 

7、建立虛擬用戶個人配置文件

複製代碼

mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf

#這裏建立虛擬用戶leo配置文件
touch batac

#編輯leo用戶配置文件,內容如下,其他用戶類似
vi batac

local_root=/home/vsftpd/batac/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

#建立batac用戶根目錄
mkdir -p /home/vsftpd/batac/

 

8、防火牆設置

 

IPtables 的設置方式:
vi /etc/sysconfig/iptables
#編輯iptables文件,添加如下內容,開啓21端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 40000:40010 -j ACCEPT

firewall 的設置方式:
firewall-cmd --zone=public --add-service=ftp --permanent

firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=40000-40010/tcp --permanent 
 

 

9、重啓vsftpd服務器

systemctl restart vsftpd.service

 

10、使用ftp工具連接測試

這個時候,使用ftp的工具連接時,我們發現是可以連接的。傳輸文件的時候,會發現文件上傳和下載都會出現

500、503 、200等問題。這個時候,可以進行以下操作:

方式一、關閉SELINUX

#打開SELINUX配置文件
vim /etc/selinux/config


#修改配置參數
#註釋  
SELINUX=enforcing

#增加  
SELINUX=disabled


#修改完成後,需要重啓!

方式二、修改SELINUX

setenforce 0 #暫時讓SELinux進入Permissive模式


#列出與ftp相關的設置
getsebool -a|grep ftp


#以下是顯示出來的權限,off是關閉權限,on是打開權限。不同的機器顯示的可能不一樣。我看了我的顯示的,和網上其他教程就不太一樣
ftp_home_dir --> off
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
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off


#將包含有 ftp_home_dir 和 ftpd_full_access 相關的都設置爲 1

setsebool -P ftp_home_dir 1
setsebool -P allow_ftpd_anon_write 1
setsebool -P ftp_home_dir 1

setenforce 1 #進入Enforcing模式

方式三、 SELINUX不對vsftp不做任何限制

setsebool -P ftpd_connect_all_unreserved 1

 

這個時候再使用工具連接,你發現,就可以正常的上傳和下載文件了。

 

如果還是有問題嘗試給我們用戶的ftp目錄,設置一下操作權限

chmod -R 777 /home/vsftpd/leo
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章