如何避免 Geany 编辑器在编辑文件时更改文件所有者?

如何避免 Geany 编辑器在编辑文件时更改文件所有者?

我使用 Geany 来编辑位于/var/www./var/www其所有子目录和文件的所有者和组都是www-data:www-data.我的用户帐户是该组的成员,我以我的用户身份编辑文件。有时,Geany 似乎将编辑文件的所有者和组更改为我的用户和我的组。

当我使用 Geany 编辑文件时,如何确保 user:group 永远不会更改?


我在 Geany 帮助中找到了这条线索:

使用原子文件保存

定义 Geany 将文件保存到磁盘的模式。如果禁用,Geany 会直接将文档内容写入磁盘。当磁盘上没有更多可用空间来保存文件时,这可能会导致数据丢失。当设置为 true 时,Geany 首先将内容保存到临时文件中,如果成功,则临时文件将移动到真实文件中进行保存。在没有更多可用磁盘空间的情况下,这可以提供更好的错误检查。但它也会破坏原始文件的硬链接及其权限(例如重置可执行标志)。小心使用它,因为它可能会严重破坏事情。更好的方法是确保您的磁盘不会耗尽可用空间。

截至目前它已被禁用,这意味着文件是直接写入的,我认为这可以防止我的问题发生。

这个问题包含一些相关信息: 如何编辑文件并保留其访问控制列表/SELinux 安全上下文?

答案1

看着吉尼的维基,看起来您可能还需要禁用此选项:

use_gio_unsafe_file_ saving

这是默认打开的,由 GIO 库提供。

此选项尝试尽可能多地处理与其他方法相关的问题:

  • 它尝试使用上述原子重命名保存方法,但尝试解决尽可能多的问题:
    • 它检查临时文件的元数据并尝试从现有文件复制元数据,
    • 如果元数据正确,它将写入临时文件并重命名,如上所示,
    • 如果元数据不正确,它会使用非原子但安全的方法:
      • 将现有文件复制到临时文件
      • 截断并覆盖现有文件,如果失败,临时文件应被复制回或可用,但请参阅下面的缺点。
  • 它尝试确定重命名在底层文件系统上是否可用,如果重命名失败,则使用非原子方法。

优点:

  • 处理最不同的条件,因此在大多数文件系统上都能最正确地工作。这就是为什么它是默认值。

缺点:

  • 有一个长期存在的错误或者 GIO 库中的设计错误,如果写入数据文件失败,则会从非原子保存中删除临时文件。这意味着它并不比简单的覆盖方法更安全,因为以前的数据不会被恢复,甚至可供用户恢复。
  • 非原子保存通过网络复制数据三次(读取和写入以制作临时文件,写入输出文件),这在远程网络上可能会很慢。
  • 使用两倍的磁盘空间。
  • 相当复杂。
  • 使用库代码,因此 Geany 无法修改其行为

多么奇怪的文件保存方法啊。看起来它可以导致与选项相同的“原子”保存use_atomic_file_saving

相关内容