在Linux系统中,FTP(File Transfer Protocol)是一种常用的文件传输协议,广泛应用于文件共享、数据备份等场景,正确查看和管理FTP服务是系统管理员的基本技能,本文将详细介绍在Linux系统中查看FTP服务的多种方法,包括服务运行状态、端口监听情况、配置文件内容、日志信息及用户权限等,并针对常见问题提供排查思路。

检查FTP服务运行状态
FTP服务的运行状态是首要查看的信息,可通过系统服务管理工具确认,Linux主流发行版(如CentOS、Ubuntu)通常使用systemctl管理服务,假设安装的FTP服务器软件为vsftpd(最常用的FTP服务器之一),执行以下命令:
systemctl status vsftpd
命令输出会显示服务的当前状态(Active: active表示正在运行,inactive表示未运行)、PID(进程ID)、启动时间及最近日志片段,若服务未运行,可通过systemctl start vsftpd启动,并通过systemctl enable vsftpd设置开机自启。
若使用其他FTP服务器软件(如proftpd、pure-ftpd),只需将服务名替换即可,例如systemctl status proftpd。
查看FTP服务端口监听状态
FTP服务默认使用21端口进行控制连接(用户登录、命令传输),20端口进行数据传输(文件上传/下载),确认端口监听状态可验证服务是否正常响应请求,常用命令包括netstat和ss(推荐,因ss是netstat的替代品,性能更优)。
使用netstat查看:
netstat -tuln | grep 21
参数说明:-t显示TCP端口,-u显示UDP端口,-l仅显示监听端口,-n以数字形式显示地址(避免DNS解析延迟),若服务正常,输出类似tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN,表示21端口正在监听所有IP地址。
使用ss查看(推荐):
ss -tuln | grep 21
输出格式与netstat类似,但速度更快,尤其在处理大量连接时优势明显。
若未显示21端口监听,需检查服务是否启动(见第一部分),或确认配置文件中是否修改了默认端口(如listen_port=2121)。
检查FTP服务配置文件
FTP服务的核心功能由配置文件定义,查看配置文件可了解服务参数(如是否允许匿名登录、用户权限、目录限制等),不同FTP服务器软件的配置文件路径不同,以下以vsftpd为例:
vsftpd配置文件路径:
cat /etc/vsftpd/vsftpd.conf
若需过滤注释行(以开头的行)和空行,可使用:
grep -v "^#" /etc/vsftpd/vsftpd.conf | grep -v "^$"
常见配置项说明:
| 配置项 | 作用 | 示例值 |
|---|---|---|
anonymous_enable |
是否允许匿名登录 | YES/NO |
local_enable |
是否允许本地用户登录 | YES/NO |
write_enable |
是否允许文件上传/修改 | YES/NO |
chroot_local_user |
是否限制用户仅能访问家目录 | YES/NO |
listen_port |
监听端口 | 21(默认) |
pasv_min_port/pasv_max_port |
被动模式端口范围 | 60000-61000 |
若使用proftpd,配置文件为/etc/proftpd/proftpd.conf;pure-ftpd则为/etc/pure-ftpd/pure-ftpd.conf,配置项名称略有差异,但逻辑类似。

查看FTP服务日志
日志是排查FTP服务问题的关键,记录了用户登录、传输错误、服务异常等信息,不同FTP服务器的日志路径不同:
vsftpd日志:
默认日志路径为/var/log/vsftpd.log,可通过tail -f实时查看最新日志:
tail -f /var/log/vsftpd.log
日志示例:
Sun Dec 10 14:30:00 2023 [pid 1234] CONNECT: Client "192.168.1.100"
Sun Dec 10 14:30:05 2023 [pid 1235] FTP response: "230 Login successful."
Sun Dec 10 14:31:20 2023 [pid 1236] UPLOAD: Client "192.168.1.100", "/home/user/test.txt", size 1024
proftpd日志:
默认路径为/var/log/proftpd/proftpd.log,查看方式相同。
pure-ftpd日志:
默认路径为/var/log/pure-ftpd/pure-ftpd.log,或通过配置文件中的SyslogLevel指定日志级别。
若日志中出现“530 Login incorrect”错误,通常表示用户名或密码错误;“550 Permission denied”则表示文件权限不足。
检查FTP用户权限
FTP用户需具备系统用户权限,且需满足目录访问限制,可通过以下步骤检查:
确认用户是否存在
getent passwd | grep ftp
或查看/etc/passwd文件(cat /etc/passwd | grep ftp),若输出类似ftp:x:14:50:FTP User:/home/ftp:/sbin/nologin,表示用户存在。
检查用户家目录权限
FTP用户的家目录需具备正确的读写/执行权限,
ls -ld /home/ftp
输出应为drwxr-xr-x 2 root root 4096 Dec 10 14:00 /home/ftp,若权限为drwx------(仅root可访问),则其他用户无法登录。

检查用户是否被锁定
若用户密码错误频繁,可能被系统锁定,可通过以下命令检查:
passwd -S ftp
输出中若包含L(如L 12/10/2023 0 99999 7 -1),表示用户已锁定,需用passwd -u ftp解锁。
常用FTP服务查看命令总结
以下表格汇总了查看FTP服务的核心命令及作用,便于快速查阅:
| 命令 | 作用 | 说明 |
|---|---|---|
systemctl status vsftpd |
查看FTP服务运行状态 | 适用于systemd系统,确认服务是否Active |
ss -tuln | grep 21 |
查看FTP端口监听状态 | ss替代netstat,更高效,21为默认控制端口 |
grep -v "^#" /etc/vsftpd/vsftpd.conf |
查看FTP配置文件(过滤注释) | 快速定位关键配置项,如匿名登录、用户权限 |
tail -f /var/log/vsftpd.log |
实时查看FTP服务日志 | 用于监控用户登录、文件传输等实时操作 |
getent passwd | grep ftp |
查看FTP系统用户 | 确认用户是否存在,避免“用户不存在”错误 |
ls -ld /home/ftp |
查看FTP用户家目录权限 | 目录需具备755权限,确保用户可访问 |
常见问题排查
问题1:FTP服务启动失败,提示“Failed to start vsftpd.service”
排查步骤:
- 查看详细错误信息:
journalctl -u vsftpd -n 20,定位具体原因(如配置文件语法错误、端口冲突)。 - 检查配置文件语法:
vsftpd -t -c /etc/vsftpd/vsftpd.conf,若输出“Syntax check successful”则语法正确,否则根据错误提示修改。 - 检查SELinux状态:
getsebool -a | grep ftp,若ftpd_full_access为off,需执行setsebool -P ftpd_full_access on。 - 检查防火墙:
firewall-cmd --list-services,确保ftp服务已添加,或开放21/20端口:firewall-cmd --add-port=21/tcp --permanent。
问题2:用户登录FTP提示“530 Login incorrect”,但密码正确
排查步骤:
- 确认用户是否被锁定:
passwd -S 用户名,若锁定则用passwd -u 用户名解锁。 - 检查
vsftpd.conf配置:local_enable=YES(允许本地用户登录)、write_enable=YES(允许操作)。 - 检查
chroot限制:若chroot_local_user=YES,用户家目录不能有写权限(需755,不能有777),否则会报错。 - 查看日志:
tail -f /var/log/vsftpd.log,确认是否为密码错误或权限问题。
FAQs
Q1:如何查看FTP服务版本?
A:使用FTP服务器软件自带的版本检查命令,
- vsftpd:
vsftpd -v(输出类似“vsftpd: version 3.0.3”) - proftpd:
proftpd -V(显示详细版本及编译参数) - pure-ftpd:
pure-ftpd -v(输出版本及支持的特性)
Q2:如何查看FTP当前连接的用户?
A:可通过以下方式查看:
- 查看系统登录用户:
who,显示当前登录系统的用户(包括FTP用户)。 - 查看FTP服务日志:
tail -f /var/log/vsftpd.log,搜索“CONNECT”或“LOGIN”关键字,记录了登录用户的IP和时间。 - 使用
ftpwho命令(需安装,如CentOS下yum install ftpwho):仅适用于proftpd,显示当前FTP连接的用户及传输状态。
通过以上方法,可全面掌握Linux系统中FTP服务的查看和管理技巧,快速定位并解决常见问题。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/29500.html