linux安装ftp服务器

Linux上安装ftp记录,学习借鉴how2j网站


百度一下:

https://baike.baidu.com/item/FTP/13839?fr=aladdin

ftp的全称是 File Transfer Protocol 。 文件传输协议。ftp就是用来我们把本地的文件传输到服务器上,或者从服务器上下载文件用的。


Linux上的ftp服务器有各种型号,选择使用vsftpd,全称是:very secure FTP daemon ,非常安全的ftp后台程序。

基本安装

  1. 安装命令 : yum install vsftpd -y
    在这里插入图片描述
    执行之后,最后看到Complete! 就表示安装成功了

  2. 查看服务启动状态
    systemctl start vsftpd.service
    systemctl status vsftpd.service

第一步是用来启动vsftpd服务,不一定需要,因为 安装命令 结束后就会自动启动,但是有时候不会自动启动,所以还是加上

可以看到最后 Started vsftpd ftp daemon 已经启动成功了
在这里插入图片描述

  1. 服务启动和关闭
    systemctl stop vsftpd.service
    systemctl start vsftpd.service
    systemctl status vsftpd.service

  2. 检查端口 netstat -anp|grep 21
    ftp服务启动的是21端口,使用如下命令应该观察到21端口正在处于监听状态,这也从侧面反应了ftp服务器启动成功了

创建用户

  1. 要连接上 vsftpd 服务器需要为Linux创建专门的用户。

  2. 在Linux中,不同用户是有不同目录访问权限的,所以首先创建一个目录,作为这个ftp用户所拥有的目录。
    mkdir -p /home/work/ftpuser

  3. 创建用户
    执行如下命令,创建用户ftpuser,并且指定其目录为用户目录中创建的/tset/ftpuser :
    useradd -d /home/work/ftpuser -g ftp -s /sbin/nologin ftpuser
    -g ftp 表示该用户属于ftp分组 (ftp分组是内置的,本来就存在,不需要自己创建)
    -s /sbin/nologin 表示这个用户不能用来登录secureCRT这样的客户端。 这种不能登陆的用户又叫做虚拟用户

  4. 设置目录权限
    chown -R ftpuser /home/work/ftpuser
    chmod -R 775 /home/work/ftpuser
    把目录 /test/ftpuser的拥有者设置为ftptest
    使ftpuser用户拥有这个目录的读写权限

  5. 设置密码
    passwd ftpuser
    在这里插入图片描述

  6. 查看一下之前的设置是否成功
    ls -l .home/work
    在这里插入图片描述

配置用户

  1. 接下来在vsftpd服务器中配置该用户

  2. 去掉匿名登陆
    默认情况下vsftpd服务器是允许匿名登陆的,这样非常不安全,所以要把这个选项关闭掉。
    首先通过vi命令打开ftp服务器配置文件:
    vi /etc/vsftpd/vsftpd.conf
    然后把本来的(本来为no就不管)
    anonymous_enable=YES
    修改为
    anonymous_enable=NO
    在这里插入图片描述

  3. 限制用户访问
    什么叫做限制用户访问呢?创建的ftpuser用户所拥有的目录是 /test/ftpuser,如果不做限制,那么使用ftpuser登陆之后可以切换到其他敏感目录去,比如切换到/usr目录去,这样就存在巨大的安全隐患。
    为了规避这个隐患,需要限制ftpuser用户只能通过ftp访问到 /test/ftpuser 目录以及子目录。
    配置办法:
    首先通过vi命令打开ftp服务器配置文件:
    vi /etc/vsftpd/vsftpd.conf
    找到:
    #chroot_list_enable=YES
    #(default follows)
    #chroot_list_file=/etc/vsftpd.chroot_list
    并修改为:
    chroot_list_enable=YES
    #(default follows)
    chroot_list_file=/etc/vsftpd/chroot_list在这里插入图片描述
    chroot_list_enable=YES: 表示对用户访问进行限制
    chroot_list_file=/etc/vsftpd/chroot_list 表示对chroot_list里面指定的用户进行限制 下一个步骤用户清单就会对chroot_list 这个文件进行编辑

  4. 用户清单
    接着上一个步骤,在chroot_list中添加ftptest用户
    首先通过vi命令打开chroot_list文件(此文件本来是空的):
    vi /etc/vsftpd/chroot_list
    然后增加一行: ftpuser
    在这里插入图片描述

  5. 允许写权限
    vsftpd服务器是一旦某个用户被限制访问了,那么默认情况下,该用户的写权限也被剥夺了。 这就导致ftp客户端连接上服务器之后无法上传文件。
    这个时候,就需要打开此用户的写权限,请按照如下办法操作:
    首先通过vi命令打开ftp服务器配置文件:
    vi /etc/vsftpd/vsftpd.conf
    在最后面新加一行:
    allow_writeable_chroot=YES
    在这里插入图片描述

配置端口

  1. vsftpd有两种端口,一个是21端口,用来监听客户端连接请求的。 这个一般说来是固定的,就一直使用21端口。
    另一种是,一旦获取到请求之后,再专门用户服务端和客户端传输数据的端口。本知识点就是用于指定第二种端口的获取范围

  2. 配置端口
    打开配置文件:
    vi /etc/vsftpd/vsftpd.conf
    在最后添加:
    pasv_enable=YES
    pasv_min_port=30000
    pasv_max_port=30010
    这表示使用被动模式,用于传输数据的端口分配从30000-30010之间。在这里插入图片描述

关于鉴权

因为用户 ftpuser 是 nologin的,所以存在鉴权的问题。 如果鉴权问题不解决,就是永不停息的 530错误。
解决办法有如下两种:

  1. 方式一: pam.d/vsftpd 文件顶折
    vi /etc/pam.d/vsftpd
    注释掉/etc/pam.d/vsftpd文件里这一行:
    #auth required pam_shells.so
    这样不去鉴权,从而允许 ftptest 这种 nologin用户登录 ftp 服务器.

  2. 方式二:shells 文件顶折
    vi /etc/shells
    在/etc/shells文件里面增加一行:
    /sbin/nologin
    这样允许不能登录系统的用户通过鉴权
    在这里插入图片描述

重启vsftpd服务器顶折

通常重启使用的命令是

service vsftpd restart

但是centos7之后,改用的命令是如下方式:

systemctl restart vsftpd.service

最后执行查看状态,以查看重启成功了

systemctl status vsftpd.service
在这里插入图片描述

开放端口

  1. 简介
    要访问Linux的端口,必须开通才行。
    22就是SecureCRT链接Linux服务器用的端口号。
    3389 是阿里云控制台链接用的端口,这里没有用到。
    只有这两个端口号是不够用的,为了能够链接vsftpd服务器还需要开放21端口和 30000-30010端口

  2. 安全组设置
    登陆阿里云后,按照如下顺序选择:云服务器ECS->安全组->配置规则
    在这里插入图片描述

部署Linux ftp客户端

  1. ftp客户端使用ftprush.

在这里插入图片描述

  1. 连接
    菜单栏选择->站点->快速连接对话框
    在这里插入图片描述
    输入主机地址,创建的ftpuser用户名和设置的ftpuser密码进行连接。

  2. 连接成功
    在这里插入图片描述

  3. 尝试一下互相传文件
    本地新建一个test.txt文件,上传到远程服务端上
    在这里插入图片描述
    linux查看一下,传输成功
    在这里插入图片描述

至此,本次的练习成功完成,不过期间还是会遇到一些问题,在此记录一下

  1. 在ftprush连接ftp用户是出现了:
    500 OOPS: cannot change directory: /…
    翻译一下:500 OOPS:不能更改目录
    看意思是权限问题,自己也改,也百度了很多,最多的答案是:
    chmod -R 777 /… 将目录的权限全部打开,还有一些其他解决方法
    不过我的问题不在此,我的错误在于,在创建用户时自己在根目录创建了一个目录,而没有在/home 目录下创建用户目录,修改之后连接成功,至于为什么要在/home 目录下才能连接成功,简单的思考了一下。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值