![如何在 Linux 机器外部访问命名空间内部的文件?](https://linux22.com/image/737249/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E6%9C%BA%E5%99%A8%E5%A4%96%E9%83%A8%E8%AE%BF%E9%97%AE%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E5%86%85%E9%83%A8%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我在 Linux 系统中创建了网络命名空间“BLUE_NAME”,需要访问位于命名空间(主机)之外的 BLUE_NAME 网络空间中的 /var/tmp 文件。请您提供建议。
答案1
网络命名空间本身创建了抽象网络相关组件拥有列表设备、路由表、防火墙规则。
网络命名空间不影响文件系统。
但是当我们创建命名空间并在命名空间中运行任何实用程序时,这些实用程序将以 root 用户身份运行,因此我们可以从需要的用户运行实用程序。<- 注意这一点,我很早就在命名空间内运行了几次 chrome*,想知道我的设置在哪里。
试试这个:
#add namespace test
sudo ip netns add test
#run bash inside namespace, be carefull now you become root
sudo ip netns exec test /bin/bash
#create file in tmp "don't do this in scripts, in scripts use mktemp"
touch /tmp/test_from_namespace
从命名空间内的 bash 退出并销毁命名空间
#destroy namespace
sudo ip netns del test
然后像往常一样尝试在 /tmp 中列出用户文件,您会看到创建的文件