[交流分享] v23无法自动挂载内置硬盘非系统分区 已解决
电梯直达到第
poster avatar
fslong
深度内测组
发表于 2023-04-03 22:16
楼主

目前是双系统,三块硬盘。
在v23下开机只能自动挂载v23的分区,内置硬盘的其他分区均不能自动挂载,而移动硬盘可以自动挂载。
文件管理器中的自动挂载设置项设置了也无效。

20.8系统如果boot分区是单独挂载的,是可以自动挂载其他分区的,包括Windows的,但到了23这样也不行。

如果是一根到底的分区方式,20.8也是无法挂载其他分区。

用修改fstab文件的方式20.8和23都是可以自动挂载的,但倾向于不使用这种方式,这是比较敏感的操作,普通用户也不建议改这个。

请问:

  1. 为何20.8单独挂载boot分区就可以自动挂载其他分区了,不单独挂载boot分区就不行?单独挂载boot分区跟一根到底的分区方式启动时候做的事情有什么不同吗?
  2. 这是什么原因导致v23即使单独挂载boot分区也不能自动挂载的?
  3. 如果我不想修改fstab文件还想自动挂载其他分区,需要做什么?
回复 收藏 只看作者
所有回复
1 / 4
到第
MDGA
deepin
内测贡献用户
发表于 2023-04-03 22:28
沙发

是呀,同问,习惯了20, 到了23 ,文管挂载这些分区,还得鉴权

希望能保持功能逻辑的一致性

或者说,如果挂载时必须鉴权,能否说说原因何在

回复 只看作者
[^_^]
深度攻城组
发表于 2023-04-04 00:12
板凳

看了下文管代码,如果磁盘挂载需要鉴权,文管自动挂载也会失效。

文管自动挂载的功能逻辑跟手动挂载是一样的。只是自动挂载中忽略了 UI 交互。也就是如果挂载磁盘要鉴权的话,没有 UI 交互会直接失败。

鉴权与否跟磁盘本身好像是有些关系的。

回复 只看作者
fslong
深度内测组
发表于 2023-04-04 00:17
地板
[^_^]

看了下文管代码,如果磁盘挂载需要鉴权,文管自动挂载也会失效。

文管自动挂载的功能逻辑跟手动挂载是一样的。只是自动挂载中忽略了 UI 交互。也就是如果挂载磁盘要鉴权的话,没有 UI 交互会直接失败。

鉴权与否跟磁盘本身好像是有些关系的。

所以疑问就有这么几个:

  1. 为啥要鉴权,windows、安卓也都没有。
  2. 20系统单独挂载boot分区是不需要鉴权的,只有自定义分区一根到底这样就需要鉴权了,这是什么原因?
回复 只看作者
fslong
深度内测组
发表于 2023-04-04 00:20
4楼
MDGA

是呀,同问,习惯了20, 到了23 ,文管挂载这些分区,还得鉴权

希望能保持功能逻辑的一致性

或者说,如果挂载时必须鉴权,能否说说原因何在

没搞懂其他系统都不需要鉴权,为啥他这个就需要了。

要鉴权的话内置磁盘鉴权,你外置磁盘更应该鉴权了,这样更能避免u盘有病毒之类的东西。

结果现在是u盘自动挂载,到了内置磁盘又变成了需要鉴权。

回复 只看作者
enforcee
deepin
发表于 2023-04-04 00:32
5楼

可能是少装了包,比如pmount

confused

https://wiki.debian.org/pmount

我还没用过,不知道是不是这个原因

回复 只看作者
fslong
深度内测组
发表于 2023-04-04 00:59
6楼
enforcee

可能是少装了包,比如pmount

confused

https://wiki.debian.org/pmount

我还没用过,不知道是不是这个原因

谢谢老铁,测试了下,不得行。

源里也没有这个包,我用了debian的不管用。

回复 只看作者
enforcee
deepin
发表于 2023-04-04 01:22
7楼
fslong

谢谢老铁,测试了下,不得行。

源里也没有这个包,我用了debian的不管用。

确实不是这个原因,因为我的另一个mint系统没有这个包也不需要密码

我再研究一下

joy

挺奇怪的,我记得似乎只有ubuntu系列的挂载不需要密码,是不是ubuntu对udisks有特殊的改动呢

回复 只看作者
[^_^]
深度攻城组
发表于 2023-04-04 01:43
8楼

这个是 chatgpt 的回答。

在 udisks 代码的 handle_mount 函数中发现了,在 system_managed 为 true 的情况下会触发后续的 polkit 鉴权操作。
image.png

回复 只看作者
[^_^]
深度攻城组
发表于 2023-04-04 01:47
9楼
[^_^]

这个是 chatgpt 的回答。

在 udisks 代码的 handle_mount 函数中发现了,在 system_managed 为 true 的情况下会触发后续的 polkit 鉴权操作。
image.png

不过会弹鉴权框的代码不止这里,还在看别的。

回复 只看作者
fslong
深度内测组
发表于 2023-04-04 02:04
10楼
[^_^]

不过会弹鉴权框的代码不止这里,还在看别的。

个人感觉可能不是这的问题。

  1. 那为何外置存储就不用了,难道内置存储比外置存储挂载风险更大?更敏感?
  2. 如果是这个解释,20系统也需要鉴权的,但20系统如果boot分区是单独挂载的,就不需要了。
回复 只看作者
[^_^]
深度攻城组
发表于 2023-04-04 02:12
11楼
fslong

个人感觉可能不是这的问题。

  1. 那为何外置存储就不用了,难道内置存储比外置存储挂载风险更大?更敏感?
  2. 如果是这个解释,20系统也需要鉴权的,但20系统如果boot分区是单独挂载的,就不需要了。

我只是从代码分析它弹框的原因,这种只能逆向去看。

回复 只看作者
fslong
深度内测组
发表于 2023-04-04 02:56
12楼

测试了下,v23即使全盘安装也不能自动挂载。

回复 只看作者
fslong
深度内测组
发表于 2023-04-04 03:11
13楼
[^_^]

我只是从代码分析它弹框的原因,这种只能逆向去看。

嗯,谢谢老哥,感觉这块需要研发来说明了。

回复 只看作者
浪云
deepin
发表于 2023-04-04 03:11
14楼
enforcee

确实不是这个原因,因为我的另一个mint系统没有这个包也不需要密码

我再研究一下

joy

挺奇怪的,我记得似乎只有ubuntu系列的挂载不需要密码,是不是ubuntu对udisks有特殊的改动呢

mint启动后,不如不限启动文管,点击下win下的各个分区,

直接启动其他程序比如wps,要打开其他分区的文件是不行的,

会找不到分区。

只有在启动文管,点开分区后,才能在wps里面找到。

你也是这样吗?装过两台机器都出现这个问题,在这个点上deepin就不会,ubuntu也会

回复 只看作者
enforcee
deepin
发表于 2023-04-04 03:24
15楼

我刚才用mint和archlinux对比测试了一下(mint的不需要密码,archlinux需要密码),一些结果

第一,两个系统中 /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy区别不大,在这个文件中定义的动作,挂载普通分区不需要授权,挂载系统分区都是需要授权。具体哪个分区是属于「系统分区」,好像是由udev规则确定的(应该是 man udisks里面的UDISKS_SYSTEM)。

第二,用 udisksctl info -b /dev/[设备号]可以看系统的内置磁盘,HintSystem均为true,U盘的同一字段为false,也就是说,不需要密码挂载并不是因为他是否为「系统分区」。由此楼上的ChatGPT说的应该不对。

第三,需要输入密码时polkit才会输出日志。可以用 journalctl -u polkit -r查看。可以用来查看调用的动作名称。但是如果不需要密码时他就不输出日志了,暂时还没找到更有效的debug方法。

第四,使用 pkcheck -a org.freedesktop.udisks2.filesystem-mount-system -p [进程号pid]对进程所有的权限进行查看,如果有权限就会直接返回0,没有权限就会弹出密码输入框。mint似乎每个应用程序都被永久地授权了这个动作,因此才可以任意挂载。是从哪里定义的暂时不明确。

我还要继续查看一下关于polkit规则方面的定义,不过能不能解决这个事情还很难说

blush

回复 只看作者
enforcee
deepin
发表于 2023-04-04 03:35
16楼
浪云

mint启动后,不如不限启动文管,点击下win下的各个分区,

直接启动其他程序比如wps,要打开其他分区的文件是不行的,

会找不到分区。

只有在启动文管,点开分区后,才能在wps里面找到。

你也是这样吗?装过两台机器都出现这个问题,在这个点上deepin就不会,ubuntu也会

不知道,我没安装wps。我刚才试了用xed的文件对话框(GTK的)是能直接挂载硬盘,而Qt Creater、Krita等Qt程序就没有选择磁盘的选项。blender能查看已经挂载磁盘的文件,但是未挂载的找不到。

我是觉得和这个问题没太大联系

blush

回复 只看作者
enforcee
deepin
发表于 2023-04-04 03:42
17楼

我刚才了解到gvfs(Gnome virtual filesystem)是一些文件管理器的后端。没准和这个东西有关系

confused

回复 只看作者
enforcee
deepin
发表于 2023-04-04 04:34
18楼

注意到mint有一个奇怪的文件夹 /etc/polkit-1/localauthority。这个是pklocalauthority控制的,而这个设计已经在新版本的PolicyKit里面被取消了。其实这个不是重点,关键在于这个玩意还有一个配置文件的路径,居然是 /var/lib/polkit-1/localauthority,真是让人摸不到头脑。

joy

/var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkia文件中有这么一段:

[Mounting, checking, etc. of internal drives]
Identity=unix-group:admin;unix-group:sudo
Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*;org.freedesktop.udisks2.filesystem-mount-system;org.freedesktop.udisks2.encrypted-unlock-system;org.freedesktop.udisks2.filesystem-fstab;
ResultActive=yes

那么大概已经找到了问题的源头了,接下来再进行一些测试,应该会印证之前的几个猜测。

回复 只看作者
enforcee
deepin
发表于 2023-04-04 04:53
19楼

把这几行注释掉以后再挂载就需要密码了(而且都不需要重启直接就生效)

joy

下面我准备在archlinux里面复刻出来同样的配置

回复 只看作者
fslong
深度内测组
发表于 2023-04-04 06:22
20楼
enforcee

确实不是这个原因,因为我的另一个mint系统没有这个包也不需要密码

我再研究一下

joy

挺奇怪的,我记得似乎只有ubuntu系列的挂载不需要密码,是不是ubuntu对udisks有特殊的改动呢

manjaro也不需要就可以。

回复 只看作者
1 / 4
到第