显然,我的主目录属于我。但如果我想用粘性位保护它的某些子目录(特别是点文件夹)免受意外影响,那么这就有问题了。因为只有当它们及其父目录都不属于我时,主目录上的粘性位才能保护其内容不受我的侵害。我可以访问chown root
点文件夹,但如果我拥有主文件夹,这显然不能阻止我重命名、移动或删除它们。
我确信在 Linux 下有办法实现我想要的功能。问题是:最省事的方法是什么?我更希望能够避免使用诸如 之类的东西mount
。
显然,我仍然希望能够自由移动、创建和删除 Home 中除上述文件夹以外的文件以及上述文件夹的内容。我只需要这些文件夹保持原样。
理由:
我需要保护我的点文件夹不被我自己破坏的原因是我使用的是 Steam Deck 糟糕的鼠标模拟。很容易不小心拖放东西而不是直接点击它。.local
在使用不断读取和写入该目录的桌面环境时意外移动目录非常烦人。想象一下在这种情况下无法启动终端,因为所有快捷方式都停止工作了。可以说,如果您没有真正的键盘,使用 ctrl+alt+f 键切换到控制台并不是一个真正的选择,虚拟键盘甚至没有 f 键,而且您无论如何都无法启动它,因为 Steam 已经停止工作,因为它将文件夹用于.local
所有内容。
答案1
我将不得不做更多的测试,但到目前为止,它看起来效果不错:
在主页上设置粘性位:
chmod +t ${HOME}
确保您属于家庭的所有者组,并且组具有
rwx
权限:chown :<yourgroup> ${HOME} chmod 770 ${HOME}
将您的主目录的所有权授予
root
:sudo chown root ${HOME}
rwx
在您想要保护的目录中添加您的组,并将其设置root
为所有者:chown :<yourgroup> ${HOME}/.local chmod 770 ${HOME}/.local sudo chown root ${HOME}/.local
解释:
根目录对主目录的所有权似乎很奇怪,但组rwx
可以确保您仍然可以编辑其内容。但由于粘性,根目录拥有的内容受到保护。
如果您现在通过将所有权授予 root 来保护其中一个子文件夹,则您无法再重命名、移动或删除它。但如果您想保留编辑该子文件夹内容的能力,您首先需要授予您的组rwx
。
总之:所有者(粘性文件夹及其子文件夹)会覆盖粘性保护,但组不会。
注意事项:
用户不拥有主目录的所有权对我来说不太合适,但这是我能想到的最直接的解决方案。
此外,Dolphin 文件管理器似乎不理解粘性会覆盖子文件夹的组权限(它确实理解其他粘性安排),并且仍然会在上下文菜单中显示重命名/移动/删除的选项 - 但操作将失败。
编辑:显然,此设置中的粘贴不会授予任何权限,它仅提供保护。因此,在子文件夹上设置它是没有意义的。我已相应地编辑了我的答案。