如何在没有root权限的情况下复制到格式化图像?

如何在没有root权限的情况下复制到格式化图像?

我已使用该命令格式化了图像文件mkfs,现在我想将文件复制到该图像文件,而无需 root 权限。

我已经尝试将图像挂载到本地目录,由于某种原因,该目录确实需要 root 权限。 (欢迎评论原因)

是否有一种广泛支持的方法可以将文件复制到格式化图像中,而无需 root 权限。

编辑:映像格式为 FAT-32。

答案1

除此之外,挂载可能会阻碍/覆盖文件系统结构,因此通常不允许您在没有 root 权限的情况下在任何地方挂载任何内容。在完成此操作(或似乎完成此操作)的情况下,通常会涉及一个以 root 身份运行的挂载帮助程序(如 fusermount、udisks 等)。

如果由于某种原因无法使用挂载助手,则“将文件复制到格式化映像的一种广泛支持的方法”是使用mkisofs它创建包含文件的映像,并且在任何地方都不涉及根。

完全有可能mkisofs在用户空间程序中实现(以及更多)功能,但由于大多数人对安装没有问题,所以我不确定大多数文件系统是否存在这样的程序。

因为ext*debugfs它的一部分。

$ echo Hello World > hello.txt
$ truncate -s 100M foobar
$ /sbin/mkfs.ext4 foobar
$ /sbin/debugfs -w foobar
debugfs 1.42.11 (09-Jul-2014)
debugfs:  ls
2  (12) .    2  (12) ..    11  (20) lost+found
debugfs:  mkdir hey
debugfs:  mkdir what
debugfs:  mkdir up
debugfs:  ls
2  (12) .    2  (12) ..    11  (20) lost+found    12  (12) hey   
 13  (12) what    14  (956) up
debugfs:  write hello.txt hello.txt
Allocated inode: 15
debugfs:  cat hello.txt
Hello World

所以这看起来很有效。自动化是可能的(-f cmdfile选项),但听起来像是家庭作业。

答案2

默认情况下,挂载文件系统保留给root,因为许多文件系统允许用户在控制磁盘映像时获得特权(例如,通过创建setuid 文件)。

寻找一个保险丝支持映像中的文件系统的文件系统实现。与内核文件系统驱动程序不同,FUSE 文件系统驱动程序在用户空间中运行,没有任何权限。不幸的是,并非所有文件系统都有 FUSE 实现;特别是,我不知道任何读写 ext4 FUSE 实现。

阻力最小的路径通常是通过虚拟机访问文件系统映像。

相关内容