我有一个文件夹,通常位于 /root 下,通常由 root 用户使用。我现在需要允许其他用户(非 root 用户)使用它,但它必须保留在 /root 下。这样可以吗?
编辑:感谢大家的评论和帮助。我们确实了解这方面的安全影响,也完全理解我们的要求。所以,除了消除所有安全问题之外,还有什么方法可以做到这一点呢?谢谢。
答案1
首先,你做错了™。你处理这个问题的方式从根本上就是错误的。如果你尝试理解正常的 unix 安全和权限模型并使用它而不是与之对抗/破坏它,你的软件会更好。
我能想到的唯一一种既能做你想做的事又不会在文件系统权限上造成一千个漏洞的方法是,为相关文件夹设置一个组和基于组的权限,然后使用绑定挂载将其挂载到其他地方,以便可以通过用户可访问的路径而不是 /root 内部访问它。数据可以留在那里,但非 root 用户不应该能够将头伸进那里,因此它需要在文件系统的其他地方有一个句柄。您不能符号链接到它,因为那只会将您路由回 /root,但 root 提前设置的绑定挂载应该会提供一条非 root 用户可访问的备用路径。
编辑:在评论中澄清的应用程序具有硬编码路径的情况下,我或阿尔克达建议确实会起作用。作为暂时的解决方法是,我建议确保根目录中所有敏感内容(例如)的/root/.ssh
所有者为root:root
并标记为0600
或其他此类限制性权限。然后将/root
不需要的任何内容移动到子文件夹中,例如/root/root_files
并确保也是如此root:root 0600
。一旦您确定那里没有任何内容可查看或利用,请将组所有权设置/root
为某个特殊组(例如 temproot),并将其设置为可由该组浏览(但不是世界或普通用户组!)。然后将您的特殊用户添加到该组,并根据需要/root
将该 java 应用程序使用的文件设置为拥有root:temproot
组写入/执行权限。
一旦您修复了有问题的 Java 应用程序,请将 root 中的所有内容重新设置为root:root
。
答案2
您可以将文件夹移出 /root 并创建指向该文件夹的链接。这样,它仍将保留在您的文件夹中,并且您可以设置权限让其他人访问它。
允许其他人查看 /root 内部是完全错误的。