[Share Experiences] 自己作为新手的vsftpd之路(一)(实现匿名用户登陆)
Tofloor
poster avatar
176******80
deepin
2022-01-22 03:43
Author

前提:

1、适用环境:时间:2022.01.21. Deepin桌面20社区版:20.4. vsftpd的版本号:(3.0.3-12)。

2、使用背景:身边有台笔记本,有部手机,平时手机开热点给笔记本使用(正好二者在同一局域网内)。

3、使用需求:需要手机能直接看电脑上的下载好的电影、电视剧,且二者之间方便直接文件互传。

前期工作:(下载地址后面有)

1、手机安装ES文件管理器:4.2.2.4.

2、手机安装Xplayer 2.2.4

正文:

1、安装vsftpd

(1)打开“终端”,输入su,以root用户登陆。##普通用户应该也行,root更方便。

jss@jss-PC:~$ su
请输入密码:
验证成功
root@jss-PC:/home/jss#

(2)安装vsftpd,输入apt install vsftpd进行安装。###安装完成后会显示vsftpd的版本号。

root@jss-PC:/home/jss# apt install vsftpd
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
vsftpd 已经是最新版 (3.0.3-12)。

##可以用“vsftpd -v”查询是否安装成功。

root@jss-PC:/home/jss# vsftpd -v
vsftpd: version 3.0.3

##输入service vsftpd start 启动vsftpd服务器,没有任何提示:如下。

root@jss-PC:/home/jss# service vsftpd start
root@jss-PC:/home/jss#

##然后输入service vsftpd status 查看vsftpd服务器运行状态:如下表示启动成功。

*root@jss-PC:/home/jss# service vsftpd status
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-01-20 06:54:13 CST; 1 day 1h ago
Process: 1459 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
Main PID: 1465 (vsftpd)
Tasks: 1 (limit: 4915)
Memory: 89.3M
CGroup: /system.slice/vsftpd.service
└─1465 /usr/sbin/vsftpd /etc/vsftpd.conf*

1月 20 06:54:13 jss-PC systemd[1]: Starting vsftpd FTP server...
1月 20 06:54:13 jss-PC systemd[1]: Started vsftpd FTP server.

2、配置”vsftpd.conf “文件。

##这是最头痛的一步。从上面的步骤可以看出啥也不改一样可以运行,但是用不了。

(1)打开deepin自带的‘’文件管理器‘’,点一下左边的系统盘(新装的deepin,不知道从什么时候开始分盘了),然后点上面的搜索,输入‘’vsftpd.conf''搜索,文件在‘’/etc/vsftpd.conf''。可能是deepin系统或vsftpd版本的原因,这个文件位置会略有不同。

未命名.jpg

未命名2.jpg

(2)右键这个文件,打开文件所在位置。

未命名3.jpg

然后在打开的文件夹空白处右键,以管理员身份打开,获得修改的权限。

未命名4.jpg

找到vsftpd.conf这个文件,先在这个位置给它复制一份作为备份。然后打开原文件看看:

##下面是默认情况下启用的配置项:(可以核对一下看看)

listen=NO

listen_ipv6=YES

anonymous_enable=NO

local_enable=YES

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

connect_from_port_20=YES

secure_chroot_dir=/var/run/vsftpd/empty

pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

##下面是我的修改后的参数:(除了anon_root的那一行,其它的可以整个复制粘贴替换原有参数,原文件里的内容可以全删除。)

listen=NO
listen_ipv6=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_root=/data/home/jss/Downloads/ftpfiles

#上面这一行要改成自己电脑里的路径,怎么改,我在下面说明。
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

##下面是对比图:

未命名5.jpg

##关于这个路径:anon_root=/data/home/jss/Downloads/ftpfiles #这个就是用来共享的文件夹的路径。

1)anon_root 这个参数如果不设置会默认指向 /srv/ftp 这个路径。这个路径在系统盘里,有权限,且系统盘空间不大。

2)在数据盘的下载文件夹下新建名为:ftpfiles 的文件夹,然后右键复制这个文件夹,点上面的搜索图标,右键粘贴就看到自己的路径了。

3)将这个路径复制下来,粘贴替换我这个。

##关于修改后的参数说明:

1、anonymous_enable=YES #允许匿名登录。

2、write_enable=YES #允许写入,后面的几条依赖这个。

3、anon_root=/data/home/jss/Downloads/ftpfiles

4、anon_upload_enable=YES #允许匿名上传
5、anon_mkdir_write_enable=YES #允许匿名建文件夹
6、anon_other_write_enable=YES #允许匿名者删除、重命名

(3)修改好后保存退出。

3、测试:

(1)、终端输入:service vsftpd restart 重启服务器

接着输入:service vsftpd status 查看服务器状态

##像前面的那样没有红色报错就没事。

(2)、打开手机ES 文件管理器,点FTP 下面的扫描,等一会,选电脑的那个ip地址,取消匿名前面的勾,输入用户名和密码。

#第一种:用户名:ftp 密码:ftp #这是匿名用户默认的,我的ES管理器用户密码全留空登录不上。这个目录就是上面设置的那个。

#第二种:用户名:本地用户名(例如我的:jss) 密码:×××(自己的密码),也能登上,我才发现的-_-|.

应该是这条 local_enable=YES 控制的,而且权限更高,更好用,这是和电脑权限真正同步的,路径就是家目录。

##关于电脑ip地址的查看:

方法1、将鼠标轻轻放在无线网络图标上,就能看见。

未命名6.jpg

方法2、或者打开终端,输入:ifconfig ,看下面wl这条。

wlo1: flags=4163 mtu 1500
inet 192.168.43.172

4、结束

这样就应该就能行了。

#想直接看电脑里的电影,手机上建议安装一个叫xplayer的软件,下载地址:www.mpyit.com/xplayerapk.html我喜欢的一个不错的个站,ES也可以从这里下-_-.

补充:

##查找vsftpd.conf文件时,可以直接在“终端”输入:find / -name vsftpd.conf 第一个就是:

root@jss-PC:/home/jss# find / -name vsftpd.conf
/etc/vsftpd.conf
/home/jss/Desktop/vsftpd.conf
/data/root/.local/share/Trash/files/vsftpd.conf
/data/home/jss/Desktop/vsftpd.conf
/usr/lib/tmpfiles.d/vsftpd.conf
/usr/share/doc/vsftpd/examples/INTERNET_SITE/vsftpd.conf
/usr/share/doc/vsftpd/examples/VIRTUAL_USERS/vsftpd.conf
/usr/share/doc/vsftpd/examples/INTERNET_SITE_NOINETD/vsftpd.conf
/root/.local/share/Trash/files/vsftpd.conf

看着还有好多,后面可以慢慢研究。

##会用nano或vim的可以直接:nano /etc/vsftpd.conf 等

##走了很多弯路,也许还在弯路里(就像上面刚发现的,本地用户可登录,是不是还可以简化vsftpd.conf的配置),后面再试试。

##借鉴了很多网上教程,最后提一个https://www.cnblogs.com/rongkang/p/10005775.html 借鉴这位前辈的较多,在此感谢!

##后面还有仨个方向,慢慢试,慢慢记录吧!

Reply Favorite View the author
All Replies
176******80
deepin
2022-01-22 04:03
#1

#刚才试了一下,上面写了这么多,其实只需要在默认的 vsftpd.conf 中将这条write_enable=YES前面的“#”号删除掉,启用这条配置就可以实现在手机上用电脑的用户登录了。就已经满足我的日常需求了。好弯的一条路啊!!!

Reply View the author
Maicss
deepin
2022-01-22 05:17
#2

其实如果只是轻度的用于局域网内的文件或者多媒体共享,samba比较简单,也可以使用python3 -m http.server命令为当前目录创建http服务器,这样对方只要有http的链接就可以访问了。

Reply View the author
176******80
deepin
2022-01-22 05:31
#3
Maicss

其实如果只是轻度的用于局域网内的文件或者多媒体共享,samba比较简单,也可以使用python3 -m http.server命令为当前目录创建http服务器,这样对方只要有http的链接就可以访问了。

谢谢!我试过一加手机的samba,速度不如ftp。华为手机harmonyos的samba速度优秀。

我试试你说的后者。

Reply View the author
176******80
deepin
2022-01-26 02:03
#4
Maicss

其实如果只是轻度的用于局域网内的文件或者多媒体共享,samba比较简单,也可以使用python3 -m http.server命令为当前目录创建http服务器,这样对方只要有http的链接就可以访问了。

我找到了一个大神编的http.server.py.支持上传,下载功能,挺好用的。https://github.com/JevenM/HTTP_SERVER

Reply View the author