跳过导航链接 | |
退出打印视图 | |
![]() |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11 Information Library (简体中文) |
- 通过 lofi 管理作为块设备提供的文件
/usr/sbin/lofiadm -a file [device]
/usr/sbin/lofiadm -c crypto_algorithm -a file [device]
/usr/sbin/lofiadm -c crypto_algorithm -k raw_key_file -a file [device]
/usr/sbin/lofiadm -c crypto_algorithm -T token_key -a file [device]
/usr/sbin/lofiadm -c crypto_algorithm -T token_key -k wrapped_key_file -a file [device]
/usr/sbin/lofiadm -c crypto_algorithm -e -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]
lofiadm 管理回送文件驱动程序 lofi。lofi 可用于将文件与块设备关联,然后可通过块设备访问此文件。当文件包含某些文件系统的映像(例如 CD-ROM 映像)时,这会很有用,因为块设备随后可与常规系统实用程序一起用于挂载、检查或修复文件系统。请参见 fsck(1M) 和 mount(1M)。
可以使用 lofiadm 将文件添加为回送设备、删除这样的关联或显示有关当前关联的信息。
潜在 lofi 设备的数量受 zone.max-lofi rctl 的限制,后者可通过 zonecfg(1M) 在全局区域 (global zone) 中进行设置。有关 zone.max-lofi 的说明,请参见 resource_controls(5)。
不能在命令行上同时使用加密和压缩选项。此外,加密文件无法再进行压缩,而压缩文件也无法再进行加密。
在全局区域中,全局区域设备以及系统中其他非全局区域所拥有的所有设备都可以使用 lofiadm。
所支持的选项如下:
将 file 添加为块设备。
如果没有指定 device,则会选择一个可用设备。
如果指定了 device,lofiadm 会尝试将其分配给 file。device 必须可用,否则 lofiadm 将失败。指定设备的功能可用于在脚本中重新建立一组特定的关联。
使用指定压缩算法压缩文件。
gzip 压缩算法使用与开源 gzip 命令相同的压缩。要指定 gzip 级别,可使用值 gzip-N,其中 N 为 6(快速)或 9(最佳压缩比)。当前,不含数字的 gzip 相当于 gzip-6(这也是 gzip 命令的缺省值)。
lzma 表示 LZMA (Lempel-Ziv-Markov) 压缩算法。
请注意,不能对压缩文件进行写入,也不能以读/写方式挂载压缩文件。
根据 file 或 device 名称删除关联(如果关联的块设备未处于忙碌状态),并解除块设备的分配。
用于划分所压缩文件的段大小。segment_size 可以是 512 的整数倍。
解压缩某个压缩文件。
加密文件时可以使用下列选项:
选择加密算法。启用加密时必须指定算法,因为磁盘映像中并未存储算法。
如果 -e、-k 或 -T 均未指定,则 lofiadm 会提示输入最短八个字符长的口令短语。口令短语用于使用 PKCS#5 PBKD2 派生出一个对称加密密钥。
原始或包装的对称加密密钥的路径。如果还使用 -T 选项指定了 PKCS#11 对象,则密钥将由该对象包装。如果未指定 -T,则以原始状态使用密钥。
PKCS#11 标记中的密钥,用于加密或用于解开密钥文件的包装。
如果同时指定了 -k,则 -T 表示解开包装的密钥,该密钥必须为 RSA 私钥。
生成临时对称加密密钥。
支持下列操作数:
aes-128-cbc、aes-192-cbc、aes-256-cbc、des3-cbc、blowfish-cbc 之一。
显示与块设备 device 关联的文件名。
如果不指定参数,则会显示当前关联的列表。文件名必须为有效的绝对路径名。
添加文件时,文件会打开,供 root 读取或写入。任何限制均适用(例如通过 NFS 的受限 root 访问)。文件将保持打开状态,直至删除关联。在使用块设备之前无法实际访问文件,因此如果仅以只读方式打开块设备,将永远无法对文件进行写入。
请注意,如果无法在当前上下文中解析路径(例如,如果它是非全局区域中的一个 NFS 路径),则文件名可能显示为问号 (?)。
显示与 file 关联的块设备。
要用作原始对称加密密钥的适当长度(以位为单位)的文件的路径。
以下格式的 PKCS#11 标记对象:
token_name:manufacturer_id:serial_number:key_label
除密钥标签外的其他各项均为可选项且可以为空。例如,要只使用其密钥标签 MylofiKey 指定标记对象,请使用:
-T :::MylofiKey
包含由 -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 #
有关下列影响 lofiadm 的执行的环境变量的说明,请参见 environ(5):LC_CTYPE、LC_MESSAGES 和 NLSPATH。
将返回下列退出值:
成功完成。
出现错误。
有关以下属性的说明,请参见 attributes(5):
|
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/lofictl 归 root 所有,位于组 sys 中且模式为 0644,因此所有用户均可执行查询操作,但只有 root 能够进行任何更改。管理员可赋予用户写入访问权限,允许他们添加或删除关联,但这很有可能成为安全漏洞,因此可能只应赋予受信任的组。
挂载文件系统映像时,请注意使用适当挂载选项。尤其是,nosuid 挂载选项可能适合于来源未知的 UFS 映像。此外,某些选项可能没有用或者不适合,例如 logging 或 forcedirectio 对于 UFS。出于兼容性目的,原始设备也会随块设备一起导出。例如,newfs(1M) 就需要一个原始设备。
lofiadm(不含参数)的输出在将来的发行版中可能会有所变化。