Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何修改由自定义装载帮助程序创建的/etc/mtab条目,以便使用自定义“umount”?_Bash_Mount - Fatal编程技术网

Bash 如何修改由自定义装载帮助程序创建的/etc/mtab条目,以便使用自定义“umount”?

Bash 如何修改由自定义装载帮助程序创建的/etc/mtab条目,以便使用自定义“umount”?,bash,mount,Bash,Mount,在unix.SE上回答我的问题时,我意识到mount-t luks将调用脚本mount.luks,该脚本当前看起来如下: #!/bin/bash set -e MAPPER=$(mktemp -up /dev/mapper) cryptsetup luksOpen $1 $(basename $MAPPER) shift mount $MAPPER $* || cryptsetup luksClose $(basename $MAPPER) < P> >,它决定了一个未使用的映射器名称,它可以

在unix.SE上回答我的问题时,我意识到
mount-t luks
将调用脚本
mount.luks
,该脚本当前看起来如下:

#!/bin/bash
set -e
MAPPER=$(mktemp -up /dev/mapper)
cryptsetup luksOpen $1 $(basename $MAPPER)
shift
mount $MAPPER $* || cryptsetup luksClose $(basename $MAPPER)
< P> >,它决定了一个未使用的映射器名称,它可以用来安装LUKS/DM加密器加密设备(我知道 $*/COD>如果涉及到子类型,则很容易发生递归,在解密它之后(考虑到密码短语后,将其视为原型)。 问题是,
/etc/mtab
中的
mount-tluks/dev/hda/mnt/decrypted
的结果条目看起来像

/dev/mapper/tmp.mpI5ClExf8 on /mnt/decrypted type ext3 (rw,relatime,errors=continue,data=writeback)
#!/bin/bash
set -e
umount $1
cryptsetup luksClose $MAPPER
这样,
umount/dev/hda
将失败,
umount/mnt/decrypted
将只卸载映射器,而使加密设备保持打开状态。地图绘制者也是相当不相关的。我想要达到的是有一个入门级的

/dev/hda on /mnt/decrypted type luks.ext3 (rw,relatime,errors=continue,data=writeback,mapper=/dev/mapper/tmp.mpI5ClExf8)
这样,
umount
将调用
umount.luks
,这可能类似于

/dev/mapper/tmp.mpI5ClExf8 on /mnt/decrypted type ext3 (rw,relatime,errors=continue,data=writeback)
#!/bin/bash
set -e
umount $1
cryptsetup luksClose $MAPPER
(同样,prototype,这只会正确处理
umount/mnt/decrypted
调用,并且需要从mount选项获得
MAPPER


那么,
mount.luks
必须如何修改呢?直接修改
/etc/mtab
肯定是个坏主意。(例如,
mount-n
mount-f
能否以某种方式实现这一点?

我知道这个问题很老,但我自己在寻找答案时遇到了它

如果您有足够新的发行版,例如Fedora 20,则可以修改mount.luks脚本以包含
'-o helper=luks'

例如:

#!/bin/bash
set -e
MAPPER=$(mktemp -up /dev/mapper)
cryptsetup luksOpen $1 $(basename $MAPPER)
shift
mount -o helper=luks $MAPPER $* || cryptsetup luksClose $(basename $MAPPER)
umount使用helper的值来确定要运行的正确umount脚本,类似于mount使用-t选项的方式


注意:在Fedora 20上,/etc/mtab是指向/proc/self/mounts的符号链接。如果您使用cat/etc/mtab,则不会显示helper选项。但是,如果在没有选项的情况下执行mount,则会出现helper选项。

听起来不错,谢谢!不幸的是,我没有Fedora,但可能相应的补丁也可以应用于其他发行版。