Linux台式机搭建FTP服务器

Posted XXX_UUU_XXX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux台式机搭建FTP服务器相关的知识,希望对你有一定的参考价值。

目录

Linux搭建FTP服务器

设置开机自动联网

内网端口映射


本文采用gedit编辑文件,方便复制,推荐学习vim

Linux搭建FTP服务器

首先换源:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

sudo gedit /etc/apt/sources.list
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

deb http://cn.archive.ubuntu.com/ubuntu bionic main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-updates main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-security main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic main multiverse restricted universe

更新源

sudo apt-get update

安装vsftpd

sudo apt-get install vsftpd

修改文件

sudo gedit /etc/vsftpd.conf

修改内容为,直接复制,覆盖原有代码

# 禁止匿名用户登录
anonymous_enable=NO
# 允许系统用户登录
local_enable=YES
# 启用可以修改文件的 FTP 命令
write_enable=YES
# 本地用户创建文件的 umask 值
local_umask=022
# 允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
dirmessage_enable=YES
# 开启日记功能 
xferlog_enable=YES
# 使用标准的20端口来连接ftp 
connect_from_port_20=YES
# 使用标准日志格式 
xferlog_std_format=YES
# 如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录
chroot_list_enable=YES
# 指定限制的用户文件
chroot_list_file=/etc/vsftpd/chroot_list
# ftp服务器将处于独立启动模式
listen=YES
# 设置一个本地用户登录后进入到的目录
local_root=/home/ftp
# 设置PAM认证服务的配置文件名称,该文件保存在“/etc/pam.d/”目录下
pam_service_name=vsftpd
# ftp将检查userlist_file设置文件中指定的用户是否可以访问vsftpd服务器
userlist_enable=YES
# 只允许user_list文件中记录的ftp用户能登录vsftp服务,其他的ftp用户都不可以登录。
userlist_deny=NO
# 定义限制/允许用户登录的文件
userlist_file=/etc/vsftpd/allowed_users  
# ftp服务器将使用tcp_wrappers作为主机访问控制模式
tcp_wrappers=YES
# 连接ftp服务费使用的端口
listen_port=21

创建文件夹和文件

sudo mkdir /etc/vsftpd

cd /etc/vsftpd

sudo touch chroot_list

sudo touch allowed_users

创建FTP根目录,并添加目录权限

sudo mkdir /home/ftp

sudo chmod -R 777 /home/ftp

添加用户,密码

sudo useradd -d /home/ftp -s /sbin/nologin chuangxin

sudo passwd chuangxin

在/etc/shells文件末尾添加

sudo gedit /etc/shells

添加到末尾

/sbin/nologin

添加用户到/etc/vsftpd/allowed_users

sudo gedit /etc/vsftpd/allowed_users

chuangxin

重启vsftpd服务

service vsftpd restart

查看vsftpd服务状态,绿灯表示正常连接

service vsftpd status

查看本机局域网ip

ifconfig

测试ftp连接

ftp 19.168.x.x

连接成功返回:

230 Login successful

设置开机自动联网

sudo apt-get install python3-pip

sudo apt-get install python3-bs4

pip3 install selenium

pip3 install requests

使用Ubuntu自带火狐浏览器实施模拟点击,

火狐webdriver下载地址

下载完成后,把geckodriver放到/usr/bin/目录下,并执行

chmod 777 /usr/bin/geckodriver

创建/home/chuangxin/auto_connect/auto_connect.py文件,注:下面py代码非原创,本文对登录部分稍加修改,忘记哪篇文章的作者写的了……

#coding:utf-8

from selenium import webdriver
from bs4 import BeautifulSoup
import time
import requests

username_str = "xxxxxxx" # 用户名
password_str = "xxxxxxx" # 密码

class Login:
    def login(self):
        try:
            #time.sleep(60)
            driver = webdriver.Firefox()
            driver.get("http://xxxxxxx.edu.cn/") # 校园网登录的网址
            time.sleep(3)
            username_input = driver.find_element_by_xpath('//*[@placeholder="账号"]')
            password_input = driver.find_element_by_xpath('//*[@placeholder="密码"]')
            login_button = driver.find_element_by_xpath('//*[@value="登录"]')

            username_input.send_keys(username_str)
            password_input.send_keys(password_str)
            login_button.click()
            #time.sleep(5)
        except:
            print(username_input[2].text)
            print(self.getCurrentTime(), u"登陆函数异常")
        finally:
            driver.close()


    #获取当前时间
    def getCurrentTime(self):
        return time.strftime('[%Y-%m-%d %H:%M:%S]',time.localtime(time.time()))

    #判断当前是否可以连网
    def canConnect(self):
        try:
            baidu_request=requests.get("http://www.baidu.com")
            if(baidu_request.status_code==200):
                baidu_request.encoding = 'utf-8'
                baidu_request_bsObj = BeautifulSoup(baidu_request.text, 'html.parser')
                baidu_input = baidu_request_bsObj.find(value="百度一下")
                if baidu_input==None:
                    return False
                return True
            else:
                return False
        except:
            print ('error')

    #主函数
    def main(self):
        print (self.getCurrentTime(), u"Hi,SEU自动登陆脚本正在运行")
        while True:
            while True:
                can_connect = self.canConnect()
                if not can_connect:
                    print (self.getCurrentTime(),u"断网了...")
                    try:
                        self.login()
                    except:
                        print(self.getCurrentTime(), u"浏览器出了bug")
                    finally:
                        time.sleep(2)
                        if self.canConnect():
                            print(self.getCurrentTime(), u"重新登陆成功")
                        else:
                            print(self.getCurrentTime(), u"登陆失败,再来一次")
                else:
                    print (self.getCurrentTime(), u"一切正常...")
                    time.sleep(5)
                time.sleep(1)
            time.sleep(self.every)

login = Login()
login.main()

创建脚本文件/home/chuangxin/auto_connect/auto_start.sh

#!/bin/bash


python3 /home/chuangxin/auto_connect/auto_connect.py &


exit 0

在ubuntu的搜索框中查找Startup Applications

点击add添加Name和Command

  • Name:随便写
  • Command:/usr/bin/gnome-terminal -x bash -c "/home/chuangxin/auto_connect/auto_start.sh;exec bash"

内网端口映射

可参考Windows端口映射,原理一样都是

网址输入192.168.1.1打开路由器管理,进入虚拟服务器,添加端口21和ip(192.168.x.x)

最后可以通过FileZillaxftp软件连接实现上传和下载功能

以上是关于Linux台式机搭建FTP服务器的主要内容,如果未能解决你的问题,请参考以下文章

台式机CentOS7安装&GitLab11.10.4搭建ftp安装

Linux---Linux中Ubuntu镜像之下搭建FTP服务

Linux搭建FTP服务器

ubuntu16.04搭建ftp服务器

Linux搭建FTP服务器

基于Linux CentOS搭建FTP服务