有没有一种方法可以让非特权用户在不使用 sudo 的情况下在 Linux 中读取/挂载 UDF 文件系统

有没有一种方法可以让非特权用户在不使用 sudo 的情况下在 Linux 中读取/挂载 UDF 文件系统

我正在租用 Linux 服务器上的一个节点。

uname -a
Linux 5.15.112-gentoo #2 SMP x86_64 AMD 64-Core Processor Authentic AMD GNU/Linux

作为租户,我本质上无法成为超级用户,甚至无法使用sudo.我需要读取/挂载以 .ISO 格式存储的 UDF 文件系统。

我将fuseISO作为命令的一个选项进行了研究

fuseiso ~/files/iso.iso ~/mountpoint

但它似乎只处理ISO9660格式而不是 UDF。所以我在尝试使用时收到一堆错误消息fuseiso

我还想也许存在一个工具可以读取 UDF.iso并导出内容而无需安装它。

我的研究陷入困境,如果有的话,有人有任何建议吗?

答案1

有一套名为udfclient(缺少联机帮助页)的实用程序,例如可在德班,架构Linux或者自由BSD主页和来源位于https://www.13thmonkey.org/udfclient/。无论是否为 Gentoo 打包,作为没有系统访问权限的简单用户,无论如何都必须对其进行编译或复制其二进制文件。

$ udfclient 
Usage: udfclient [options] devicename [devicename]*)
-u level    UDF system verbose level
-r range    use only selected sessions like -3,5,7 or 6-
-W      allow writing (temporary flag)
-F      force mount writable when marked dirty (use with cause)
-b blocksize    use alternative sectorsize; use only on files/discs
-D      debug/verbose SCSI command errors
-s      byteswap read sectors (for PVRs)

虽然没有明确写明,udfclient接受 UDF 文件系统映像作为设备名称,而不仅仅是一个实际的 DVD 设备。从头开始的完整示例:

$ truncate -s $((32 * 2**20)) /tmp/udf.img
$ newfs_udf -L myudf /tmp/udf.img
Opening device /tmp/udf.img

UDF device /tmp/udf.img is a regular file
    bufcache thread initialising


Disc info for disc in device /tmp/udf.img
    MMC profile        : Unknown[0] profile
    sequential         :  no
    recordable         : yes
    erasable           :  no
    blankable          :  no
    formattable        :  no
    rewritable         : yes
    mount raineer      :  no

[...]

Closing logical volume `64f5db204864e7f7`:`0019a2bf`:`myudf`
    wait for syncing disc to idle
    stopping bufcache thread
    bufcache thread joining
    signal disc its finished with writing
    wait for final disc idling
    close device
Disc access statistics
    sector reads          1  (0 Kbyte)
    sector written       91  (45 Kbyte)
    switches              3
$ cd /tmp
$ udfclient udf.img 
    bufcache thread initialising
Opening device udf.img
UDF device udf.img is a regular file

UDF Dump of disc in device udf.img
UDF sessions : Yes 

Start mounting
    retrieving volume space

[...]

Directory listing of /
drwxrwxrwx     -1     -1          40  64f5db204864e7f7:0019a2bf:myudf:fileset
UDF working directory is     /
Current FS working directory /tmp
UDF> 

请注意,udfclient不会在交互模式下将 UDF 文件系统的根映射为/.必须cd先做到这一点。例子:

UDF> help
Selected commands available (use " pair for filenames with spaces) :
ls  [file | dir]    lists the UDF directory
cd  [dir]       change current UDF directory
lcd [dir]       change current directory
lls         lists current directory
pwd         display current directories
free            display free space on disc
get  source [dest]  retrieve a file / directory from disc
mget (file | dir)*  retrieve set of files / directories
put  source [dest]  write a file / directory to disc
mput (file | dir)*  write a set of files / directories
trunc file length   trunc file to length
mkdir dir       create directory
rm  (file | dir)*   delete set of files / directories
mv  source dest     rename a file (limited)
sync            sync filingsystem
quit            exits program
exit            alias for quit
UDF> ls
Directory listing of /
drwxrwxrwx     -1     -1          84  64f5db204864e7f7:0019a2bf:myudf:fileset
UDF> free
Can only report free space in UDF mountpoints
UDF> cd 64f5db204864e7f7:0019a2bf:myudf:fileset
UDF working directory is     /64f5db204864e7f7:0019a2bf:myudf:fileset
Current FS working directory /tmp
UDF> free
Logical volume  `myudf`
    physical partition 0
            9934 K (19869 pages) size
            9930 K (19861 pages) unallocated
               0 K (0 pages) freed

    Confirmed free space        9930 Kb ( 99 %) (    9.70 Mb) ( 0.01 Gb)
    Awaiting allocation            0 Kb (  0 %) (    0.00 Mb) ( 0.00 Gb)
    Estimated free space        9930 Kb ( 99 %) (    9.70 Mb) ( 0.01 Gb)
    Estimated total used           4 Kb (  0 %) (    0.00 Mb) ( 0.00 Gb)

    Total size                  9934 Kb (100 %) (    9.70 Mb) ( 0.01 Gb)
UDF> 

除了udfclient命令之外,套件还提供了一些其他工具,例如newfs_udf在上面的示例中创建 UDF 文件系统。虽然命令可以通过管道传输到udfclient,但良好的可脚本性似乎并不容易,因为无法删除每个命令后提供的所有额外信息。因此,人们必须提前知道要做什么。

在写入测试期间(使用(选项-W)并通过使用内核的 UDF 文件系统实现安装 UDF 映像来以 root 身份检查,检测到损坏。因此,虽然从 UDF 映像读取没问题,但我不建议使用此工具来到图像。文件系统最初创建的方式(具有各种可用选项)可能对此很重要。

另一间套房名为udftoolsmkudffs提供创建 UDF 文件系统的备用命令。它还提供了一个wrudf应该提供与udfclients 等效功能的命令,但我没有设法让它与 UDF 一起使用图片:看来它想看看实际的硬件。

答案2

您可以用来7zip提取 UDF iso 映像。

这与安装不完全相同,但根据您的用例,将图像内容转储到文件夹并从那里读取可能就足够了。

您甚至可以应用修改并用于genisoimage重新创建包含所有更改的原始 UDF iso。

相关内容