You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不通过命令行在Node.js代码中配置ftp-srv FTP服务为只读模式

ftp-srv 代码配置只读模式方案

无需通过CLI启动参数设置,直接在实例化FtpSrv对象时传入配置项即可实现全局/单用户粒度的只读控制,具体实现如下:

1. 安装依赖

首先安装ftp-srv模块:
npm install ftp-srv

2. 完整代码示例

const FtpSrv = require('ftp-srv');

// 实例化FTP服务,传入配置对象
const ftpServer = new FtpSrv({
  url: 'ftp://0.0.0.0:21', // 配置服务监听地址和端口
  readOnly: true, // 全局开启只读模式,所有用户默认只读
  anonymous: false // 按需配置是否允许匿名登录
});

// 登录验证逻辑
ftpServer.on('login', (loginData, resolve, reject) => {
  // 自定义账号密码校验逻辑
  if (loginData.username === '你的用户名' && loginData.password === '你的密码') {
    // 验证通过,返回用户根目录
    resolve({
      root: '/path/to/ftp/public/directory',
      // 若需要单独控制当前用户的只读权限,可在此处覆盖全局配置,优先级高于全局
      // readOnly: true
    });
  } else {
    reject(new Error('账号或密码错误'));
  }
});

// 启动服务
ftpServer.listen()
  .then(() => console.log('FTP只读服务启动成功,端口21'))
  .catch(err => console.error('服务启动失败:', err));

3. 配置说明

  • 全局readOnly设为true后,所有写入类FTP命令(包括文件上传、删除、重命名、创建/删除文件夹等)都会被服务端自动拒绝,返回550权限不足错误,无需额外编写拦截逻辑。
  • 登录验证的resolve返回值中传入的readOnly优先级高于全局配置,可以实现不同用户不同读写权限的精细化控制,比如管理员用户可写,普通用户只读。

4. 版本兼容注意事项

  • 4.0.0及以上版本的ftp-srv使用驼峰格式的readOnly作为配置项名
  • 低于4.0.0的旧版本使用下划线格式的read_only作为配置项名,配置不生效时可先检查模块版本调整参数名。

内容的提问来源于stack exchange,提问作者user16671539

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 22:39:01