【问题标题】:Make files read-only unless accessed by symlink path使文件只读,除非通过符号链接路径访问
【发布时间】:2019-05-01 02:42:06
【问题描述】:

假设我有一个像这样的文件夹树:

root/
  ro/
  symlink-to-ro/

我的问题有两个:

(a) 有没有办法让ro目录下的所有文件都是只读的,但是如果这些文件是通过符号链接访问的,让它们可写?

(b) (a) 的反面:有没有办法让文件只有在直接访问时才可写?

这仅适用于 *nix/MacOS

【问题讨论】:

  • 你有这方面的用例,还是纯粹出于好奇?如果您有用例,我们可能会想出另一种方法来做同样的事情。
  • @Amadan 我能想到的唯一选择就是rsync -r,但问题是当原始文件发生变化时,它们不会相互镜像。
  • 我可以通过代表看到你不是新手,所以我试图更加谨慎地暗示这可能是一个 XY 问题 :) 我的意思不是“替代访问控制路径”,我的意思是你确定你的潜在问题不能用通常的权限系统、组和/或 ACL 或其他方法来解决吗?您尝试在什么场景中使用它?
  • 是的,我很好奇,如果有任何与该问题相关的好的解决方案,它们是相关的。基本上,我试图阻止某人对稍后将被命令行工具覆盖的文件进行更改。该工具会吐出文件,这些文件将是只读的,或者会有一些机制告诉用户修改文件是浪费时间,因为它们稍后会被覆盖。
  • Linux 通常只在自动生成的文件中使用 cmets,并相信具有 sudo 权限的用户不是白痴:D 如果该工具是二进制可执行文件,您可以将其设置为 setgid 并使用一个组对目录有写权限。例如drwxrwxr-x amadan writable file,与drwxrwsrwx amadan writable utility;这将只允许writable 组的成员以及utility 的成员编辑文件,而不管运行它的用户是谁。

标签: linux macos file-permissions symlink readonly


【解决方案1】:

没有。权限分配给 inode,而不是目录条目;因此,无论您用于访问文件的路径如何,都会检查同一组权限。

编辑:从头开始。我只记得 is 有一种方法:虽然文件和文件夹没有权限,但 mounts 可以设置为只读。如果您在 Linux 上,read-only bind mount 正是您正在寻找的。 AFAIK OSX 无法做到这一点,因此您可以使用 NFS mount 伪造它(不太好)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2023-03-05
    • 2017-07-08
    • 2011-07-05
    相关资源
    最近更新 更多