手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

lofiadm(1M)

名称

lofiadm - 通过 lofi 管理作为块设备提供的文件

用法概要

/usr/sbin/lofiadm [-b 
block_size] [-u user:
group] -a | -r file
 [device]
/usr/sbin/lofiadm -l [-b
 block_size] [-u 
user:group] -a 
file
/usr/sbin/lofiadm -l [-b
 block_size] [-u 
user:group] -r 
file [device]
/usr/sbin/lofiadm -c 
crypto_algorithm [-b block_size] [
-u user:group] 
-a file | -r [
device]
/usr/sbin/lofiadm -c 
crypto_algorithm -l [-b 
block_size] [-u user:
group] -a file
/usr/sbin/lofiadm -c 
crypto_algorithm -l [-b 
block_size] [-u user:
group] -r file [
device]
/usr/sbin/lofiadm -c crypto_algorithm -k raw_key_file [-b 
block_size] [-u user:
group] -a | -r file [device]
/usr/sbin/lofiadm -c crypto_algorithm -T token_key [-b 
block_size] [-u user:
group -a | -r file [device]
/usr/sbin/lofiadm -c crypto_algorithm -T token_key
     -k wrapped_key_file [-b 
block_size] [-u user:
group] -a | -r file [device]
/usr/sbin/lofiadm -c crypto_algorithm -e [-b 
block_size] [-u user:
group] -a file [device]
/usr/sbin/lofiadm -C algorithm [-s segment_size] file
/usr/sbin/lofiadm -d file | device
/usr/sbin/lofiadm -U file
/usr/sbin/lofiadm [ file | device]
/usr/sbin/lofiadm -r device]

描述

lofiadm 管理回送文件驱动程序 lofilofi 可用于将文件与块设备关联,然后可通过块设备访问此文件。当文件包含某些文件系统的映像(例如 CD-ROM 映像)时,这会很有用,因为块设备随后可与常规系统实用程序一起用于挂载、检查或修复文件系统。请参见 fsck(1M)mount(1M)

可以使用 lofiadm 将文件添加为回送设备、删除这样的关联或显示有关当前关联的信息。

可以创建两种类型的回送设备:普通读写回送设备和可移除回送设备。这两种设备在以下方面不同。

首先,文件不能在其生命周期内脱离普通回送设备。相比之下,文件可以脱离可移除回送设备,这将使该设备成为空回送设备。脱离之后,可以将其他文件与该设备关联。请注意,应使用 eject(1) 使文件与可移除设备脱离。

第二,普通回送设备与其关联文件之间存在一对一映射关系。相比之下,单个文件可以同时与多个可移除回送设备关联。

第三,普通回送设备是可写的。可移除回送设备是只读的。

此外,如果创建回送设备(可写或可移除)时使用了 –l,可以创建带标签的可写或可移除回送设备。对于带标签的回送设备,不获取 /dev/[r]lofi/ x 设备链接,而是使用生成的 /dev/[r]dsk/cxdx[p|s] x,通过此项访问磁盘映像文件中的分区或分片。

潜在 lofi 设备的数量受 zone.max-lofi rctl 的限制,后者可通过 zonecfg(1M) 在全局区域 (global zone) 中进行设置。有关 zone.max-lofi 的说明,请参见 resource_controls (5)

不能在命令行上同时使用加密和压缩选项。此外,加密文件无法再进行压缩,而压缩文件也无法再进行加密。

在全局区域中,全局区域设备以及系统中其他非全局区域所拥有的所有设备都可以使用 lofiadm

选项

支持以下选项:

–a | –r file [device]

指定 –a–r 时,将 file 分别添加为普通回送设备或可移除回送设备。

如果没有指定 device,则会选择一个不存在的设备。

如果指定了 devicelofiadm 会尝试将其分配给 file。如果指定了 –adevice 不能存在,否则 lofiadm 将失败。如果指定了 –r,在 device 存在并且不为空可移除回送设备的情况下,lofiadm 将失败。

–b block_size

创建回送设备时,应将此选项与 –a–r 选项一起使用来指定磁盘映像的块大小。

–u user: group

访问给定文件时应使用的用户和组。可将用户指定为用户名或数字用户 ID。可将组指定为组名或数字组 ID。不支持将 –u 选项与 –C–U 选项一起使用。

–C {gzip | gzip-N | lzma}

使用指定压缩算法压缩文件。

gzip 压缩算法使用与开源 gzip 命令相同的压缩。要指定 gzip 级别,可使用值 gzip-N,其中 N 为 6(快速)或 9(最佳压缩比)。当前,不含数字的 gzip 相当于 gzip-6(这也是 gzip 命令的缺省值)。

lzma 表示 LZMA (Lempel-Ziv-Markov) 压缩算法。

请注意,不能对压缩文件进行写入,也不能以读/写方式挂载压缩文件。

请注意,如果多个设备当前与文件关联,则按文件删除将失败。在此情况下,请使用按设备删除。

–d file | device

根据 filedevice 名称删除关联(如果关联的块设备未处于忙碌状态),并取消块设备的分配。

–l

应将此选项与 –a–r 选项一起使用来创建带标签的回送设备。请注意,创建带标签的回送设备时,用户无法指定设备路径。

–s segment_size

用于划分所压缩文件的段大小。segment_size 可以是 512 的整数倍。

–U file

解压缩某个压缩文件。

加密文件时可以使用下列选项:

–c crypto_algorithm

选择加密算法。启用加密时必须指定算法,因为磁盘映像中并未存储算法。

如果 –e–k–T 均未指定,则 lofiadm 会提示输入最短八个字符长的口令短语。口令短语用于使用 PKCS#5 PBKD2 派生出一个对称加密密钥。

–k raw_key_file | wrapped_key_file

原始或包装的对称加密密钥的路径。如果还使用 –T 选项指定了 PKCS#11 对象,则密钥将由该对象包装。如果未指定 –T,则以原始状态使用密钥。

–T token_key

PKCS#11 标记中的密钥,用于加密或用于解开密钥文件的包装。

如果同时指定了 –k,则 –T 表示解开包装的密钥,该密钥必须为 RSA 私钥。

–e

生成临时对称加密密钥。请注意,不能同时使用 –e–r

–r [device]

创建一个空的可移除回送设备。可以在之后将文件与该设备关联。

如果没有指定 device,则会选择一个不存在的设备。

如果指定了 devicelofiadm 将尝试选择它。device 不能存在,否则 lofiadm 将失败。

操作数

支持下列操作数:

crypto_algorithm

aes-128-cbcaes-192-cbcaes-256-cbcdes3-cbcblowfish-cbc 之一。

device

显示与块设备 device 关联的文件名。

如果不指定参数,则会显示当前关联的列表。文件名必须为有效的绝对路径名。

添加文件时,文件会打开,供 root 读取或写入。任何限制均适用(例如通过 NFS 的受限 root 访问)。文件将保持打开状态,直至删除关联。在使用块设备之前无法实际访问文件,因此如果仅以只读方式打开块设备,将永远无法对文件进行写入。

请注意,如果文件无法访问,文件名前面可能会显示一个问号 (?)。如果无法在当前上下文中检索文件路径,文件名前面会显示两个问号 (??)。如果设备为空的可移除回送设备,文件名可能显示为破折号 (-)。

file

显示与 file 关联的所有块设备。

raw_key_file

要用作原始对称加密密钥的适当长度(以位为单位)的文件的路径。

token_key

以下格式的 PKCS#11 标记对象:

token_name:manufacturer_id:serial_number:key_label

除密钥标签外的其他各项均为可选项且可以为空。例如,要只使用其密钥标签 MylofiKey 指定标记对象,请使用:

-T :::MylofiKey
wrapped_key_file

包含由 –T 指定的 RSA 私钥包装的对称加密密钥的文件的路径。

示例

示例 1 挂载现有 CD-ROM 映像

在创建 CD 之前应确保 Solaris 了解此映像。lofi 允许您挂载映像并查看其是否有效。

此示例将挂载一个从 Internet 下载的 Red Hat 6.0 CD 的现有 CD-ROM 映像 (sparc.iso)。它是使用来自 Internet 的 mkisofs 实用程序创建的。

使用 lofiadm 为其关联一个块设备:


# lofiadm -a /home/mike_s/RH6.0/sparc.iso
/dev/lofi/1

lofiadm 将选择设备并将设备名称打印到标准输出中。您可以通过发出以下命令再次运行 lofiadm


# lofiadm
Block Device     File                           Options
/dev/lofi/1      /home/mike_s/RH6.0/sparc.iso   -

或者,您可以通过发出以下命令为其提供一个名称并查询另一个名称:


# lofiadm /dev/lofi/1
/home/mike_s/RH6.0/sparc.iso

使用 mount 命令挂载映像:

# mount -F hsfs -o ro /dev/lofi/1 /mnt

检查以确保 Solaris 了解该映像:

# df -k /mnt
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/lofi/1           512418  512418       0   100%    /mnt 
# ls /mnt
./            RedHat/       doc/          ls-lR         rr_moved/ 
../           TRANS.TBL     dosutils/     ls-lR.gz      sbin@ 
.buildlog     bin@          etc@          misc/         tmp/ 
COPYING       boot/         images/       mnt/          usr@ 
README        boot.cat*     kernels/      modules/ 
RPM-PGP-KEY   dev@          lib@          proc/

Solaris 可挂载 CD-ROM 映像并可识别文件名。映像创建正确,现在您可以放心地创建 CD-ROM。

最后一步,卸载并分离映像:

# umount /mnt
# lofiadm -d /dev/lofi/1
# lofiadm
Block Device             File             Options

示例 2 在文件上创建 UFS 文件系统

在文件上创建 UFS 文件系统可能很有用,尤其是在测试套件需要临时文件系统时。单纯为了测试套件而被迫对磁盘进行重新分区会令人感到痛苦(或烦恼),但您不必如此。您可以通过 lofi 对文件进行 newfs

创建文件:

# mkfile 35m /export/home/test

将其关联到块设备。您还会获得 newfs 所需的字符设备,因此 newfs 将如下所示:

# lofiadm -a /export/home/test
/dev/lofi/1
# newfs /dev/rlofi/1
newfs: construct a new file system /dev/rlofi/1: (y/n)? y
/dev/rlofi/1:   71638 sectors in 119 cylinders of 1 tracks, 602 sectors
        35.0MB in 8 cyl groups (16 c/g, 4.70MB/g, 2240 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 9664, 19296, 28928, 38560, 48192, 57824, 67456,

请注意,ufs 可能无法使用整个文件。挂载并使用文件系统:

# mount /dev/lofi/1 /mnt
# df -k /mnt
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/lofi/1            33455       9   30101     1%    /mnt
# ls /mnt
./           ../          lost+found/
# umount /mnt
# lofiadm -d /dev/lofi/1
示例 3 在 Unix 文件上创建 PC (FAT) 文件系统

下列命令将在 Unix 文件上创建 FAT 文件系统。此文件与由 lofiadm 创建的块设备关联。

# mkfile 10M /export/test/testfs
# lofiadm -a /export/test/testfs
/dev/lofi/1
Note use of rlofi, not lofi, in following command.
# mkfs -F pcfs -o nofdisk,size=20480 /dev/rlofi/1
Construct a new FAT file system on /dev/rlofi/1: (y/n)? y
# mount -F pcfs /dev/lofi/1 /mnt
# cd /mnt
# df -k .
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/lofi/1            10142       0   10142     0%    /mnt
示例 4 压缩现有 CD-ROM 映像

以下示例将揭示如何压缩一个现有 CD-ROM 映像 (solaris.iso),验证映像是否已压缩,然后将其解压缩。

# lofiadm -C gzip /export/home/solaris.iso

使用 lofiadm 为其关联一个块设备:

# lofiadm -a /export/home/solaris.iso
  /dev/lofi/1

检查映射的映像是否已压缩:

# lofiadm
Block Device      File                            Options
/dev/lofi/1       /export/home/solaris.iso        Compressed(gzip)
/dev/lofi/2       /export/home/regular.iso        -

取消映射压缩的映像并将其解压缩:

# lofiadm -d /dev/lofi/1
# lofiadm -U /export/home/solaris.iso
示例 5 在文件上创建加密的 UFS 文件系统

本例与上述在文件上创建 UFS 文件系统的示例类似。

创建文件:

# mkfile 35m /export/home/test

将文件关联到块设备并指定文件映像已加密。作为此命令的结果,您将获得字符设备,该设备随后由 newfs 使用:

# lofiadm -c aes-256-cbc -a /export/home/secrets
Enter passphrase: My-M0th3r;l0v3s_m3+4lw4ys!           (not echoed)
Re-enter passphrase: My-M0th3r;l0v3s_m3+4lw4ys!        (not echoed)
/dev/lofi/1

# newfs /dev/rlofi/1
newfs: construct a new file system /dev/rlofi/1: (y/n)? y
/dev/rlofi/1:   71638 sectors in 119 cylinders of 1 tracks, 602 sectors
       35.0MB in 8 cyl groups (16 c/g, 4.70MB/g, 2240 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 9664, 19296, 28928, 38560, 48192, 57824, 67456,

映射的文件系统显示已启用加密:

# lofiadm
Block Device    File                     Options
/dev/lofi/1     /export/home/secrets     Encrypted

挂载并使用文件系统:

# mount /dev/lofi/1 /mnt
# cp moms_secret_*_recipe /mnt
# ls /mnt
./           moms_secret_cookie_recipe    moms_secret_soup_recipe
../          moms_secret_fudge_recipe     moms_secret_stuffing_recipe
lost+found/  moms_secret_meatloaf_recipe  moms_secret_waffle_recipe
# umount /mnt
# lofiadm -d /dev/lofi/1

使用错误密钥或错误加密算法映射文件系统的后续尝试将失败:

# lofiadm -c blowfish-cbc -a /export/home/secrets
Enter passphrase: mommy                                (not echoed)
Re-enter passphrase: mommy                             (not echoed)
lofiadm: could not map file /root/lofi: Invalid argument
# lofiadm
Block Device    File                    Options
#

在不使用加密的情况下映射文件系统的尝试将成功,但是挂载和使用文件系统的尝试将失败:

# lofiadm -a /export/home/secrets
/dev/lofi/1
# lofiadm
Block Device    File                     Options
/dev/lofi/1     /export/home/secrets     -
# mount /dev/lofi/1 /mnt
mount: /dev/lofi/1 is not this fstype
#
示例 6 处理可移除回送设备

以下示例说明了如何创建空的可移除回送设备,将文件与设备关联,以及使文件与设备脱离。

使用 lofiadm 可创建一个空的可移除回送设备:

# lofiadm -r
/dev/lofi/1

验证是否已创建了设备:

# lofiadm
Block Device      File                       Options
/dev/lofi/1       -                          Removable,Readonly

使用 lofiadm 将文件与设备关联:

# lofiadm -r /export/home/solaris.iso /dev/lofi/1
/dev/lofi/1

验证是否已成功关联:

# lofiadm
Block Device      File                            Options
/dev/lofi/1       /export/home/solaris.iso        Removable,Readonly

使用 eject 使文件与设备脱离:

# eject /dev/lofi/1

验证是否已成功脱离:

# lofiadm
Block Device      File                            Options
/dev/lofi/1       -                               Removable,Readonly
示例 7 使用带标签的回送设备

以下示例说明了如何创建带标签的可写回送设备。

使用 lofiadm 创建带标签的回送设备:

# lofiadm -la /export/home/disk_image
/dev/dsk/c0d1p0

验证是否已成功关联:

# lofiadm
Block Device      File                            Options
/dev/dsk/c0d1p0   /export/home/disk_image         Labeled
示例 8 创建具有给定用户和组的 lofi 设备

以下示例说明了如何创建具有给定用户和组的 lofi 设备。使用 lofiadmadmin:staff 拥有的文件创建回送设备。

# lofiadm -u admin:staff -a /export/home/disk_image

使用 lofiadmadmin:staff 拥有的文件创建带标签的回送设备。

# lofiadm -u admin:staff -la /export/home/disk_image

环境变量

有关下列影响 lofiadm 的执行的环境变量的说明,请参见 environ(5):LC_CTYPE、LC_MESSAGES 和 NLSPATH。

退出状态

将返回以下退出值:

0

成功完成。

>0

出现错误。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

eject(1)fsck(1M)mount(1M)mount_ufs(1M)newfs(1M)zonecfg(1M)attributes(5)resource_controls (5)lofi(7D)lofs(7FS)

附注

就像您不会直接访问挂载了文件系统的磁盘设备一样,您也不能访问与块设备关联的文件,除非通过 lofi 文件驱动程序。除此之外,最好再确保文件设有适当权限以禁止这类访问。

lofiadm 的功能以及可以使用它们的用户是由 /dev/lofictl 的权限控制的。读取访问权限允许执行查询操作,例如列出所有关联。执行任何状态更改操作都需要写入访问权限,例如添加关联。出厂时 /dev/lofictlroot 所有,位于组 sys 中且模式为 0644,因此所有用户均可执行查询操作,但只有 root 能够进行任何更改。管理员可赋予用户写入访问权限,允许他们添加或删除关联,但这很有可能成为安全漏洞,因此可能只应赋予受信任的组。

挂载文件系统映像时,请注意使用适当挂载选项。尤其是,nosuid 挂载选项可能适合于来源未知的 UFS 映像。此外,某些选项可能没有用或者不适合,例如 loggingforcedirectio 对于 UFS。出于兼容性目的,原始设备也会随块设备一起导出。例如,newfs(1M) 就需要一个原始设备。

lofiadm(不含参数)的输出在将来的发行版中可能会有所变化。