Linux台式机搭建FTP服务器
Posted XXX_UUU_XXX
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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自带火狐浏览器实施模拟点击,
下载完成后,把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软件连接实现上传和下载功能
以上是关于Linux台式机搭建FTP服务器的主要内容,如果未能解决你的问题,请参考以下文章
台式机CentOS7安装&GitLab11.10.4搭建ftp安装