保护主页中的点目录,即粘滞位,但忽略父所有权?

保护主页中的点目录,即粘滞位,但忽略父所有权?

显然,我的主目录属于我。但如果我想用粘性位保护它的某些子目录(特别是点文件夹)免受意外影响,那么这就有问题了。因为只有当它们及其父目录都不属于我时,主目录上的粘性位才能保护其内容不受我的侵害。我可以访问chown root点文件夹,但如果我拥有主文件夹,这显然不能阻止我重命名、移动或删除它们。

我确信在 Linux 下有办法实现我想要的功能。问题是:最省事的方法是什么?我更希望能够避免使用诸如 之类的东西mount

显然,我仍然希望能够自由移动、创建和删除 Home 中除上述文件夹以外的文件以及上述文件夹的内容。我只需要这些文件夹保持原样。

理由:

我需要保护我的点文件夹不被我自己破坏的原因是我使用的是 Steam Deck 糟糕的鼠标模拟。很容易不小心拖放东西而不是直接点击它。.local在使用不断读取和写入该目录的桌面环境时意外移动目录非常烦人。想象一下在这种情况下无法启动终端,因为所有快捷方式都停止工作了。可以说,如果您没有真正的键盘,使用 ctrl+alt+f 键切换到控制台并不是一个真正的选择,虚拟键盘甚至没有 f 键,而且您无论如何都无法启动它,因为 Steam 已经停止工作,因为它将文件夹用于.local所有内容。

答案1

我将不得不做更多的测试,但到目前为止,它看起来效果不错:

  1. 在主页上设置粘性位:

    chmod +t ${HOME}
    
  2. 确保您属于家庭的所有者组,并且组具有rwx权限:

    chown :<yourgroup> ${HOME}
    chmod 770 ${HOME}
    
  3. 将您的主目录的所有权授予root

    sudo chown root ${HOME}
    
  4. rwx在您想要保护的目录中添加您的组,并将其设置root为所有者:

    chown :<yourgroup> ${HOME}/.local
    chmod 770 ${HOME}/.local
    sudo chown root ${HOME}/.local
    

解释:

根目录对主目录的所有权似乎很奇怪,但组rwx可以确保您仍然可以编辑其内容。但由于粘性,根目录拥有的内容受到保护。

如果您现在通过将所有权授予 root 来保护其中一个子文件夹,则您无法再重命名、移动或删除它。但如果您想保留编辑该子文件夹内容的能力,您首先需要授予您的组rwx

总之:所有者(粘性文件夹及其子文件夹)会覆盖粘性保护,但组不会。

注意事项:

用户不拥有主目录的所有权对我来说不太合适,但这是我能想到的最直接的解决方案。

此外,Dolphin 文件管理器似乎不理解粘性会覆盖子文件夹的组权限(它确实理解其他粘性安排),并且仍然会在上下文菜单中显示重命名/移动/删除的选项 - 但操作将失败。

编辑:显然,此设置中的粘贴不会授予任何权限,它仅提供保护。因此,在子文件夹上设置它是没有意义的。我已相应地编辑了我的答案。

相关内容