包含内容的符号链接目录

包含内容的符号链接目录

所以我有/usr一个'ro'文件系统(无法更改它、工作规则和安全性),并且我有另一个目录,/bigdata'rw'.

我正在安装一些服务,但它需要写入/usr/foo,所以我想我可以符号链接到/bigdata.问题是我还有其他文件/usr/foo

是否有解决方法,不包括复制fooin的所有内容bigdata

谢谢!

答案1

一种想法是重写,/usr/foo但仅限于行为不当的应用程序。行为不当的应用程序将被视为/usr/foo的别名,/bigdata但系统中的每个其他进程将继续看到/usr/foo的真实内容,包括实际位于其中的文件。这假设行为不当的应用程序不关心/usr/foo它无法访问 的正常内容。

sudo unshare --mount sh -c 'mount --make-rprivate / &&
    mount -n --bind /bigdata /usr/foo &&
    exec su "$SUDO_USER" -c misbehaving_application'

(已测试)

否则,覆盖文件系统正如评论中所建议的,可能会解决您的问题。

最后,作为最后的手段,一些符号链接练习可以解决这个问题。这个想法是:

  • /usr/foo绑定挂载其他地方的副本

    mkdir /writable/place/foo
    mount --bind /usr/foo /writable/place/foo
    
  • /usr/foo用你的替换目录压缩

    mount --bind /bigdata /usr/foo
    
  • 对现有文件进行符号链接,以便可以从 /usr/foo 访问它们

    for x in /writable/place/foo/*; do
      ln -s "$x" /usr/foo
    done
    

(未测试)

相关内容