Sco*_*ver 5 ftp file-transfer sftp ftps file-permissions
我目前不得不使用非常有限的 FTP 客户端/适配器将一些文件上传到远程服务器。我说有限,因为生成的文件最终以权限 000 出现在远程服务器上,并且与其他一些客户端不同,似乎无法配置权限应该是什么。(我知道 WinSCP 可以做到这一点。)
一位同事告诉我,FTP 在文件权限方面完全不可知,只是传输文件数据。假设这是正确的,WinSCP等客户端如何设置远程服务器上文件的权限?有人向我建议客户端可能通过 SSH 执行 chmod,即事后设置权限。
您的同事是对的,因为 1985 年 10 月的RFC 959似乎没有提供专门为权限更改设计的命令。RFC 959 确实提供了上传文件的命令规范(RFC 959 第 30 页有“STOR”命令来存储文件)、下载文件(第 30 页有“RETR”命令来检索文件)和可选的扩展,如 MKD(制作目录) 和 RMD(删除目录)。RFC 指出,“调用访问权限是服务器-FTP 进程的特权”“控制”。(但是,从我对 RFC 的阅读来看,我认为所指的“访问控制”更多是关于支持使用用户名登录的能力,而不是指使用 FTP 更改权限的想法文件。)
RFC 959 第 47 页包含内置于 RFC 959 FTP 规范中的命令列表。有一段时间,我想为特定平台制作 FTP 服务器,并且我已经阅读了每个命令。我还浏览了IANA“FTP 命令和扩展”注册表,该注册表在 2010 年 3 月的RFC 5797 中引用。我不记得这些命令中的任何一个提供了一种更改权限的方法,除了一个:
RFC 959 第 33 页有“SITE”命令。(有些 FTP 客户端有一个名为“QUOT”或“quote”的本地命令,它最终会向 FTP 服务器发送 SITE 命令。)基本上,SITE 命令的标准是将文本发送到 FTP 服务器,并且FTP 服务器决定如何处理它。使用此命令可以执行诸如更改文件权限、搜索文件站点或重新启动 FTP 服务器等操作。理论上,发送命令“HELP SITE”将显示通过站点命令提供的某些功能的详细信息。RFC 959 第 33 页甚至指定了这一点:
“这些服务的性质
及其语法规范可以在
对 HELP SITE 命令的回复中说明。”
这个理论的挑战只是“HELP SITE”命令实际上导致显示来自 FTP 服务器的文本,并且不完整的文档可能实际上并没有记录所有可用的可能性。
基于Jonathan Leffler对knoti99关于“FTP中的chmod语法”问题的回答,我们可以看到经典的“ncftp”程序确实使用了“SITE CHMOD”命令来实现ncftp的“chmod”命令,并且该功能不受所有 FTP 服务器。
当我完成这个答案的 FTP 部分时,还有一个旁注:FTP 非常容易嗅探。基本上,我的意思是 FTP 使用“明文”执行操作。如果您使用诸如 tcpdump 或 Wireshark 之类的“数据包嗅探”(“数据包捕获”)软件,您可以看到 FTP 会发生什么。如果您尝试传输一个小文本文件,并查看发生了什么网络流量,结果可能很容易理解。使用这种方法,您可以更改权限并查看软件实际使用的命令。我知道这设置起来可能有点耗时,这就是为什么这个答案提供了许多更容易获得的细节,但如果你开始想知道关于 FTP 期间发生的任何其他细节,了解这个过程可能会有所帮助通讯。
(我已编辑此答案以添加对问题另一部分的回复。)
有人向我建议客户端可能通过 SSH 执行 chmod,即事后设置权限。
我认为这是一个不错的猜测,尽管我认为这对于 FTP 来说并不准确。实际上,这种猜测可能准确地描述了使用 SFTP 和 SCP 协议时所使用的精确过程。由于这两种协议都基于 SSH,因此可以使用与其余加密连接相同的 SSH 连接发送“chmod”命令。从我对这些协议的阅读来看,我确实相信这实际上正是使用 SFTP 时通常设置文件权限的方式(如果 SCP 也支持设置文件权限)。
然而,正如我之前所描述的,通常使用 FTP 协议处理这种情况的方式是完全不同的。如果您使用的是纯文本的 FTP 协议,那么在技术上是可行的,但不太可能使用 SSH 进行跟进。(如果软件有足够的能力支持 SSH,那么它通常也支持 SFTP 或 SCP 或两者。因此,对旧 FTP 协议的支持通常被设计为不会将加密通信的复杂性用作过程。)
| 归档时间: |
|
| 查看次数: |
3416 次 |
| 最近记录: |