mmdsun
V2EX  ›  问与答

如何创建一个只能查看但不能删除文件?

  •  1
     
  •   mmdsun · May 6, 2018 · 3823 views
    This topic created in 2960 days ago, the information mentioned may be changed or developed.

    需要在 linux 和 win 上如何创建一个只能查看不能删除文件、或文件夹。linux 上面已经解决。

    windows 上面不知道的 怎么操作。 也找不到关于 win 的目录权限的相关资料,感觉十分复杂。

    右键文件夹属性里面,我凭感觉设置一通, 但是还是可以删除。不知道哪里设置不对。(当前账号和 everyone 都设置过)

    avatar

    23 replies    2018-05-07 16:40:54 +08:00
    mmdsun
        1
    mmdsun  
    OP
       May 6, 2018
    对了 我图片传的网盘。 这个网盘厉害了。恐怕有 10 年了 今天发现还活着。
    Bryan0Z
        2
    Bryan0Z  
       May 6, 2018 via Android
    设个只读?
    fengyj
        3
    fengyj  
       May 6, 2018 via Android
    @mmdsun 看不了图片啊😯
    webjin1
        4
    webjin1  
       May 6, 2018 via Android
    linux 是不是 chattr +i
    fyyz
        5
    fyyz  
       May 6, 2018 via Android
    smb 挂载,设置权限只能读取不能写入
    1stPLACE
        6
    1stPLACE  
       May 6, 2018
    可你这个网盘并不能外链
    wevsty
        7
    wevsty  
       May 6, 2018
    Windows 上对只读文件调用 DeleteFile 是会失败的。
    至于 NTFS 权限,设置一下 everyone 的删除权限为拒绝应该就可以。
    cdwyd
        8
    cdwyd  
       May 6, 2018 via Android
    弄个网页
    mmdsun
        9
    mmdsun  
    OP
       May 6, 2018
    @huiyifyj 不是吧。是移动的网络吗?
    innoink
        10
    innoink  
       May 6, 2018 via Android
    我记得我大一的时候做过文件系统过滤驱动,能过滤所有文件操作,不知道现在还行不行
    mmdsun
        11
    mmdsun  
    OP
       May 6, 2018
    @wevsty everyone 删除设置的拒绝还是不行。不知道是 bug 还是没有设置好
    mmdsun
        12
    mmdsun  
    OP
       May 6, 2018
    @webjin1 应该是的 ,百度 copy 的。我只记得是 chattr 打头了
    wevsty
        13
    wevsty  
       May 6, 2018
    @mmdsun
    一般来说我会认为是你没有设置好。
    geelaw
        14
    geelaw  
       May 6, 2018
    怎么会是 bug ?用最简单的思考就知道这要是一个 bug 也不能是这么晚才发现的吧?

    答案是因为,虽然你对文件 /文件夹拒绝了删除的权限,但该文件 /文件夹所在的文件夹,你具有“删除子文件夹和文件”权限。

    考虑 C:\A\B\C 是一个文件,又假设 C:\A 上 Everyone 的 effective access 是 Full control,考虑下面的情况:

    若 B 上 Everyone 的 effective access 是 Full control,但 C 上拒绝了删除,则你可以删除 C,因为你允许 Everyone Delete subfolders and files in B。

    若 B、C 上 Everyone 的 effective access 不包含任何删除权限,则 B、C 都不能被删除。
    mmdsun
        15
    mmdsun  
    OP
       May 6, 2018
    这样也不行,我就是右键文件 在属性-- 安全 里面改的 不知道还有没有别的方法 。

    这是我对一个单独的 文件 设置的 删除 设置的拒绝 还是可以删掉。

    ![img]( http://ys-i.ys168.com/597891853/mnojxvm4N1H6L337LPFK/test.PNG)
    geelaw
        16
    geelaw  
       May 6, 2018
    此外 #14,你可能会疑惑为什么 B 被拒绝 Delete,但是 A 上你有 Delete subfolders and files 的权限,你却不能删除 B ——既然 B 是 A 的 subfolder ?

    答案是,删除一个文件夹的条件是该文件夹非空,因此要删除 B 必须先删除 C,Delete subfolders and files 仅应用于 直接子项目,因此 C 不能被删除,所以 B 也不能。
    ericls
        17
    ericls  
       May 6, 2018 via iPhone
    immutable
    honeycomb
        18
    honeycomb  
       May 6, 2018 via Android
    让用户不是这个文件的所有者,剥夺用户对这个文件读以外的权限。

    但最后可能还是要通过禁止管理员权限来落实。
    echaos
        19
    echaos  
       May 6, 2018 via Android
    你可以试着手动删除 Adobe 文件
    ntdll
        20
    ntdll  
       May 6, 2018   ❤️ 1
    cacls 了解一下,根据以往的经验,这个比设置 NTFS 权限靠谱多了,换管理员、重装系统都没用,该不能访问,就是不能访问
    crb912
        21
    crb912  
       May 6, 2018 via Android
    windows 下,还有不能被删除的文件吗?似乎只要没被进程占用,就可以被删除。
    mmdsun
        22
    mmdsun  
    OP
       May 6, 2018
    @crb912 可以配置权限呀。NTFS 权限
    geelaw
        23
    geelaw  
       May 7, 2018
    我感到十分困惑,因为 #14 #16 已经给出了完整的解答,居然没有任何人看起来去 acknowledge 这个解答——仿佛问题还没有解决一样。

    另外:

    @ericls #17 没看懂。

    @honeycomb #18 禁止管理员权限是必须的,因为管理员总是可以 take ownership,进而修改 ACL。你可能漏看了 #14 的提示——简单拒绝删除是没有用的。

    @gam2046 #20 这个说法是错误的,因为 cacls/icacls 和文件资源管理器设置权限的功能是一样的,都是设置 NTFS 权限,不存在差别。不靠谱的可能是使用的人,而不是工具。

    @crb912 #21 权限控制都是依赖操作系统完成的,自然你必须要设置恰当的权限才能完成。文件被进程占用而不能被删除也是操作系统完成的。“就可以被删除”显然是假设了管理员权限,但如果假设管理员权限,你就可以停止占用一个文件的进程,然后删除文件。(即使文件是被 Windows 核心进程占用,具有管理员权限也可以去调试这些进程,并完成相应的操作。)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   957 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 22:45 · PVG 06:45 · LAX 15:45 · JFK 18:45
    ♥ Do have faith in what you're doing.