CentOS7下搭建ftp服務器

centos7搭建ftp服務器
應用場景 本地windows作爲客戶端,虛擬機CentOS7作爲服務器端,搭建FTP服務器,本地訪問虛擬機實現文件的上傳下載。

1.安裝vsftpd服務#
1、安裝vsftpd: yum install vsftpd -y
2、啓動vsftpd: systemctl start vsftpd
3、設置開機啓動:systemctl enable vsftpd
2.關閉防火牆#
在虛擬機上使用沒必要一個一個端口放行,直接關閉防火牆,一勞永逸 

systemctl stop firewalld      #停止防火牆運行
systemctl disable firewalld   #禁止開機啓動

3.添加訪問用戶#
 創建的FTP目錄如下:
 mkdir -p /data/ftp
 useradd -d /data/ftp -s /sbin/nologin ftpuser         #/data/ftp爲ftp文件目錄 可自定義     ftpuser 爲添加的用戶名 
 echo "mima2020" | passwd ftpuser --stdin            #設置用戶密碼,執行命令
 
設置主目錄(更改登錄時看到的目錄,看個人需要更改,如果第4步已設置好,此步可忽略)
 usermod -d /data/ftp ftpuser
 
FTP目錄/data/ftp 並給他設置爲所有者,並賦予755的權限
chown -R ftpuser /data/ftp
chmod 755 -R /data/ftp

4.配置ftp相關內容#

[root@localhost 20190425]# getsebool -a | grep ftp
ftp_home_dir --> on
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on
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和sftpd_full_access狀態,可通過一下命令執行
setsebool -P allow_ftpd_full_access on                 #允許ftp訪問外網
setsebool -P ftp_home_dir on         #允許ftp訪問home

 5.配置用戶權限#
到這裏已經可以使用訪問FTP了,我們也可以自定義修改ftp相關配置


#執行vim /etc/vsftpd/vsftpd.conf 查看

anonymous_enable=YES                            #允匿名訪問
local_enable=YES                                       #允許本地用戶訪問
anon_root=/data/ftp                                     #使用匿名登入時,所登入的目錄
local_root=/data/ftp                                     #設置本地用戶的登錄目錄
write_enable=YES                                      #允許本地用戶寫入
local_umask=022                                        #匿名用戶的掩碼
anon_upload_enable=YES                         #打開匿名用戶的上傳權限
anon_mkdir_write_enable=YES                  #允許匿名登入者有新增目錄的權限只有在write_enable=YES時, 此項纔有效.
dirmessage_enable=YES
xferlog_enable=YES                                    #啓用日誌
connect_from_port_20=YES

chown_uploads=YES
chown_username=ftpuser
#xferlog_file=/var/log/xferlog
xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails
chroot_local_user=YES                             #允許本地賬戶登錄
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list        #chroot_list 這個文件不存在,就要自己手動創建:/tmp/sms_file/*

allow_writeable_chroot=YES

#ls_recurse_enable=YES
listen=YES                                           #開啓IPV4監聽
listen_ipv6=NO                                    #關閉IPV6監聽
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
 

我只對匿名訪問,允許訪問做了更改,anonymous_enable=NO、allow_writeable_chroot=YES

現在可以在在windows資源管理器或者瀏覽器,輸入ftp://IP PORT 進行訪問

也可以在命令行訪問

登陸成功。

6.常用命令#
下載文件可以通過命令行執行
pwd           #打印當前目錄
ls            #查看文件 
lcd            #設定本地下載目錄
get filename          #文件下載
mget *           #文件批量下載
put filename            #文件上傳
mput *          #批量上傳

到此我們的ftp服務器搭建就結束了。

1.1 輸入ftp://IP地址,可看到ftp下的目錄(pub爲系統預設的)
yum -y install ftp

2.2、使用anonymous登陸,無需密碼
ftp 174.25.0.206

ftp://ftpuser:[email protected]

================================================================================
Vsftpd權限等配置正確,報500,550解決方法
原創smahorse 發佈於2013-01-07 18:01:16 閱讀數 6059  收藏
展開
本人在配置完VSFTPD,使用的過程中遇到了500 cannot create file 的報錯

查了很多解答,都說是權限的問題

我的FTP用戶爲 ftpuser

我爲他建立了一個根目錄 /home/ftp   並給他設置爲所有者,並賦予755的權限

  chown -R ftpuser /home/ftp
  chmod 755 -R /home/ftp

所以我肯定不是權限的問題

後來我用ROOT用戶登錄FTP 又發現有550的報錯,後來查550 發現可能是selinux啓用的原因,關掉後就可以解決問題。具體如下:

vsftpd正常設置
但登陸後不能創建,也不能刪除提示550錯誤
解決辦法可以關掉selinux=disable
[root@host]# vi /etc/selinux/config
----------------------------------------------------------------------------------
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=disabled
#把這裏改成disable
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted
-------------------------------------------------------------------------------------
 
如果在想不重啓系統的情況下關掉SELINUX,可以輸入命令:
setenforce 0

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