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

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