美文网首页
overlayfs 中如何表示文件删除

overlayfs 中如何表示文件删除

作者: 追风骚年 | 来源:发表于2024-02-20 17:38 被阅读0次

    众所周知,overlayfs 引入了 lower 和 upper 两层,再加一个 merge 层展示,低层的文件只读不写,上层的文件可以发生读写,对于增加文件和修改文件都很容易理解,如果是删除文件或者对文件重命名,overlayfs 又是如何解决?

    初始化

    $ pwd
    /root/go/mydocker/merged
    
    $ ls bin/
    diff           i2cget       mkfifo  resume         tcpsvd         zcat
    dirname        i2cset       mkfs.ext2   rev        tee        zcip
    dmesg          i2ctransfer  mkfs.minix  rm         telnet
    dnsd           id       mkfs.vfat   rmdir          telnetd
    dnsdomainname  ifconfig     mknod   rmmod          test
    

    shell 1 处于 merged 层中可以查看 bin 下有很多文件

    $ pwd
    /root/go/mydocker/upper
    
    $ ls
    
    

    shell 2 处于 upper 层中可以看到文件夹下是空的

    文件删除

    $ rm -rf bin/test
    $ ls -la bin/
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 who
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 whoami
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 whois
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 xargs
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 xxd
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 xz
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 xzcat
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 yes
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 zcat
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 zcip
    

    shell 1 中删除其中一个文件

    $ ls -la bin/
    c--------- 1 root root 0, 0 Feb 21 17:27 test
    

    shell 2 中可以看到这个文件的第一个 flag 打上了一个 c 标签,这在最终 merge 时就会被隐藏掉

    文件重命名

    $ mv bin/zcip bin/zcip2 
    $ ls -la bin/
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 which
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 who
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 whoami
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 whois
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 xargs
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 xxd
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 xz
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 xzcat
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 yes
    -rwxr-xr-x 404 root root 1021496 Jan 18 05:58 zcat
    -rwxr-xr-x   1 root root 1021496 Jan 18 05:58 zcip2
    

    shell 1 中将 zcip 文件修改为 zcip2

    $ ls -la bin/
    c--------- 1 root root    0, 0 Feb 21 17:27 test
    c--------- 1 root root    0, 0 Feb 21 17:31 zcip
    -rwxr-xr-x 1 root root 1021496 Jan 18 05:58 zcip2
    

    shell 2 中可以看到 zcip 被打上了一个 c flag,并且将 zcip 复制了一份为 zcip2

    总结

    删除是通过同名文件并且打上一个 c flag 表示的,重命名是通过复制+删除实现的

    相关文章

      网友评论

          本文标题:overlayfs 中如何表示文件删除

          本文链接:https://www.haomeiwen.com/subject/okgbadtx.html