上一篇
Linux如何修改FTP目录?
- Linux
- 2025-07-05
- 2500
在Linux中更改FTP目录需编辑FTP服务器配置文件(如vsftpd.conf),找到
local_root
或
anon_root
参数,将其值修改为所需目录路径,保存后重启FTP服务生效。
在Linux系统中更改FTP目录的操作分为两种场景:作为客户端连接FTP时切换目录和作为服务器管理员修改FTP根目录,以下是详细操作指南:
作为FTP客户端更改目录
当使用命令行FTP工具连接远程服务器时,需通过FTP命令切换目录:
- 登录FTP服务器:
ftp ftp.example.com # 输入用户名和密码登录
- 查看当前目录:
pwd # 显示当前远程目录路径
- 切换目录:
cd /path/to/target_directory # 切换到目标目录
- 示例:切换到
/var/www/uploads
目录:cd /var/www/uploads
- 示例:切换到
- 本地目录切换(可选):
lcd /local/path # 更改本地工作目录(不影响远程)
作为FTP服务器管理员修改根目录
以常用FTP服务端vsftpd
为例,修改默认根目录需配置chroot环境:
步骤1:修改vsftpd配置文件
-
编辑配置文件:
sudo nano /etc/vsftpd.conf
-
启用以下关键参数:
# 限制用户在其主目录内(关键安全设置) chroot_local_user=YES allow_writeable_chroot=YES # 允许写入权限 # 指定根目录(可选,默认使用用户主目录) local_root=/custom/ftp_root # 自定义全局根目录路径
注意:若需为不同用户设置独立目录,跳过
local_root
,直接修改用户主目录。
步骤2:设置用户主目录(推荐方法)
- 修改用户的主目录路径:
sudo usermod -d /new/ftp/path ftpusername # 将用户ftpusername的主目录改为/new/ftp/path
- 确保目录权限正确:
sudo chown ftpusername:ftpusername /new/ftp/path # 所有权归用户 sudo chmod 755 /new/ftp/path # 开放读取和执行权限
步骤3:重启服务生效
sudo systemctl restart vsftpd # 重启vsftpd服务
常见问题与解决方案
-
权限拒绝错误:
- 确保目标目录有
755
权限(所有者可读写,其他用户只读)。 - 检查SELinux状态:临时禁用
setenforce 0
或添加规则:sudo setsebool -P ftpd_full_access on
- 确保目标目录有
-
连接后无法列出文件:
- 确认目录路径存在且无拼写错误。
- 若使用
vsftpd
,检查配置中是否启用被动模式:pasv_enable=YES pasv_min_port=40000 pasv_max_port=50000
-
用户无法退出主目录:
- 确认
vsftpd.conf
中chroot_local_user=YES
已启用。
- 确认
安全最佳实践
-
隔离FTP用户:
- 创建专用系统用户(如
ftpuser
),避免使用root
。 - 使用
useradd -m -d /ftpdir -s /sbin/nologin ftpuser
创建受限用户。
- 创建专用系统用户(如
-
加密传输:
- 优先使用SFTP(基于SSH)替代传统FTP,防止密码泄露:
sftp user@example.com # 连接方式与SSH相同
- 优先使用SFTP(基于SSH)替代传统FTP,防止密码泄露:
-
定期更新:
sudo apt update && sudo apt upgrade vsftpd # Debian/Ubuntu sudo yum update vsftpd # CentOS/RHEL
引用说明
vsftpd
官方文档:https://security.appspot.com/vsftpd.html- Linux
man
手册:man vsftpd.conf
、man ftp
- 安全建议参考:NIST SP 800-123指南
重要提示:FTP协议本身不安全,建议仅在内部网络使用,对外服务务必启用FTPS(FTP over SSL)或切换至SFTP,配置完成后,使用
ftp localhost
本地测试或telnet 21端口
验证服务状态。