vsftpd 权限 600 不能下载 vsftpd 不能删除 vsftpd 配置文件 linux 搭建 ftp 服务器

速通指南:这里不用看

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 的缩写,?)。

一些参考资料:

配置权限

vsftp关于权限的条目配置_兰博不基尼_51CTO博客

说明书

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)

删除权限

FTP(vsftpd) for CentOS7 - 系统运维 - 亿速云 (yisu.com)


版权声明:本文为u010180372原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。