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)

*后可以通过FileZilla或xftp软件连接实现上传和下载功能