【问题标题】:Deny write permission during writing to file在写入文件期间拒绝写入权限
【发布时间】:2012-06-06 01:57:06
【问题描述】:

chmod -R -w filename 将删除写权限,但如果程序在拒绝权限之前打开文件,即使我们删除写权限,程序也可以继续写入文件。

有解决这个问题的想法吗?

【问题讨论】:

    标签: linux unix file-permissions


    【解决方案1】:

    您可以使用fuserlsof 查看哪些进程打开了文件并杀死它们

    【讨论】:

    • 我不想杀死我想要的进程,只是阻止它写入文件
    【解决方案2】:

    尝试复制它并使用新名称而不是旧版本的副本。这可以防止程序更改您可能不想再更改的数据。不过,显而易见的解决方案是简单地终止该程序。

    【讨论】:

    • 更改文件名不会改变任何内容。 mv'ing 文件到一个单独的文件系统可能会导致非常奇怪的事情(因为原始文件实际上仍然存在并写入原始文件系统,但不再可见。)
    • 你说得对,更改文件名无济于事,复制它并让程序愉快地编辑我们不再关心的旧版本应该。
    【解决方案3】:

    您可以使用mandatory locking,但写入不会因错误而失败,而是被无限期阻止。

    但不要忽略第一段:“为什么要避免强制锁定”。

    【讨论】:

    • 那么程序如何发现文件被锁定了?
    • @Ali - AFAIK,您的程序不会知道它,它只会在写入时阻塞。也许不是你需要的,但你没有提供这么多细节......
    • 这意味着程序认为他可以写入文件但实际上什么都不会写入文件?
    • 因此,例如,如果 1 个程序写入而另一个程序从文件中读取,则在此操作的中间我们强制锁定文件!程序可以读取文件(有更新!)?
    • 我认为这意味着文件将无限期地阻塞在写入中。也就是write在锁被释放之前不会返回。
    猜你喜欢
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2023-04-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2019-09-18
    相关资源
    最近更新 更多