在Linux系统中创建FTP账户通常涉及安装FTP服务器软件、配置用户权限、设置安全策略等步骤,以下是详细的操作指南,以常用的vsftpd(Very Secure FTP Daemon)为例,涵盖从安装到账户配置的全流程,并附常见问题解答。

安装FTP服务器软件
vsftpd是Linux系统中广泛使用的FTP服务器,因其安全性和稳定性被推荐使用,安装步骤因Linux发行版而异:
基于Debian/Ubuntu的系统
使用apt包管理器安装,执行以下命令:
sudo apt update sudo apt install vsftpd -y
基于CentOS/RHEL的系统
使用yum或dnf包管理器安装(以CentOS 7为例):
sudo yum install vsftpd -y
安装完成后,启动vsftpd服务并设置开机自启:
# 启动服务 sudo systemctl start vsftpd # 设置开机自启 sudo systemctl enable vsftpd
配置vsftpd核心参数
vsftpd的配置文件位于/etc/vsftpd/vsftpd.conf,通过修改该文件可以控制用户访问权限、目录限制、匿名登录等行为,以下是关键配置项及其说明:
| 配置项 | 默认值 | 建议值 | 说明 |
|---|---|---|---|
| anonymous_enable | YES | NO | 是否允许匿名用户登录,建议关闭以提升安全性 |
| local_enable | NO | YES | 是否允许本地用户登录 |
| write_enable | NO | YES | 是否允许用户上传/修改文件 |
| chroot_local_user | NO | YES | 是否将用户限制在其家目录中(防止越权访问) |
| allow_writeable_chroot | YES | NO | 当chroot_local_user启用时,是否允许用户在chroot目录中写入(需配合write_enable=YES) |
| pasv_min_port | (空) | 10000 | 被动模式最小端口,避免与系统端口冲突 |
| pasv_max_port | (空) | 10100 | 被动模式最大端口 |
| userlist_enable | YES | YES | 是否启用用户列表文件(/etc/vsftpd/user_list) |
| userlist_file | /etc/vsftpd/user_list | /etc/vsftpd/user_list | 用户列表文件路径 |
| tcp_wrappers | YES | YES | 是否使用TCP Wrappers控制访问(结合hosts.allow/deny) |
配置步骤:
-
备份原始配置文件:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
-
编辑配置文件:
sudo nano /etc/vsftpd/vsftpd.conf
-
修改或添加以下配置(根据实际需求调整):
anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES allow_writeable_chroot=YES pasv_min_port=10000 pasv_max_port=10100 userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO # 仅允许user_list中的用户登录(若设置为YES,则拒绝列表中的用户)
-
保存文件后,重启vsftpd服务使配置生效:

sudo systemctl restart vsftpd
创建FTP专用用户
直接使用系统用户存在安全风险(如SSH登录权限),因此建议创建独立的FTP用户,并限制其权限。
创建用户并设置家目录
使用useradd命令创建用户,-d参数指定家目录(作为FTP根目录),-s参数指定登录shell(/sbin/nologin禁止SSH登录):
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
-m:自动创建家目录(若不存在);-d /home/ftpuser:设置家目录为/home/ftpuser,后续FTP用户将只能访问此目录;-s /sbin/nologin:禁止用户通过SSH或终端登录系统。
设置用户密码
为FTP用户设置密码:
sudo passwd ftpuser
根据提示输入密码两次,密码建议包含大小写字母、数字及特殊字符,确保安全性。
限制用户权限(可选)
若需限制用户只能上传文件而不能删除,可设置目录权限:
# 设置家目录权限为755(所有者可读写执行,组用户和其他用户可读执行)
sudo chmod 755 /home/ftpuser
# 设置文件权限为644(所有者可读写,组用户和其他用户只读)
sudo find /home/ftpuser -type f -exec chmod 644 {} ;
配置防火墙与SELinux
防火墙配置
确保防火墙允许FTP流量(以CentOS 7为例,使用firewalld):
# 添加FTP服务到防火墙规则 sudo firewall-cmd --permanent --add-service=ftp # 重新加载防火墙 sudo firewall-cmd --reload
若使用iptables,需开放FTP主动模式(21端口)和被动模式(10000-10100端口):
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 10000:10100 -j ACCEPT sudo service iptables save
SELinux配置(若启用)
SELinux可能阻止FTP访问,需设置相关布尔值或上下文:
# 允许FTP用户读写家目录 sudo setsebool -P ftpd_full_access on # 设置家目录SELinux上下文为public_content_rw_t(允许读写) sudo semanage fcontext -a -t public_content_rw_t "/home/ftpuser(/.*)?" sudo restorecon -R /home/ftpuser
测试FTP账户
使用FTP客户端工具(如FileZilla、命令行ftp)测试登录:

ftp localhost
输入用户名(ftpuser)和密码,若成功登录且无法切换到家目录外,则配置正确。
常见问题排查
-
用户无法登录
- 检查
/etc/vsftpd/user_list文件是否包含用户名(若userlist_deny=NO,则必须添加); - 确认用户密码是否正确,或尝试
sudo passwd重置密码; - 查看vsftpd日志(
/var/log/vsftpd.log)定位错误信息。
- 检查
-
用户无法上传文件
- 检查
write_enable=YES是否在配置文件中启用; - 确认家目录权限是否为755,文件权限是否为644;
- 若启用SELinux,执行
setsebool -P ftpd_full_access on。
- 检查
FAQs
问题1:如何限制FTP用户只能访问指定目录,而不能浏览系统其他目录?
答:通过配置chroot_local_user=YES可将用户限制在其家目录中,若需限制用户只能访问家目录下的子目录(如/home/ftpuser/ftp),可创建子目录并设置软链接:
sudo mkdir /home/ftpuser/ftp sudo ln -s /home/ftpuser/ftp /ftp # 可选:创建软链接方便访问
确保家目录权限为755,子目录权限为777(若需上传)或755(只读)。
问题2:如何创建多个FTP账户并分配不同目录权限?
答:重复“创建FTP专用用户”步骤,为每个用户指定不同的家目录(如useradd -d /home/ftpuser1 -s /sbin/nologin ftpuser1),并通过chroot限制其访问范围,若需允许用户访问公共目录,可设置目录组权限并添加用户到同一组:
sudo groupadd ftpgroup sudo usermod -a -G ftpgroup ftpuser1 sudo usermod -a -G ftpgroup ftpuser2 sudo chown -R root:ftpgroup /home/ftpdata sudo chmod -R 775 /home/ftpdata
这样,ftpuser1和ftpuser2均可读写/home/ftpdata目录。
通过以上步骤,即可在Linux系统中安全、高效地创建和管理FTP账户,实际操作中需根据安全需求调整配置,避免开放不必要的权限。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/36135.html