man
两个页面都没有info
提供更多关于此的信息:
mount --no-canonicalize
不要规范化路径。 mount 命令规范化所有路径(来自命令行或 fstab)并将规范化路径存储到 /etc/mtab 文件。对于已经规范化的绝对路径,此选项可以与 -f 标志一起使用。
结合起来fuse
,我发现Linux Kernel 2.8.5中引入了它来防止…本地用户绕过预期的访问限制并通过符号链接攻击卸载任意目录[→来源]。
问题:mount --no-canonicalize
实际用途是什么?这只是一个安全问题还是这个选项还有什么用处?
由于我在这里的设置非常有限,因此我只能在有或没有此选项的情况下安装 USB 闪存驱动器,并且在最细微的细节上/etc/mtab
和使用时都具有完全相同的输出。mount --show-labels
这可能与其他文件系统不同。
更新1:umount
也提供了这个选项,其中man
和info
page 都告诉一个
--no-canonicalize
不要规范化路径。有关此选项的更多详细信息,请参阅 mount(8) 手册页
答案1
规范化是指设备路径。所以你说:
我只能使用或不使用此选项来安装 USB 闪存驱动器,在 /etc/mtab 中具有完全相同的输出
但你尝试过这个吗?
cd /dev
mount --no-canonicalize sdb1 /mnt/usb
中的列表mtab
将以“sdb1”开头。如果没有--no-canonicalize
,则为 /dev/sdb1。还:
ln -s /dev/sdb1 ~/mydev
cd ~
mount --no-canonicalize mydev /mnt/usb
mtab 列表将针对“mydev”,而如果没有 --no-canonicalize,它将针对 /dev/sdb1。
不确定这与通过对非特权挂载的符号链接攻击进行卸载有什么关系,但它确实允许隐藏可公开访问的/etc/mtab
.如果您没有规范(或任何)路径,则很难对某些内容进行符号链接。