Ubuntu系统搭建FTP服务器的超详细教程

技术教程 2026-01-08 21:05:27 浏览
目录

Ubuntu 系统版本:Ubuntu 22.04.2 LTS

1. 安装 VSFTPd 软件包

执行以下命令安装vsftpd

sudo apt-get updatesudo apt-get install vsftpd

执行后你讲看到如下输出:

执行命令查看版本,验证是否安装成功

执行成功后你将看到如下输出:

2. 配置文件

以下是我翻译后的默认配置文件(地址 /etc/vsftpd.conf):

# 示例配置文件,地址: /etc/vsftpd.conf## vsftpd的默认编译设置比较谨慎,这个示例文件会放宽一些限制,使ftp服务更加易用。# 同时建议查看vsftpd.conf.5文件以了解所有编译默认值。## 特别提醒:这个示例文件并不包含vsftpd选项的所有内容,建议阅读vsftpd.conf.5手册页以充分了解vsftpd的功能。#### 用来设置vsftpd是否以独立守护进程运行。# 如果设置为"listen=YES",则表示vsftpd将作为独立守护进程运行;# 如果设置为"listen=NO",则表示vsftpd将不会以独立守护进程运行,而是通过inetd或者initscript启动。listen=NO## 设置vsftpd是否启用IPv6监听。# 如果设置为"listen_ipv6=YES",则表示vsftpd将启用IPv6监听;# 如果设置为"listen_ipv6=NO",则表示vsftpd将不会启用IPv6监听。# 默认情况下,IPv6监听地址为"::",同时可以接受IPv6和IPv4客户端的连接。# 如果你只需要监听IPv4或IPv6地址,则不需要同时启用两种监听,如果你需要同时监听特定的IPv4和IPv6地址,则需要运行两个vsftpd实例,并使用两个不同的配置文件来进行配置。listen_ipv6=YES## 设置是否允许匿名FTP登录。anonymous_enable=NO## 设置是否允许本地用户登录FTP服务器。local_enable=YES## 设置是否允许FTP用户执行写入操作。# write_enable=YES## 设置本地用户的默认umask值。# umask是一个三位八进制数,用来控制新建文件或目录的访问权限。# 在FTP服务器中,local_umask选项用来设置本地用户上传文件或创建目录时的默认权限。# 默认情况下,local_umask的值为077,表示新建的文件或目录权限为只有所有者可读、可写、可执行,其他用户无权访问。# 如果你的用户希望默认权限为所有者可读、可写、可执行,其他用户可读、可执行,则可以将local_umask的值设置为022。local_umask=022## 设置是否允许匿名FTP用户上传文件。# 如果将该选项的注释去掉(即将“#”删去),并将其值设置为YES,则表示允许匿名FTP用户上传文件。# 但是,这个选项只有在全局写入权限被激活时才会生效。此外,你还需要创建一个由FTP用户可写的目录,以便匿名FTP用户可以上传文件。# 需要注意的是,开启匿名FTP用户上传文件功能可能存在一定的安全风险,因此需要谨慎使用。# anon_upload_enable=YES## 设置是否允许匿名FTP用户创建新目录。# 如果将该选项的注释去掉(即将“#”删去),并将其值设置为YES,则表示允许匿名FTP用户创建新目录。# 需要注意的是,开启匿名FTP用户创建新目录功能可能存在一定的安全风险,因此需要谨慎使用。# anon_mkdir_write_enable=YES## 这段配置文件是用来设置是否启用目录消息功能。# 如果设置为YES,则表示启用目录消息功能。当远程用户进入某个目录时,会显示该目录的消息。dirMessage_enable=YES## 设置是否启用本地时间功能。# 启用本地时间功能后,vsftpd将会在目录列表中显示本地时间而非GMT时间。use_localtime=YES## 启用上传和下载日志记录功能。# 启用该功能后,vsftpd会记录每个用户的上传和下载操作,并将其记录到指定的日志文件中。xferlog_enable=YES## 设置数据传输的端口号。# 将其值设置为YES,则表示数据传输使用的端口号为20。connect_from_port_20=YES## 设置匿名用户上传的文件的所有者。# 设置为YES,则表示上传的文件将会被转换为指定用户的所有权。# chown_uploads=YES# 设置为指定的用户名。# chown_username=whoever## 设置vsftpd日志文件的路径。该路径必须具有可写权限,并且对于vsftpd进程来说,必须具有可访问权限。# xferlog_file=/var/log/vsftpd.log## 设置vsftpd日志文件的格式。设备为YES则存储为标准ftpd xferlog格式。# xferlog_std_format=YES## 设置vsftpd空闲会话超时的时间(以秒为单位)。# idle_session_timeout=600## 设置vsftpd数据连接超时的时间(以秒为单位)。#>
local_enable=YESwrite_enable=YESchroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd.chroot_list

也可以加上这段配置(路径可以自定义):

# 设置FTP用户的本地根目录,也就是说,FTP用户登录后,其工作目录将被限制在该目录及其子目录下。local_root=/data/liss/data

以下是设置截图(后面还有,按需配置):

当然你可以会有一些特殊需求,比如限制一些用户不能切换到其他目录:

注意: 如果限制了用户不能切换其他目录,一定要在配置文件中新增 服务器 allow_writeable_chroot=YES ,否则会报错: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

3. 创建FTP用户

一般情况下会在home下新建一个FTP的主目录,然后建一个普通用户如下:

# 创建FTP用户主目录sudo mkdir /home/uftp# 添加FTP用户uftp,指定用户主目录和所用shell# `-d` 选项指定用户的主目录,也就是用户登录后所在的默认目录。在这个例子中,`-d /home/uftp` 指定 `uftp` 用户的主目录为 `/home/uftp`。# `-s` 选项指定用户的默认shell。Shell是一个命令行解释器,它允许用户与操作系统进行交互。在这个例子中,`-s /bin/bash` 指定 `uftp` 用户的默认shell为Bash。sudo useradd -d /home/uftp -s /bin/bash uftp# 设置密码sudo passwd uftp

但是也有特殊需求,我想要创建一个不能登录只能通过ftp访问的用户,并且我需要指定用户主目录是一个已经存在的目录:

# 创建uftp用户,指定此用户的主目录。# `-d` 选项用于指定用户的主目录;`-s` 选项用于指定用户的默认 shell。# `/sbin/nologin` 是一个特殊的 shell,它不允许用户登录系统.# 通常用于限制某些用户只能通过特定的服务(如FTP、SFTP等)进行远程访问,# 而不能直接登录系统。sudo useradd -d /data/liss -s /sbin/nologin uftp# 设置密码sudo passwd uftp# 如果想要恢复为正常用户,可以执行以下命令:sudo usermod -s /bin/bash uftp

如果你创建的用户是只能通过ftp访问的用户,一定要删除 /etc/pam.d/vsftpd 配置文件,因为这个配置文件会导致使用用户名登录 ftp 失败!!!

4. 添加vsftpd.chroot_list

编辑 /etc/vsftpd.chroot_list 文件,用于存放允许访问FTP的用户

# 如果不存在会自动创建sudovim /etc/vsftpd.chroot_list
# 如果不存在会自动创建sudo vim /etc/vsftpd.chroot_list

然后将刚刚创建的FTP用户添加进去.

如果是多个用户,箭头替换。

5. 重启FTP服务使配置生效

sudo service vsftpd restart

使用 ps -aux | grep vsftpd 查看服务是否启动

6. 测试效果

FileZilla测试连接成功

Ubuntu FTP服务器的权限设置

在Ubuntu中设置FTP服务器的权限,主要涉及到用户权限管理和文件系统权限设置。以下是详细的步骤和配置方法:

安装FTP服务器软件

首先,确保已经安装了FTP服务器软件。常用的FTP服务器软件包括vsftpd和Pure-FTPd。以下是使用vsftpd作为示例的安装步骤:

sudo apt updatesudo apt install vsftpd

配置vsftpd

编辑vsftpd配置文件以允许FTP用户访问:

sudo nano /etc/vsftpd.conf

在文件中添加以下行以启用本地用户访问:

local_enable=YESwrite_enable=YES

创建FTP用户和目录

创建一个FTP用户并设置密码,以及分配FTP用户的家目录:

sudo adduser ftpusersudo usermod -d /var/ftp ftpuser

设置用户权限

/etc/vsftpd.conf 文件中,可以设置用户访问权限,例如:

chroot_local_user=YESallow_writeable_chroot=YES

配置文件系统权限

确保FTP用户有权限访问FTP服务器的根目录:

sudo chmod -R 755 /var/ftp

配置防火墙

如果系统启用了防火墙,需要配置防火墙规则以允许FTP流量通过:

sudo ufw allow 20/tcpsudo ufw allow 21/tcpsudo ufw allow 30000:31000/tcpsudo ufw reload

重启vsftpd服务

应用更改后,重启vsftpd服务:

sudo systemctl restart vsftpd

测试FTP服务器

使用ftp客户端软件(如FileZilla)连接到FTP服务器,使用FTP用户名和密码进行身份验证。

通过以上步骤,您可以为Ubuntu FTP服务器设置用户权限,确保数据的安全传输和管理。

以上就是Ubuntu系统搭建FTP服务器的详细内容,更多相关资料请阅读主机测评网其它文章!

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐