我在Docker进行了一些实验,发现了一种奇怪的行为。
我能够覆盖使用root创建的文件的所有权 Docker中的用户与另一个没有root权限的用户。
以下是重现它的步骤:
$> docker run -dit ubuntu:16.04 bash
$> docker exec -it cont_id bash
$> apt update && apt install -y vim
$> useradd cp -m
$> vim /home/cp/hello.txt
# Write some text and save it
$> su cp
$> cd ~/ && ls -latr;
# Will list hello.txt with user and group as root
$> vim hello.txt
# Write some text and try saving it normally which will fail.
# Try saving it with `:wq!`
Voila,它已保存,文件所属的用户和组也会更改为新用户。
我为此做了一个终端录音,并发布here。
答案 0 :(得分:2)
这与docker无关,只与vim
中的正常行为有关。由于该文件位于用户目录/home/cp
下,因此cp
用户将拥有所有权限。 wq!
命令的作用是删除旧内容并将新内容放入/home/cp/hello.txt
。
您可以通过在cp
没有完全权限的文件夹中再创建一个文件来快速测试它。
答案 1 :(得分:0)
之所以能够做到这一点,是因为您拥有/ cp目录的所有权限。 为此,只有两种选择:
只有两种情况可以覆盖只读文件。