为什么我不能使用 geany 编辑具有仅追加属性的文件?

为什么我不能使用 geany 编辑具有仅追加属性的文件?

我为文本文件添加了仅追加属性。

但我明白操作不允许当我尝试使用 Geany 来编辑它时。

但我可以使用echo new >> test.txt并且它确实附加。

我不明白什么?

答案1

因此,您可以使用以下命令设置文件的仅追加属性:

chattr +a test.txt

并且使用 Geany 等文本编辑器进行编辑也不起作用......

这是可以预料到的,因为文本编辑器不会通过附加到文件的方式将其缓冲区保存到文件中,而是在完成编辑后重写文件。

虽然从技术上讲,文本编辑器可以支持编辑仅追加文件,但实现起来并不简单,因为首先他们必须专门检测到这一点(使用等效命令lsattr),然后以与该设置兼容的模式工作,跟踪原始文件中的内容,然后防止在编辑文件时修改这些行,并实现一个单独的例程来保存仅追加文件,这将打开文件进行追加,并且仅写入在此编辑会话中添加的行。

对于文本编辑器来说,这是一个相当小众的用例,所以我真的不知道有任何文本编辑器实现了这一点,即使这在技术上是可行的......

仅追加属性实际上并不是作为应用程序使用的标志(换句话说,正常程序通常不会查询文件是否设置了该属性),而是作为一种安全措施,以防止错误破坏重要数据。

例如,此属性在日志文件中非常有意义,因为 syslog 应用程序应仅将内容附加到文件,而绝不会覆盖或截断文件。如果 syslog 应用程序(或其他操作日志文件的程序)有错误或配置错误,并且会触发破坏文件的操作,则设置此标志非常有用。在这种情况下,该属性可防止程序破坏重要数据,而只是向行为不当的程序返回错误。

相关内容