Linux如何创建FTP账户并设置密码?

在Linux系统中创建FTP账户并设置密码是常见的文件共享需求,通常使用vsftpd(Very Secure FTP Daemon)作为FTP服务器软件,它轻量、安全且配置灵活,以下将详细介绍在Linux环境下创建FTP账户及密码的完整步骤,包括环境准备、安装配置、用户管理、权限控制及测试验证等内容,确保不同层次的用户都能顺利操作。

linux如何创建ftp账户密码

环境准备与安装vsftpd

在开始之前,需确保系统已联网,并根据发行版选择合适的安装方式,以Ubuntu/Debian和CentOS/RHEL为例:

Ubuntu/Debian系统

# 更新软件包列表
sudo apt update
# 安装vsftpd
sudo apt install vsftpd -y

CentOS/RHEL系统

# 安装EPEL源(若未安装)
sudo yum install epel-release -y
# 安装vsftpd
sudo yum install vsftpd -y

安装完成后,启动vsftpd服务并设置开机自启:

# 启动服务
sudo systemctl start vsftpd
# 开机自启
sudo systemctl enable vsftpd

配置vsftpd核心参数

vsftpd的配置文件位于/etc/vsftpd.conf,需根据需求修改关键参数,确保安全性和功能性,以下是核心参数说明及配置建议:

参数名 默认值 作用说明 推荐值
anonymous_enable YES 是否允许匿名用户登录 NO(禁止匿名)
local_enable YES 是否允许本地用户登录 YES
write_enable YES 是否允许本地用户上传文件 YES
chroot_local_user NO 是否将用户限制在自家目录(防止越权访问) YES(安全)
allow_writeable_chroot NO 是否允许chroot目录可写(需配合chroot_local_user=YES) YES(需上传功能)
pasv_enable YES 是否启用被动模式(推荐,避免防火墙问题) YES
pasv_min_port 0 被动模式最小端口 10000
pasv_max_port 0 被动模式最大端口 10100
userlist_enable YES 是否启用用户列表(控制允许登录的用户) YES
userlist_file /etc/vsftpd.user_list 用户列表文件路径 /etc/vsftpd.user_list
tcp_wrappers YES 是否使用TCP Wrappers访问控制 YES

编辑配置文件:

sudo nano /etc/vsftpd.conf

根据上述表格修改参数,确保以下关键配置正确:

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10100
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
tcp_wrappers=YES

保存后重启vsftpd服务:

sudo systemctl restart vsftpd

创建FTP用户并设置密码

创建系统用户(可选)

若需为FTP服务创建专用用户(而非系统已有用户),可使用useradd命令,例如创建用户ftpuser,家目录为/home/ftpuser,并设置禁止SSH登录(可选):

# 创建用户,家目录为/home/ftpuser,不创建家目录(可选)
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
# 设置密码(交互式)
sudo passwd ftpuser
# 或非交互式(需谨慎,避免密码泄露)
echo "your_password" | sudo passwd --stdin ftpuser

参数说明:

  • -m:自动创建家目录
  • -d:指定家目录(建议单独设置,便于权限控制)
  • -s:指定登录shell(/sbin/nologin禁止SSH登录,提升安全性)

将用户加入允许列表

vsftpd通过userlist_file控制登录用户,需将用户加入/etc/vsftpd.user_list

linux如何创建ftp账户密码

# 编辑用户列表文件
sudo nano /etc/vsftpd.user_list

在文件中添加用户名(每行一个),

ftpuser

若需禁止某些用户登录,可单独创建/etc/vsftpd.user_deny文件(需配置userlist_deny=YES),但通常直接在user_list中管理即可。

配置用户目录权限

为防止用户越权访问,需确保FTP用户的家目录权限正确,并启用chroot限制。

设置家目录权限

用户家目录的属主必须为用户本身,权限通常为755(用户可读写执行,组和其他用户可读执行):

# 修改家目录属主
sudo chown ftpuser:ftpuser /home/ftpuser
# 设置权限
sudo chmod 755 /home/ftpuser

配置chroot限制

chroot_local_user=YES,用户将被限制在自家目录及子目录中,无法访问上级目录,但需注意:若家目录存在writeable_chroot问题(如用户无目录写入权限),可能导致无法登录,此时需确保:

  • 家目录及其上级目录权限正确(如/home权限为755/home/ftpuser755)。
  • 若需允许用户上传,确保家目录内有可写子目录(如mkdir /home/ftpuser/upload && chmod 755 /home/ftpuser/upload)。

防火墙与SELinux配置

防火墙开放端口

vsftpd默认使用21端口(控制连接)和被动模式端口(10000-10100),需在防火墙中开放:

  • Ubuntu/Debian(ufw)
    sudo ufw allow 21/tcp
    sudo ufw allow 10000:10100/tcp
    sudo ufw reload
  • CentOS/RHEL(firewalld)
    sudo firewall-cmd --permanent --add-service=ftp
    sudo firewall-cmd --permanent --add-port=10000-10100/tcp
    sudo firewall-cmd --reload

SELinux配置(若启用)

CentOS/RHEL默认启用SELinux,可能阻止FTP访问,需执行:

# 设置SELinux允许FTP用户家目录写入
sudo setsebool -P ftpd_full_access on
# 或为特定目录设置上下文(如/home/ftpuser)
sudo semanage fcontext -a -t public_content_rw_t "/home/ftpuser(/.*)?"
sudo restorecon -Rv /home/ftpuser

测试FTP账户

命令行测试

使用ftp命令连接本地FTP服务:

linux如何创建ftp账户密码

ftp localhost

输入用户名和密码,登录成功后可执行:

  • ls:列出文件
  • put test.txt:上传文件(需write_enable=YES
  • get test.txt:下载文件
  • quit:退出

图形化工具测试

使用FileZilla等FTP客户端,输入服务器IP、用户名、密码,选择“FTP”协议(若被动模式未启用,可能需手动勾选“使用被动模式”)连接。

常见问题排查

若无法登录或功能异常,可通过以下方式排查:

  1. 查看日志:日志文件位于/var/log/vsftpd.log,可通过tail -f /var/log/vsftpd.log实时查看错误信息。
  2. 检查服务状态sudo systemctl status vsftpd,确认服务是否正常运行。
  3. 验证用户列表:确认用户是否在/etc/vsftpd.user_list中,且无拼写错误。
  4. 检查权限:确认家目录属主和权限正确,SELinux策略未拦截。

相关问答FAQs

Q1:如何限制FTP用户只能访问指定目录(非家目录)?
A:可通过自定义家目录实现,创建用户ftpuser并指定家目录为/var/ftp/files

sudo useradd -m -d /var/ftp/files -s /sbin/nologin ftpuser
sudo chown ftpuser:ftpuser /var/ftp/files
sudo chmod 755 /var/ftp/files

后续操作与常规用户一致,用户将被限制在/var/ftp/files目录中。

Q2:创建FTP账户后无法上传文件,提示“553 Could not create file”,如何解决?
A:通常由权限或chroot配置导致,可按以下步骤排查:

  1. 确认家目录权限为755,属主为用户本身(chownchmod检查)。
  2. 若启用chroot_local_user=YES,确保家目录无不可写权限(如allow_writeable_chroot=YES)。
  3. 检查SELinux策略:执行sudo setsebool -P ftpd_full_access on或调整目录上下文。
  4. 确认write_enable=YES在配置文件中已启用。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/35947.html

(0)
酷番叔酷番叔
上一篇 2025年10月4日 20:31
下一篇 2025年10月4日 20:44

相关推荐

  • Linux系统如何用命令合并磁盘分区?详细操作步骤是什么?

    在Linux系统中,合并分区通常用于调整磁盘空间分配,解决分区碎片化或扩展某个分区容量的问题,但合并分区存在数据丢失风险,操作前务必备份重要数据,以下是详细的合并分区步骤及命令说明,涵盖不同场景和工具使用方法,合并分区前的准备工作数据备份使用rsync或tar命令备份分区数据,rsync -av /path/t……

    2025年10月5日
    3900
  • Linux系统如何实现双屏显示的配置与操作?

    Linux实现双屏显示是提升工作效率或扩展视觉体验的常见需求,通过合理的硬件连接和系统配置,可以轻松实现复制、扩展或仅副屏等显示模式,以下是详细的实现步骤和注意事项,涵盖硬件准备、系统识别、图形界面与命令行配置、问题排查等内容,硬件连接与基础准备双屏显示的首要前提是正确连接硬件设备,目前主流的显示接口包括HDM……

    2025年10月1日
    2900
  • Linux操作系统中如何正确启动SVN服务并确保其正常运行?

    在Linux系统中启动SVN服务需要经过安装、配置仓库、启动服务及设置开机自启等步骤,以下是详细操作流程:安装SVN服务首先需要安装Subversion(SVN)服务端软件,不同Linux发行版的安装命令不同:| 发行版 | 安装命令……

    2025年9月20日
    4200
  • 如何永久修改Linux IP地址?

    临时修改IP(立即生效,重启后失效)使用 ip 命令(推荐) # 查看当前网卡名称(如 ens33、eth0) ip addr show # 修改IP和子网掩码 sudo ip addr add 192.168.1.100/24 dev ens33 # 删除旧IP(可选) sudo ip addr del 19……

    2025年6月28日
    7200
  • Linux下如何使用ping命令?网络连通性检测方法详解

    Linux下的ping命令是一个常用的网络诊断工具,基于ICMP(互联网控制报文协议)工作,主要用于测试本地主机与目标主机之间的网络连通性、延迟和丢包情况,通过发送ICMP回显请求报文并接收目标主机的回显应答,用户可以直观了解网络状态,以下是ping命令的详细使用方法和相关技巧,ping命令的基本语法ping命……

    2025年10月4日
    3300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信