跳至主要內容

FTP安装卸载

wangdx大约 7 分钟

配置 FTP 服务

ubuntu20.04 配置 ftp 服务器-java 通过 ftpClient 处理文件示例open in new window

配置文件详解open in new window

配置文件详解 2open in new window

如果你的项目没有其他的用户要进行访问,仅仅是自己(管理员)进行服务的操作,那么没有必要去配置 FTP 服务,但是如果说你现在项目之中的数据需要有其他人进行维护,使用 FTP 就比较常见了。

FTP 属于文件传输协议,也是 TCP/IP 协议组之中的组成之一,主要用于“C/S”网络程序架构,需要提供完整的服务端以及客户端的支持,其中如果使用的是 Linux 系统,可以直接轻松的实现服务端的构建。

https://www.cnblogs.com/sll0917/p/16557685.html

修改端口--https://blog.csdn.net/weixin_40918067/article/details/117839423

#1、 【UBuntu 系统】通过官方仓库下载 vsftpd 组件。
apt-get -y install vsftpd
vsftpd -v
netstat -ntpl
sudo systemctl status vsftpd
#2.【UBuntu 系统】通过 vsftpd 下载后可以直接得到一个 FTP 的账户,同时也提供了 FTP 服务的操作命令,
#但是为了方便管理,需要修改一下 FTP 账户的密码,将账户密码设置为“ftp”
passwd ftp
#3.【UBuntu 系统】vsftpd 组件会内置一个 FTP 上传目录,这个目录直接在“/srv/ftp”,如果要想使用需要进行授权配置。
chmod 777 /srv/ftp/
#4、【UBuntu 系统】打开 vsftpd 服务配置文件
vim /etc/vsftpd.conf

#我们仅允许本地用户访问FTP服务器
anonymous_enable=NO
local_enable=YES
##配置写入权限 启用上传
write_enable=YES
##主自录限定 为防止FTP用户访问其主目录之外的任何文件,请取消注释chroot设置
local_root=/home/$USER/ftp
##允许查看列表 限制用户登录
chroot_list_enable=YES
##用户配置列表
chroot_list_file=/etc/vsftpd.chroot_list
#被动FTP连接 必须将用户的可写访问权限授予其主目录允许用户在chroot环境中创建或修改文件
#vsftpd可以使用任何端口进行被动FTP连接。我们将指定端口的最小和最大范围,然后在防火墙中打开该范围。
allow_writeable_chroot=YES
pasv_min_port=30000
pasv_max_port=30088
#vsftpd可以使用任何端口进行被动FTP连接。我们将指定端口的最小和最大范围,然后在防火墙中打开该范围。
#启用此选项后,您需要通过将用户名添加到/etc/vsftpd.user_list文件(每行一个用户)来明确指定哪些用户可以登录。
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

#使用SSL / TLS保护传输
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

local_root=/www/data/ftp

#5.【UBuntu 系统】通过 ftp 用户列表配置 ftp 账户名称
echo ftp> /etc/vsftpd.chroot_list
vim /etc/vsftpd.chroot_list
#6.【UBuntu 系统】配置 FTP 授权控制文件

vim /etc/pam.d/vsftpd

#注释
##auth   required        pam_shells.so
#7、【UBuntu 系统】重新启动 vsftpd 服务进程
service vsftpd restart
service vsftpd start | stop | restart
reboot
netstat -ntpl
#8.【本地系统】此时的 FTP 服务就已经配置完成了,但是 FTP 操作一般都需要提供有客户端,推荐使用 Fileziila 组件,
#该组件也属于免费组件,可以直接登录“”下载。
#9.【FileZilla 工具】将下载下来的 FTP 工具直接进行安装,而后做出服务的配置接口
cs /srv/ftp
ll
#10、【FileZia 工具】除了使用 FTP 协议进行连接之外,其实如果说管理员就是 FTP 操作者,
#那么也可以直接通过 FTP 连接 SSH,通过 SSH 实现文件的上传,以当前的应用为例,账户为:root/root;
#11.卸载 ftp
sudo apt-get -y remove --purge vsftpd


#如果您正在运行 UFW防火墙,则需要允许FTP通信。

#要打开端口21(FTP命令端口),端口20(FTP数据端口)和30000-31000(被动端口范围),请运行以下命令:

sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
#为避免被锁定,请打开端口22:

sudo ufw allow OpenSSH
#通过禁用和重新启用UFW重新加载UFW规则:

sudo ufw disable
sudo ufw enable
#要验证更改,请运行:

sudo ufw status

#  目录尽量不要选择根目录下,这里是/home/ftp_test,并且ftp_test这个目录不要手动创建,否则权限会有问题,执行命令的时候会自动创建,
useradd -s /usr/sbin/nologin -d /www/data/ftp -m ftp_yix
#可以看到权限现在是对于ftp_test用户是可读可写可执行的,其他用户和组下面的都没有任何权限,现在为ftp_test用户创建密码:
passwd ftp_test

echo "ftp_yix" | sudo tee -a /etc/vsftpd.user_list

如何在 Ubuntu 20.04 上使用 SSL/TLS 安装和配置 FTP 服务器 (vsftpd)open in new window

安装

#安装 vsftpd
sudo apt update
sudo apt -y install vsftpd
#测试
vsftpd -v
#备份原始配置文件
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

配置防火墙

# 检查防火墙的状态
sudo ufw status

#我们可以看到,到目前为止只允许使用 SSH 端口。让我们打开端口 20(FTP 命令端口)、21(FTP 数据端口)、990 供我们使用 TLS 时使用,端口 35000-40000 用于我们将来可能需要的被动端口范围。
sudo ufw allow 20:21/tcp
sudo ufw allow 990/tcp
sudo ufw allow 35000:40000/tcp
sudo ufw status

配置 vsftpd

  • FTP 访问 我们将只允许本地用户访问 FTP,并禁用任何匿名访问。为此,请确保存在以下行并且如下所示。
  • 启用文件上传
  • Chroot 监狱 当用户被限制在某个目录时,FTP 工作得最好。 vsftpd 通过使用 chroot 监狱来实现这一点。当为本地用户启用 chroot 时,默认情况下他们被限制在他们的主目录中。为此,请取消注释以下行。
  • 1.FTP 访问
vim /etc/vsftpd.conf
....
#FTP访问
anonymous_enable=NO
local_enable=YES
#启用文件上传
write_enable=YES
#Chroot监狱
chroot_local_user=YES
#1.
user_sub_token=$USER
local_root=/home/$USER/ftp
#2. allow_writeable_chroot=YES
#被动FTP
pasv_min_port=30000
pasv_max_port=30100
#限制用户
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
....


#重新启动 vsftpd 以启用配置
sudo systemctl restart vsftpd

配置用户目录

# 添加新用户。
sudo adduser ftp_yix
#将用户添加到允许的 FTP 用户列表
echo "ftp_yix" | sudo tee -a /etc/vsftpd.userlist
echo "ftp_yix" | sudo tee -a /etc/vsftpd.chroot_list
#创建 FTP 和文件目录
#这一步是如果你想要一个不同的目录作为 FTP 根目录和一个不同的目录来上传文件来绕过 chroot 监狱限制。
sudo mkdir /www/data/ftp
echo "vsftpd test file" | sudo tee /www/data/ftp/test.txt

卸载 FTP

#关闭ftp
systemctl stop vsftpd.service
#卸载ftp
sudo apt-get -y remove --purge vsftpd
#推荐删除用户及目录方法:
sudo deluser --remove-home -f ftp_yix
#仅删除用户方法:
sudo deluser -f ftp_yix
#强制删除
userdel -f ftp_yix

#删除后可使用命令查看用户是否被删除:
grep bash /etc/passwd

conf

local_umask=022(放开权限) 在 vsftpd 配置文件中,local_umask 参数用于设置上传文件时的默认权限掩码。默认情况下,上传的文件权限为 666,上传的目录权限为 777。如果设置了 local_umask 参数,则会根据该参数设置的掩码来计算上传文件和目录的权限。

默认的 umask 为 077 表示新建文件的权限为 600,新建目录的权限为 700。umask 是一种权限掩码,用于控制新建文件和目录的默认权限。它是一个三位八进制数,每一位表示一种权限(读、写、执行),0 表示允许,1 表示禁止。umask 的值是从默认权限掩码中减去的,例如,umask 为 077,表示从默认权限掩码中减去 777,得到的结果就是新建文件的权限为 600,新建目录的权限为 700。这样设置可以保证新建的文件和目录只有所有者有读写执行的权限,其他用户没有任何权限。

local_umask=022 表示上传的文件权限为 644,上传的目录权限为 755。其中,022 是一个三位八进制数,表示文件权限掩码。在 Linux 系统中,文件权限掩码用于控制文件的默认权限。它是一个三位八进制数,每一位表示一种权限(读、写、执行),0 表示允许,1 表示禁止。例如,022 表示允许所有者和组成员读写,其他用户只能读取;755 表示所有用户都可以读、写、执行。

demo


上次编辑于: