![限制 *.exe 或任何其他可执行文件上传到 vsftpd 服务器上的 ftp 帐户](https://linux22.com/image/894595/%E9%99%90%E5%88%B6%20*.exe%20%E6%88%96%E4%BB%BB%E4%BD%95%E5%85%B6%E4%BB%96%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E5%88%B0%20vsftpd%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%20ftp%20%E5%B8%90%E6%88%B7.png)
我意识到我的一些 FTP 用户正在将 *.exe 文件上传到 FTP 用户帐户,而该帐户应该具有 *.MXF 和所有类型的媒体格式。
我正在寻找一种方法来拒绝除***.mxf、*.mp4、*.mov 等之外的所有类型的文件上传。限制 ftp 帐户仅接受媒体文件而不接受 exe 文件
有人知道如何使用 VSFTPD 服务器来管理它吗?
提前致谢。
答案1
您可能需要查看的部分man vsftpd.conf
,特别是字符串选项中的拒绝文件部分,其中指出。
拒绝文件
此选项可用于设置文件名(和目录名等)的模式,这些文件名不应以任何方式访问。受影响的项目不会被隐藏,但任何试图对它们进行任何操作(下载、更改目录、影响目录内的某些内容等)的行为都将被拒绝。此选项非常简单,不应用于严格的访问控制 - 应优先使用文件系统的权限。但是,此选项在某些虚拟用户设置中可能很有用。特别要注意,如果文件名可以通过多种名称访问(可能是由于符号链接或硬链接),则必须小心拒绝对所有名称的访问。如果项目的名称包含由 hide_file 给出的字符串,或者它们与 hide_file 指定的正则表达式匹配,则将拒绝对项目的访问。请注意,vsftpd 的正则表达式匹配代码是一个简单的实现,它是完整正则表达式功能的子集。因此,您需要仔细且详尽地测试此选项的任何应用。并且建议您将文件系统权限用于任何重要的安全策略,因为它们的可靠性更高。支持的正则表达式语法是任意数量的 *、? 和非嵌套的 {,} 运算符。正则表达式匹配仅支持路径的最后一个组件,例如 a/b/? 受支持,但 a/?/c 不受支持。
Example: deny_file={*.exe,*.sh,.private}
我没有测试过这是否会明确拒绝上传 .exe 文件,但假设人们上传这些文件是为了其他人可以下载它们。当这不再起作用时,也许上传它们的活动也会停止。正如此评论您还可以编写脚本来回收上传目录中的空间rm /youruploaddir/*.exe
其中 /youruploaddir/ 是用户上传到的目录和使用 cron 来安排时间在特定时间或频率运行。
由于文件扩展名不能保证内容,正如@CharlesGreen 所述此评论你可以考虑一下这个脚本我设计它来查找我系统上的几乎所有视频文件。您可以轻松修改它以包含 .mxf(材料交换格式)容器。或者,只需通过grep
在输出中使用匹配“可执行文件”来识别实际的 .exe 文件file
可执行文件判断示例:
file *.* | grep "executable"| cut -d':' -f1
将打印当前目录中实际可执行文件的文件名(例如 Windows .exe 文件)
注意:仅当您设置了允许的权限时,文件才可在您的系统上执行。请参阅这了解更多详情。