几天前我的主目录中出现了一个奇怪的文件:
\n\n\n\nls在 bash 中给我以下输出:
\xc3\x82\xc3\xb5(\\\'e@\\\xc3\x82\xc3\xb5(\\7@\\\xc3\x82\xc3\xb5(,e@\xc3\xabQ\xc2\xb88@jon.xojcA\nRun Code Online (Sandbox Code Playgroud)\n\n在 中fish,ls默认情况下引用名称 shell-safe 并给我这个:
\'\'$\'\\217\\302\\365\'\'(\\\'\\\'\'e@\\\'$\'\\217\\302\\365\'\'(\\7@\\\'$\'\\217\\302\\365\'\'(,e@\'$\'\\037\\205\\353\'\'Q\'$\'\\270\\036\'\'8@jon.xojcA\'\nRun Code Online (Sandbox Code Playgroud)\n\n我无法在 Dolphin 中删除该文件,因为它似乎不存在。我猜想 Dolphin 中存在一个错误,它无法使用这样的病态文件名。rm我设法通过命令行和制表符补全删除它。
这个文件可能来自哪里?我在 Fedora 25 上使用带有 LUKS 加密的 EXT4 文件系统。该分区有点旧,我是在 2015 年 10 月 20 日(大约那个月)创建的。这是我应该担心的事情吗?
\n这个文件可能来自哪里?
您在这里要求纯粹的猜测,但只有一种可能的路径是文件系统或终端数据流损坏。
文件系统损坏的一个示例是存储文件名的磁盘块以某种方式损坏,但其所有校验和都匹配。(如果没有最后一项规定,文件系统将简单地拒绝检索损坏的数据。)这可能是由于 RAM 故障、硬盘驱动器故障、布线不可靠、宇宙射线......而发生的。
终端数据流损坏的一个例子是使用 RS-232 串行线路(或模拟它的线路)或与 RS-232 同期的相对宽容的协议之一(例如Zmodem)。
Zmodem 在 SSH 时代仍然很方便,scp因为它通过您已有的连接窃取文件数据;您不必以某种方式将 SSH 连接切换到 SCP 模式或建立单独的 SCP 连接。该lrzsz软件包可以自然地与 SSH 和 Unix 命令行配合使用。
当通过两个或多个主机的链进行 SSH 连接时,Zmodem-over-SSH 特别方便,但有一个陷阱。如果您使用默认rz选项尝试通过链接使用 Zmodem 二进制文件,则文件中的某些字节序列可能会被中间 SSH 主机视为转义序列或控制字符,而中间 SSH 主机没有意识到它正在中继Zmodem 传输,导致它误解数据流,破坏 Zmodem 传输。(顺便说一句,修复方法是使用rz -e强制转义控制字符。)
当发生类似的情况时,正在进行的数据流会被误解,因此数据传输会突然变成对 shell 的命令,并且如果该命令流中的某些内容恰好与真实命令匹配(例如cat > h34ijth34u8934),shell 将创建一个文件一个垃圾名字。就外壳而言,您要求它这样做。shell 不知道“键入的”文件名的来源是在与其通信的sz本地程序死机后向其喷射文件数据的远程程序。rz
(是的,这实际上发生在我身上多次。)
这是我应该担心的事情吗?
这取决于事情是如何发生的,这再次需要猜测。
| 归档时间: |
|
| 查看次数: |
4492 次 |
| 最近记录: |