速通指南:这里不用看
windows10 下的蜜汁 QoS 政策对 ftp 极不友好。所以为了方便之后抄作业,这里贴一个 linux 局域网内用的 ftp 服务器的配置文件和说明,直接 Ctrl+C 、V 用就是了。对于要公网上用的,可能需要配置更多权限相关的东西,这个我感觉不是必要的,因为一般公网上不用走 ftp 协议,可以用 http 搞定。比如可以用 nginx,或者自己写的带 http 协议的网络库 。ftp 和 http 都是走 TCP 协议的,ftp 比 http 早10年出现。当然局域网使用的时候,ftp 方便快捷,本身也自带 ls/dir(ll) 和 cd 的功能,方便各种软件使用(比如 rsync 以及各种带网络访问的文件管理器)。
ftp 的主动被动模式其实就是,ftp 本身是带外传输(广义),21 其实只是信令端口,一般数据还要开一个 20 走. 被动模式会让服务器用连接去等客户端的请求,客户端不需要开放 20 端口入站。不过实际服务器对入站的管控更加严格,主动模式也不错。不过我上面也说了,现在再做公网高性能文件服务器也一般不用 ftp 了。
速通指南:这里也不用看
vsftpd 是一个服务器应用,Very Secure FTP。Secure 的要点就在于他有很复杂的权限和虚拟用户控制。当然还有其他的 ftp 服务器。其实我本身是没事找事了,因为我想要的是一个 very 不 secure ftp。
读者应了解 linux 的文件权限机制,文后附带了参考资料,速通指南。
一 安装
通过 vsftpd -v 命令查看是否已经安装了。没有的话,通过 apt-get install 安装。
二 复制粘贴配置文件
主要备注一下怎么配置成允许匿名登录使用上传下载和删除。对于下面配置字段的内容具体是什么可以 google 或者 baidu。
记得替换文件之前备份 mv /etc/vsftpd.conf /etc/vsftpd.conf.bak 养成良好习惯。
下面这个配置直接支持 anonymous/ftp 匿名用户登录(实际 anonymous 会使用系统的 ftp 用户),指定目录为 ano_root 。也开启了 local 用户访问,默认用户会进入到 home 下面。如果要 ban 调 local 用户,去设置 user_list 就行了。
# /etc/vsftpd.conf
anonymous_enable=YES
# 这里是一个ftp连接后的默认目录,本身目录必须是 777,owner 是 ftp 或者 anonymous
anon_root=/home/XXXXXXXXXXXXXXXXXXXX/ftp
no_anon_password=YES
local_enable=YES
write_enable=YES
anon_other_write_enable=yes
virtual_use_local_privs=YES
anon_world_readable_only=NO
file_open_mode=0777
# 这里的前导零一定要匹配,
anon_umask=0022
local_umask=0022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_std_format=NO
nopriv_user=nobody
listen=YES
pam_service_name=ftp
tcp_wrappers=YES
use_localtime=YES
local_max_rate=1000000000000一个要点是:anon_root=/home/XXXXXXXXXXXXXXXXXXXX/ftp 这个文件夹的意思是 chroot ,限制了 root 路径(root 路径其实就是 / 目录(通过 stat 可以看到他的权限,是只有 root 有写权限)),对于 anonymous 用户,root 将会被 chroot 到这个目录,所以为了安全要求,ftp 用户不能对这个目录具有写权限。而采用 local user 登录的时候,虽然默认会跳转(cd)到 home/XXXX 下,但是可操作的 root 还是在 / 的。而 ftp 用户的 / 就是 ftp 目录了。
这个 ftp 路径,必须是 ftp 用户的权限(一般是 everyone 权限,即 rwxrwxrwx 中的右边3个字母决定的),如果是 local 用户,进入 home,home 本身也是不可写的。
三 启动服务器
然后启动:
sudo /etc/init.d/vsftpd restart
或者用 systemctl 或者 service 启动,对于这些东西是什么我在这里讲过了:负载均衡概述 LVS、反向代理、四层负载均衡、七层负载均衡 Nginx 负载均衡_我说我谁呢 --CSDN博客
https://blog.csdn.net/u010180372/article/details/122578252?spm=1001.2014.3001.5502
四 客户端登录
C:\Users\>ftp 172.XX.XX0.10
连接到 172.XX.XX0.10。
220 (vsFTPd 3.0.3)
200 Always in UTF8 mode.
用户(172.XX.XX0.10:(none)): ftp
230 Login successful.之后就能使用了。
本地 pwd 和 cd 命令整合为 lcd(local change directory)
ls 为服务器 ls,dir 为 服务器 ll (list files - long)
get 和 put。删除是 delete, rm 是删除文件夹(因为他其实是 rmdir 的缩写,?)。
一些参考资料:
配置权限
说明书
Manpage of VSFTPD.CONF (beasts.org)ppp
配置 anon_umask 确保上传的文件不是 600
ftp - Default owner/permissions of created files via VSFTPD - Server Fault
调的过程突然搞了个 t 权限出来。话说这个 d - rwx -rwx -rwx 分别是 owner-group-everyone 老容易忘记了
Linux 文件基本属性 | 菜鸟教程 (runoob.com)
删除权限