FTP服务搭建(linux)

一、下载(在线安装可跳过)

1、下载(见网盘)

注:如果需要使用ftp命令,则客户端必须安装,否则无法使用(-bash: ftp: command not found)

二、安装

1、检查是否已经安装了vsftp

首先查看系统中是否成功安装了vsftpd,执行下面命令(有内容则安装了ftp)

rpm -qa | grep vsftpd

2、开始安装

  • 在线安装
yum install vsftpd -y 
  • 若linux处于离线状态则无法使用yum命令安装
离线下载vsftp:
http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd(x86-64)

上传安装包到服务器,放在安装目录,比如/home/ 下

离线安装
rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm 

安装过程可能会报错,缺少依赖:

解决:安装相关依赖(centos7 的最新依赖包在博客资源里,可自行去下载)
rpm -ivh libcap-2.16-5.5.el6.x86_64.rpm
rpm -ivh libcap-devel-2.16-5.5.el6.x86_64.rpm

检查是否安装成功

rpm -qa | grep vsftpd

服务启动

systemctl start vsftpd.service

三、配置

1、进入cd /etc/vsftpd目录

cd /etc/vsftpd

2、编辑vsftpd.conf文件

养成备份的好习惯

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.backup.conf

vim vsftpd.conf 

修改如下:

#禁止匿名登录FTP服务器
anonymous_enable=NO
#允许本地用户登录FTP服务器
local_enable=YES
#本地用户上传文件的umask
local_umask=022
#设置本地用户登录后所在目录
local_root=/home/vsftpd/ftpuser
#全部用户是否被限制在主目录
#如果设置成YES会导致你用java代码创建文件夹时失败,因为他被限制在了宿主目录
#chroot_local_user=YES
#开启被动模式
pasv_enable=YES
pasv_addr_resolve=YES
#FTP服务器公网IP(也就是当前阿里云服务器的公网 IP)
pasv_address=120.xx.xx.xx
#设置被动模式下,建立数据传输可使用port范围的最小值
pasv_min_port=10000
#设置被动模式下,建立数据传输可使用port范围的最大值
pasv_max_port=10088


#是否在进入新目录时显示 message_file 文件中的内容
dirmessage_enable=YES
#启用日志
xferlog_enable=YES
#日志是否进行格式化
xferlog_std_format=YES
#独立服务   
listen=YES
#centos7增加此设置,开启后默认监控ipv4和ipv6
listen_ipv6=NO
#认证模式 
pam_service_name=vsftpd
#启用用户列表 
userlist_enable=YES
#可以上传(全局控制)   
write_enable=YES
#允许下载  
download_enable=YES

3、创建ftp用户

这里主要需要创建的用户无法使用普通登录功能或者telnet,只允许使用ftp登录

useradd -s /sbin/nologin -d /home/vsftpd/ftpuser ftpuser

4、为用户设置密码

passwd ftpuser

5、将该用户加入到用户列表中(可选)

vi /etc/vsftpd/user_list

6、防火墙设置

# 方法一:关闭防火墙
systemctl stop firewalld

# 方法二:开放端口
# 提示:防火墙iptables是centos7之前的服务,centos7开始是firewalld服务,开放端口流程请自行百度。另外注意云服务器需要在云平台上设置安全组开放端口
开启
# iptables -I INPUT -i eth0 -p tcp --dport 20 -j ACCEPT
# iptables  -I OUTPUT -o eth0 -p tcp --sport 20 -j ACCEPT
保存
# /etc/rc.d/init.d/iptables save
重启防火墙
# service iptables restart

7、修改selinux,将SELINUX改为disabled

SELINUX=disabled

8、设置自启

chkconfig vsftpd on

9、服务重启

systemctl restart vsftpd.service

其他命令

#开启
service vsftpd start
#停止
service vsftpd stop
#重启
service vsftpd restart

四、测试

  • 安装ftp客户端后,可以进行测试。230代表连接成功

    #连接ftp服务
    [root@fan102 ~]# ftp 172.16.1.102 21
    Connected to 172.16.1.102 (172.16.1.102).
    220 (vsFTPd 3.0.2)
    Name (172.16.1.102:root): zion
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> quit
    221 Goodbye.
    
  • windows使用FileZilla可以测试ftp是否可以登录

  • linux或mac使用命令

    sftp 用户名@地址登录
    

​ 注:如果登录出现提示331 Please specify the password,执行下面命令即可:

echo "/sbin/nologin" >> /etc/shells

设置ftp用户只能在自己目录中,这里有两种方式

第一种:

chroot_local_user=YES   #设置是否锁定本地用户在自己的主目录中,将所有用户限定在主目录内(登录后无法cd到父目录或同级目录中) 
chroot_list_enable=YES   #设置是否将用户锁定在自己的主目录中 ,YES表示要启用chroot_list_file
chroot_list_file=/etc/vsftpd/chroot_list      #定义哪些用户将会锁定在自己的主目录中,即全体用户都被“限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“不会被限制在主目录下”的用户。

第二种:

chroot_local_user=NO	#NO则所有用户不被限定在主目录内
chroot_list_enable=YES	#YES表示要启用chroot_list_file
chroot_list_file=/etc/vsftpd/chroot_list	#因为chroot_local_user=NO,这时列出的是那些“会被限制在主目录下”的用户。

五、登录失败

1.错误代码:530

530 Login incorrect

#查看日志
tail /var/log/secure

日志内容:pam_unix(vsftpd:auth): authenticatio,pam_unix(vsftpd:auth): check pass pam_unix(vsftpd:auth): authentication failure,logname= uid=0

原因

这个是因为你创建的用户是不需要登陆的你设置了nologin,然后登陆的时候会去/etc/passwd下面检查这个用户,必须为/etc/shells类型才能登陆。

解决

#第四行 设置为nologin,或者注释掉

#修改配置文件
[root@fan102 ~]# vi /etc/pam.d/vsftpd
#第四行 设置为nologin,或者注释掉
1 #%PAM-1.0
2 session    optional     pam_keyinit.so    force revoke
3 auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
4 auth       required     pam_nologin.so
5 auth       include      password-auth
6 account    include      password-auth
7 session    required     pam_loginuid.so
8 session    include      password-auth

2.错误代码:500

500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list

原因:用户没有变更根目录的权限,ftp用户默认的根目录是/home/vsftpd/ftpuser,如果要切换登陆目录,需要给予权限

解决

第一步:

#修改配置文件
vi /etc/vsftpd/vsftpd.conf
 
#内容如下
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

**第二步:**在/etc/vsftpd/vsftpd创建chroot_list并将用户(ftpuser)加入该文件

#创建chroot_list并将用户加入该文件
[root@fan102 ~]# /etc/vsftpd/vsftpd/chroot_list
#文件内容
ftpuser
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值