搭建一个Linux FTP服务器,可以使用很多种方法,但是在虚拟机上搭建比较方便,本文将介绍在虚拟机上搭建FTP服务器的方法。
确定虚拟机配置与系统
首先,你需要确定要在哪个虚拟机上搭建FTP服务器,这里假设你将使用VMware Workstation,并已经安装好了Ubuntu 20.04 LTS操作系统。此外,你还需要确定你要给FTP服务器分配多少资源,例如内存、处理器和磁盘空间。
安装vsftpd
在Ubuntu 20.04 LTS上安装vsftpd很简单,只需要运行以下命令就可以:
sudo apt update
sudo apt install vsftpd
配置vsftpd
安装vsftpd之后,你需要对其进行配置。在Ubuntu 20.04 LTS上,vsftpd的配置文件位于/etc/vsftpd.conf
。你可以使用文本编辑器(例如nano)打开文件并编辑它。
以下是一些常用配置项:
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
pam_service_name=vsftpd
listen=NO
listen_ipv6=YES
解释一下这些选项的含义:
anonymous_enable=NO
: 禁用匿名FTP登录local_enable=YES
: 允许用户通过FTP登录chroot_local_user=YES
: 将用户视为本地用户write_enable=YES
: 允许用户上传和下载文件local_umask=022
: 设置FTP上传的文件权限dirmessage_enable=YES
: 允许发送提示消息xferlog_enable=YES
: 将ftp上传下载记录到日志文件中connect_from_port_20=YES
: 启用从20号端口连接数据
创建FTP用户
在vsftpd的配置文件中,你可以将用户视为本地用户。所以在创建FTP用户之前,你需要先在Ubuntu上创建一个本地用户。
创建一个名为“ftpuser”的本地用户,使用以下命令:
sudo useradd -m ftpuser -s /bin/bash
sudo passwd ftpuser
设置ftpuser的密码,最好使用强密码。
接下来,你需要将ftpuser添加到vsftpd用户列表中。在/etc/vsftpd.user_list
文件中添加ftpuser:
ftpuser
连接FTPS服务器
在虚拟机上运行vsftpd之后,你可以通过FTP客户端连接到FTP服务器。例如,使用FileZilla连接:
- 打开FileZilla
- 在“主机”字段中输入虚拟机的IP地址
- 在“用户名”中输入ftpuser的用户名
- 输入ftpuser的密码
- 在端口字段中输入21
- 单击“连接”
创建FTP虚拟用户(示例1)
有时候需要创建多个FTP用户,而这些用户都需要访问同一个ftp目录。为了方便管理,这些用户可以是FTP虚拟用户。
- 创建虚拟用户目录
FTP虚拟用户的所有文件都将存储在一个目录中。首先,你需要创建这个目录。使用以下命令创建名为“ftproot”的目录:
sudo mkdir /ftproot
- 创建虚拟用户并添加密码
使用以下命令创建虚拟用户并设置密码:
sudo useradd -d /ftproot/vuser1 -s /usr/sbin/nologin vuser1
sudo passwd vuser1
其中,-d /ftproot/vuser1
指定vuser1的家目录,-s /usr/sbin/nologin
指定vuser1的shell为一个无用的shill。
- 创建虚拟用户目录
使用以下命令创建vuser1的文件夹:
sudo mkdir /ftproot/vuser1
- 修改目录权限
使用以下命令修改vuser1的文件夹权限:
sudo chown vuser1:vuser1 /ftproot/vuser1
sudo chmod 700 /ftproot/vuser1
- 编辑vsftpd的虚拟用户配置文件
在/etc/vsftpd.conf
中添加以下内容:
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/ftproot/$USER
chroot_local_user=YES
hide_ids=YES
创建FTP虚拟用户(示例2)
有时候你需要创建一个虚拟用户,他只能访问一个目录的子目录,而不能访问其他目录。下面我们以“sub1”目录和“sub2”目录为例,介绍如何创建这个虚拟用户:
- 创建虚拟用户目录
使用以下命令创建名为“ftproot”的目录,以存储虚拟用户:
sudo mkdir /ftproot
- 创建ftp用户并设置密码
使用以下命令创建一个ftp用户,并设置一个密码:
sudo useradd -d /ftproot -s /usr/sbin/nologin ftp
sudo passwd ftp
注意:你需要使用一个不同的用户名和密码来代替“ftp”和“password”的值。
- 创建子目录
使用以下命令创建“sub1”和“sub2”目录:
sudo mkdir /ftproot/sub1
sudo mkdir /ftproot/sub2
- 将子目录分配给虚拟用户
使用以下命令将“sub1”目录分配给虚拟用户:
sudo mkdir /ftproot/ftp/sub1
然后,使用以下命令将“sub2”目录分配给虚拟用户:
sudo mkdir /ftproot/ftp/sub2
- 配置vsftpd
现在,你需要编辑/etc/vsftpd.conf
文件,以允许虚拟用户只能访问特定目录中的文件。
添加以下内容:
user_sub_token=$USER
local_root=/ftproot/ftp
chroot_local_user=YES
hide_ids=YES
这些设置将允许虚拟用户只能访问“/ftproot/ftp”目录中的文件,并将root放在该目录中。使用“hide_ids”命令将FTP用户的UID和GID隐藏,这样,虚拟用户将只能看到ftp的文件夹和他分配的目录。
这样,你就可以使用FTP客户端连接到FTP服务器,使用虚拟用户进行文件传输。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux ftp服务器 虚拟机做服务器如何实现 - Python技术站