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系统中启动HTTP服务?

    在Linux系统中,启动HTTP服务是搭建网站或提供Web服务的常见需求,可通过多种HTTP服务器软件实现,如Apache、Nginx、Python内置服务器等,不同软件的安装、配置和启动步骤略有差异,下面分别详细介绍其操作流程,通过Apache HTTP Server启动服务Apache是广泛使用的开源HTT……

    2025年9月30日
    1200
  • Linux设备驱动操作如何掌握?关键步骤与实践指南

    Linux设备驱动是内核与硬件设备之间的核心桥梁,负责抽象硬件细节,为上层应用提供统一的设备访问接口,驱动开发需遵循内核编程规范,涉及模块机制、设备模型、中断处理、内存管理等关键技术,其操作流程可拆解为环境搭建、框架设计、功能实现、资源管理及调试优化等步骤,环境搭建与基础准备开发Linux设备驱动需配置内核开发……

    2025年10月4日
    1500
  • Linux系统如何使用SSH实现远程连接、文件传输与命令管理?

    SSH(Secure Shell)是一种加密的网络传输协议,专为在远程客户端和服务器之间提供安全的登录和其他网络服务而设计,广泛用于Linux系统的远程管理,相比传统的Telnet、FTP等明文传输协议,SSH通过对所有传输数据加密,有效防止了信息泄露和中间人攻击,成为Linux环境下远程运维的首选工具,本文将……

    2025年9月30日
    1400
  • linux如何恢复文件夹

    Linux 中,可尝试用 rm -r 误删后尽快用 `ls

    2025年8月10日
    5000
  • Linux中调用so库的具体步骤和常见问题有哪些?

    在 Linux 系统中,动态链接库(.so 文件)是实现代码模块化和资源共享的重要方式,与静态库(.a 文件)不同,动态库在程序运行时才被加载到内存,多个程序可共享同一份库文件,节省存储空间并便于更新,调用 so 库主要分为编译时链接和运行时加载两种方式,本文将详细介绍具体操作步骤及注意事项,创建 so 动态库……

    2025年9月13日
    2100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信