【问题标题】:Change file permanently to read-only using Python使用 Python 将文件永久更改为只读
【发布时间】:2019-01-27 21:18:09
【问题描述】:

我想将文件更改为永久只读,并尝试了creating-read-only-pdf-file-using-pythonchange-file-to-read-only-mode-in-python 提供的解决方案。

但是,在这两种情况下,仍然可以编辑文件并手动将其更改回只读文件。

有没有办法防止这种情况发生,这样没有人可以编辑文件的属性或内容?

我考虑过加密它,即使用 SHA256 和随机创建的密钥,但这会使文件不可读。

【问题讨论】:

  • 在通用计算机中不可能。如果一个人可以在他们控制的设备上打开文件,他们就可以找到一种方法来做任何他们想做的事情。例外情况仅适用于预安装由您控制且没有任何外部连接(Internet/USB 或其他)的设备上可用的文件,并且不会不能供人带走和拆卸/破解。
  • 如何在应用程序代码中放置一个 HMAC 密钥,然后在文件上计算一个 MAC 身份验证标签?你可以例如将标签放在文件的末尾,元数据中,甚至文件名中的十六进制编码中。这样人们可能仍然会更改文件,但您的应用程序会检测到它已被更改并中止(即文件将被篡改)。当然,如果人们可以读取或更改 您的 python 脚本中的键,您仍然会遇到麻烦。
  • 作为非加密解决方案:以不同的用户身份运行您的应用程序,并使文件只能由该用户(或用户所在的组)编辑。我猜在 *nix 上,文件和二进制文件上的 chown
  • 非加密解决方案在我的情况下不起作用,因为任何人都不允许更改文件。 HMAC 密钥可能会更好,我会研究一下。如果我将脚本转换为 .exe 数据,那不会阻止任何人更改脚本中的密钥吗?

标签: python encryption


【解决方案1】:

有没有办法防止这种情况发生,这样没有人可以编辑文件的属性或内容?

没有。只要文件在可写设备上,用户始终可以删除文件并用修改后的副本替换它。

(即使文件 位于不可变设备上,例如 CD-ROM,用户仍然可以创建整个设备的修改副本。)

【讨论】:

    【解决方案2】:

    如果你是一个类 Unix 系统,你可以在终端中使用chmod 命令。

    chmod 命令有一个equivalent in python

    您可能必须运行您的脚本super-user 才能更改某些权限。

    【讨论】:

    • 已经尝试过问题中的链接。文件改成只读了,但我只需要点进去就可以再写了
    • 我真的不知道它是如何在 python 中实现的(它看起来像是默默地失败了)但是在 shell 中你可以使用 chmod 限制对文件的访问,我不知道你想要什么访问,除了 chmod 从恐龙时代就开始使用 Unix 并且一直运行良好。
    猜你喜欢
    • 1970-01-01
    • 2018-08-08
    • 2020-03-07
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    相关资源
    最近更新 更多