vsftp(Very Secure FTP)是一款在Linux系统中广泛使用的FTP服务器软件,以其安全性高、性能稳定和配置灵活等特点受到众多用户的青睐,掌握vsftp的常用命令是管理和使用vsftp服务的基础,无论是服务器的启动、停止,还是用户的管理、文件的传输,都离不开这些命令的支持,下面将详细介绍vsftp的常用命令,涵盖服务管理、用户管理、文件操作等多个方面,帮助用户更好地掌握vsftp的使用。

服务管理命令
vsftp服务的启动、停止和重启是日常管理中最基本的操作,在Linux系统中,通常使用systemctl或service命令来管理vsftp服务,对于使用systemd的系统(如CentOS 7、Ubuntu 16.04及更高版本),可以使用以下命令:
- 启动服务:
sudo systemctl start vsftpd
- 停止服务:
sudo systemctl stop vsftpd
- 重启服务:
sudo systemctl restart vsftpd
- 重新加载配置(不中断服务):
sudo systemctl reload vsftpd
- 设置开机自启:
sudo systemctl enable vsftpd
- 禁止开机自启:
sudo systemctl disable vsftpd
对于较旧的系统(如CentOS 6),则使用service命令:
- 启动服务:
sudo service vsftpd start
- 停止服务:
sudo service vsftpd stop
- 重启服务:
sudo service vsftpd restart
- 重新加载配置:
sudo service vsftpd reload
还可以通过检查服务状态来确认vsftp是否正常运行:
sudo systemctl status vsftpd
或sudo service vsftpd status
,命令会返回服务的运行状态、进程ID(PID)以及是否开机自启等信息。
用户管理命令
vsftp支持匿名用户和本地用户两种登录方式,用户管理主要涉及本地用户的创建、权限设置以及虚拟用户的配置,创建本地用户并设置密码是基础步骤:

- 创建用户:
sudo useradd -m -s /sbin/nologin ftpuser
(-m表示创建用户主目录,-s指定用户登录shell,/sbin/nologin表示禁止ssh登录) - 设置密码:
sudo passwd ftpuser
在vsftp的配置文件(/etc/vsftpd/vsftpd.conf)中,可以通过参数控制用户权限,如anonymous_enable=NO
禁用匿名用户,local_enable=YES
允许本地用户登录,write_enable=YES
允许用户上传文件等,对于需要更精细权限控制的场景,可以使用虚拟用户,虚拟用户是独立的FTP用户,不占用系统用户账号,安全性更高,创建虚拟用户通常包括以下步骤:
- 创建虚拟用户文件(如/etc/vsftpd/virtual_users.txt),格式为奇数行为用户名,偶数行为密码:
virtualuser1 password1 virtualuser2 password2
- 安装db-utils工具并生成数据库文件:
sudo yum install db4-utils
(CentOS)或sudo apt-get install db-util
(Ubuntu),然后执行
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db`生成数据库文件。 - 创建虚拟用户对应的系统用户(用于映射FTP目录):
sudo useradd -d /home/virtual_ftp -s /sbin/nologin virtual_user
,并设置目录权限:sudo chmod 755 /home/virtual_ftp
。 - 配置vsftpd支持虚拟用户,在配置文件中添加以下内容:
guest_enable=YES guest_username=virtual_user user_config_dir=/etc/vsftpd_user_conf pam_service_name=vsftpd.vu
- 创建PAM认证文件:
sudo vi /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/virtual_users account required pam_userdb.so db=/etc/vsftpd/virtual_users
- 为每个虚拟用户创建配置文件(如/etc/vsftpd_user_conf/virtualuser1),设置权限,
local_root=/home/virtual_ftp/virtualuser1 write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES
文件操作命令
文件操作是FTP服务的核心功能,vsftp支持多种文件传输和管理命令,这些命令通常通过FTP客户端工具(如FileZilla、lftp或命令行ftp)连接到服务器后执行,以下是常用的FTP客户端命令:
命令 | 功能描述 |
---|---|
open <host> |
连接到指定的FTP服务器,例如open ftp.example.com |
user <username> <password> |
登录FTP服务器,如果未指定用户名,则默认匿名登录 |
ls |
列出当前目录下的文件和文件夹 |
dir |
详细列出文件信息,包括权限、所有者、大小、修改时间等(与ls类似,但更详细) |
cd <dirname> |
切换到指定目录,例如cd /upload |
lcd <localdir> |
切换本地客户端的当前目录(用于上传/下载时指定本地路径) |
get <remotefile> |
下载远程服务器上的文件到本地当前目录,例如get file.txt |
put <localfile> |
上传本地当前目录下的文件到远程服务器,例如put file.txt |
mget <pattern> |
批量下载符合模式的文件,例如mget *.txt |
mput <pattern> |
批量上传符合模式的文件,例如mput *.jpg |
delete <remotefile> |
删除远程服务器上的文件 |
mkdir <dirname> |
在远程服务器上创建目录 |
rmdir <dirname> |
删除远程服务器上的空目录 |
rename <oldname> <newname> |
重命名远程服务器上的文件或目录 |
! <command> |
执行本地客户端的命令,例如! ls (列出本地当前目录) |
binary |
设置传输模式为二进制(用于传输非文本文件,如图片、压缩包等) |
ascii |
设置传输模式为ASCII(用于传输文本文件) |
passive |
进入被动模式(推荐使用,避免因防火墙问题导致连接失败) |
active |
进入主动模式 |
close |
关闭与当前FTP服务器的连接 |
bye 或 quit |
退出FTP客户端 |
在使用这些命令时,需要注意文件传输模式的设置,对于文本文件(如.txt、.csv、.conf等),可以使用ASCII模式传输,避免因系统换行符差异导致文件损坏;而对于二进制文件(如.exe、.zip、.jpg、.mp3等),必须使用binary模式传输,否则文件内容可能会被破坏,被动模式(passive)是现代网络环境下的推荐模式,因为它可以避免FTP服务器的主动连接被客户端的防火墙拦截。
权限与安全配置命令
vsftp的权限和安全配置主要通过修改配置文件实现,以下是一些关键的配置参数及其作用:
anonymous_enable=NO
:禁用匿名用户登录,提高安全性。local_enable=YES
:允许本地用户登录。write_enable=YES
:允许用户对文件进行写操作(上传、删除、重命名等)。chroot_local_user=YES
:将用户限制在其主目录下,防止用户访问系统其他目录(重要安全措施)。allow_writeable_chroot=YES
:允许被chroot的用户有写权限(需配合chroot_local_user使用,否则可能导致无法登录)。user_sub_token=$USER
:支持动态目录路径,例如local_root=/home/$USER
,为每个用户创建独立目录。pasv_min_port=6000
和pasv_max_port=6010
:设置被动模式下的端口范围,防止端口滥用。max_clients=10
:限制同时连接的最大客户端数量。max_per_ip=5
:限制单个IP的最大连接数。
修改配置文件后,需要执行sudo systemctl reload vsftpd
或sudo service vsftpd reload
使配置生效,还可以通过查看日志文件(如/var/log/vsftpd.log)来监控FTP服务器的访问情况,排查问题。
相关问答FAQs
Q1: 如何解决vsftp上传文件时出现“553 Could not create file”错误?
A: 该错误通常是由于文件权限不足或目录不可写导致的,解决方法如下:
- 检查FTP用户对目标目录的写权限,例如执行
sudo ls -ld /home/ftpuser/upload
,确保权限为755(目录)或644(文件),且FTP用户属于目录所属组或有写权限。 - 如果启用了chroot,确保用户主目录及其上级目录的权限设置正确(例如主目录权限为755,所有者为root或FTP用户)。
- 检查vsftpd配置文件中的
write_enable
是否设置为YES,以及chroot_local_user
和allow_writeable_chroot
的配置是否冲突。 - 确保磁盘空间充足,执行
df -h
检查分区使用情况。
Q2: 如何限制vsftp用户只能访问其主目录,而不能切换到上级目录?
A: 通过配置vsftpd的chroot功能可以实现该限制,具体步骤如下:
- 编辑vsftpd配置文件:
sudo vi /etc/vsftpd/vsftpd.conf
。 - 添加或修改以下参数:
chroot_local_user=YES allow_writeable_chroot=YES
chroot_local_user=YES
表示将所有本地用户限制在其主目录下。allow_writeable_chroot=YES
允许被chroot的用户在其主目录内有写权限(在较新的vsftpd版本中,若未设置此参数,用户可能无法登录)。
- 保存配置文件并重启vsftpd服务:
sudo systemctl restart vsftpd
。 - 验证效果:使用FTP用户登录后,尝试执行
cd ..
切换到上级目录,如果提示“550 Failed to change directory.”,则表示配置成功。