怎样配置一个ftp账户,该账户有权上传文件,但上传后就不允许读取了?

希望这个用户只能上传,但是不能读取。
和寄信一样,塞进邮筒之后就不能拿出来了。

阅读 3.8k
3 个回答

就是只写、不可读呗?

这个主流的 FTP 服务好像都不支持这么做,你只能配置一个可读可写、或者只读的账号。

但有一些 FTP 服务可以配置过滤的 FTP 命令,你可以先建一个可读可写的账号、再把读取的命令都禁用的,就近乎实现了你的目的了。

以 vsftp 为例,你可以在配置文件里设置 cmds_deniedcmds_allowed 这两项来决定禁用或启用哪些命令。

常见的 FTP 命令有:

  • GET:获取单个文件
  • MGET(即 Multiple Get):获取多个文件
  • CD(即 Change Directory):切换目录
  • DELE(即 Delete):删除文件
  • RMD(即 Remove Directory):删除目录
  • RNTO(即 Rename To):重命名为
  • RETR(即 Return):下载
  • STOR(即 Store):上传

P.S.1. 但其实有个问题,如果不可读的话你连目录信息都拿不到,咋上传呢?起码得保留获取目录和文件信息的能力,可以只禁掉下载。

P.S.2. 我不确定能不能针对特定用户禁用特定命令,如果是全局的禁用的话,你所有账号都无法执行相应操作了,这点你可以自己试验一下。


还有一种办法,那就是你自己编程实现一个 FTP Server。这样的话你想要啥特殊功能都可以。

不知道你用的哪个ftp server,vsftpd的话可以参考这两篇,它们基本上是借助了一部分Linux目录权限来实现的

http://blog.serverbuddies.com...

https://serverfault.com/quest...

其他ftp server也可以借助这种思路解决。

如果你需要更细粒度的权限控制,你可能需要辅助Linux的ACL功能,Linux原生的用户权限太粗放了,ACL功能弥补了对于ugo权限中对于o权限过于粗放的问题。

这个限制严格吗?不严格的话可以考虑换个思路,用户上传完成后自动把文件移动到其他下载文件夹,保持上传文件夹为空

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题