如何调试为什么 uid、gid、umask、fmask 和 dmask 挂载选项被忽略?

如何调试为什么 uid、gid、umask、fmask 和 dmask 挂载选项被忽略?

我正在运行 Kubuntu 22.04 LTS(又名 Jammy Jellyfish)的 Live ISO。我想做的事情很可能与 KDE 无关,所以人们可能会认为我正在运行 Ubuntu。

我正在尝试FAT32为当前用户以读写模式安装分区。在此 Live ISO 上,将调用用户kubuntuubuntu在 Ubuntu 中)。显然,还有一个root始终拥有所有权限。但我想让它对普通用户有用。

假设我在 shell 变量中有分区设备路径P,在MP.我尝试执行这样的命令

sudo mount $P $MP

然后当我打电话时

mount | grep $MP

我可以看到应用了这样的安装类型和选项(请注意fmaskdmask选项值):

type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

当我打电话时stat $MP | grep Uid:我得到这个:

Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

它完全符合人们在执行 mount 时所期望的结果,就像应用具有root类似值的选项时一样。fmask=0022,dmask=0022

我试图找到有关如何使挂载的 FS 为普通用户工作的信息。所有建议都是关于uidgidumaskfmask以及dmask如何使用它们。虽然我很满意,但fmask=0022,dmask=0022我也决定尝试重置这些内容。所以我最终尝试了这个(添加冗余,以防万一):

sudo mount -o uid=$(id -u),gid=$(id -g),umask=0000,fmask=0000,dmask=0000 $P $MP

你猜怎么着?结果和我上面说的一模一样。这是

type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

同样的事情与stat $MP | grep Uid:.它返回

Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

我的用户没有写权限kubuntu

我检查了sudo dmesg | tail -n 2并且cat /var/log/syslog | tail -n 2.我通常在Alt+(SysRq/PrtScr, S)执行上述操作之前按一下 ( sudo mount ...)来触发“sysrq:紧急同步” 。这样我在日志中有一个“检查点”,它由 2 行文本片段sysrq: Emergency SyncEmergency Sync complete.因此,像往常一样,我触发了“sysrq:紧急同步”,然后调用了sudo mount ...。检查完两个日志后,我看到的只是与“sysrq:紧急同步”相关的两行。没有任何与mount命令相关的内容可以解释为什么它忽略安装选项。

所以这里是问题:

  • 为什么我提供的安装选项被忽略?
  • 如何解决此类mount行为?

相关内容