用户注销时存储驱动器未卸载

用户注销时存储驱动器未卸载

在 Ubuntu 22.04 上,我有两个用户共享一个存储驱动器(它也与 Windows 共享,因此我需要将其格式化为 NTFS 并放在单独的驱动器上)。

两个 Ubuntu 用户都启用了该驱动器的自动安装选项,但当一个用户注销时,另一个用户无法安装该驱动器,因为它仍然由注销的用户以某种方式安装。只有重新启动/关闭才能完全卸载该驱动器。

有没有办法允许多个用户安装一个驱动器或分区,或者避免在用户注销后仍安装该驱动器?

截图1 截图2

答案1

我刚刚尝试过这个,我也遇到了这个问题。

我不知道这是不是故意的或者是一种错误,不过这里有一个解决方法;

我找不到一种“干净的方式”来做事并在从 GNOME 会话注销时运行脚本,我认为没有工具可以做到这一点。

所以我认为下一个“最干净”的东西是使用/etc/gdm3/PostSession/Default(每次以 GDM 启动的会话结束时它都会以 root 身份运行:优点是它适用于以 GDM 启动的每个会话,包括其他桌面环境,并且适用于每个用户,在您的情况下这两者都是理想的功能)。

我会很迂腐地让你使用其 ID 而不是其路径来卸载驱动器,这对于外部驱动器来说至关重要,因为其路径更容易发生变化。

首先确定驱动器的 ID:

lsblk -So VENDOR,MODEL,ID
% lsblk -So VENDOR,MODEL,ID 
VENDOR MODEL ID
USB   SanDi USB_SanDisk_3.2Gen1_0401c1c9c83d0b2a25b1128dbbb7c1ae9377813411422a8d5a8c9ce6373d2d71a2fb00000000000000000000887c6f7a00147c1881558107b42f0cf4-0:0

/etc/gdm3/PostSession/Default然后像这样编辑:

#!/bin/sh

id='/dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_0401c1c9c83d0b2a25b1128dbbb7c1ae9377813411422a8d5a8c9ce6373d2d71a2fb00000000000000000000887c6f7a00147c1881558107b42f0cf4-0:0'

umount $(realpath "${id}")*

exit 0

id用您的驱动器的 ID替换;

请注意,umount $(realpath "${id}")*将卸载嵌套在磁盘实际路径(等)下的所有分区/dev/sda1/dev/sda2我认为这也是您所需要的功能。

答案2

好吧,让我想起了一件事

/etc/systemd/logind.conf

更改线路

#KillUserProcesses=no

KillUserProcesses=yes

因此当用户注销时,所有进程都将被终止(会话范围)。

sudo systemctl restart systemd-logind.service  

然后再试一次。

相关内容