为什么 sftp 不允许 grep 命令?

为什么 sftp 不允许 grep 命令?
sftp> grep "hello" login.php
Invalid command.

我在包含login.php的目录中。

答案1

sftp只是一个文件传输工具:它支持上列出的一组特定命令它的手册页。请man sftp在您自己的系统上运行,以查看您的特定 sftp 版本的 sftp 命令的准确列表。

为了能够grep在远程文件上运行,应该发生以下两种情况之一:

  • 文件传输工具可能会将远程文件呈现为本地文件系统,并在需要时将每个访问的文件的内容传输到您的计算机。然后您可以使用系统的常规grep实用程序来搜索内容。该sshfs工具可以做到这一点。显然,文件系统的响应速度sshfs会比真正的本地文件系统慢。

  • 或者文件传输工具可能会grep在远程系统上运行命令并仅将结果返回给您。但是文件传输工具必须grep专门支持远程操作,并且远程服务器也必须支持该特定操作,或者允许以登录用户身份运行任意命令。但后者正是该命令已经执行的操作,因此该命令复制该功能ssh是没有意义的。sftp

此外,所支持的操作集sftp是专门选择的,以将操作限制为仅与文件传输相关的操作。这样做的价值在于,远程系统管理员可能会选择允许您sftp访问,但不允许您登录并运行任意命令。

如果用户只有一组众所周知的、有限的可用操作,则系统管理员(或设计安全环境的系统架构师)可以有效地推断出用户可以做什么或不能做什么(如果他们发现)是恶意的。如果用户可以使用完整的开放式命令行工具集,那么该任务将变得更加困难。

答案2

您可以将 sftp 文件夹挂载到您有权执行任何命令的主机。在那里您可以根据需要操作该文件夹。

相关内容