如何在 Linux 上使用 pam_usb(Fork)使用 USB 闪存驱动器而不是密码登录

[ad_1]

pam_usb 是一个 PAM 模块,为使用普通 U 盘、SD 卡、MMC 等的 Linux 提供硬件认证。

使用此功能,您无需密码即可登录,只需将 USB 记忆棒或存储卡连接到您的计算机。 在运行需要超级用户的终端命令时,此 USB 身份验证也有效 – 使用时不会提示您输入密码 sudo 例如。

pam_usb 适用于任何支持 PAM 的应用程序,例如登录管理器(GDM、Lightdm 等),以及 su / sudo.

对于身份验证,pam_usb 使用 USB 闪存驱动器/存储卡序列号、型号和供应商,以及可选的一次性键盘 (OTP)。 当 One Time Pads 启用时(默认情况下启用,但您可以禁用它),公共用户垫文件存储在 USB / 存储卡上的一个名为的隐藏文件夹中 .pamusb,而私钥存储在同名的隐藏文件夹中,存储在用户主目录中。

这个工具的原始开发者似乎已经放弃了它,自 2016 年 4 月以来没有收到新的提交,自 2011 年以来没有新的版本。此后在各种存储库中进行了一些改进。 为了继续改进 pam_usb,该工具被分叉,同时也包括了之前在其他存储库中完成的工作 (其中包括诸如 UDisk2 端口之类的改进)。

pam_usb 特点:

  • 无密码(存储卡/USB)身份验证。 只需连接您配置了 pam_usb 的 U 盘/存储卡即可登录
  • 支持U盘、SD卡、MMC等。
  • 设备自动探测。 pam_usb 不需要挂载 U 盘; 它可以使用 UDisk 定位 USB 设备并直接访问其数据
  • 无需重新格式化您的 USB 闪存驱动器
  • USB 序列号、型号和供应商验证
  • 支持一次性密码 (OTP) 身份验证
  • 可用作双因素身份验证,需要 U 盘和密码才能登录您的 Linux 系统
  • 您可以在多台机器上使用相同的存储卡/USB 记忆棒

pam_usb 附带了 3 个工具: pamusb-agent 可用于在设备身份验证或移除时触发操作(例如,如果设备被移除,您可以使用命令锁定屏幕), pamusb-conf 这使得设置 pam_usb 更容易,并且 pamusb-check 它用于在脚本或应用程序中集成 pam_usb 的身份验证引擎。

pam_usb 目前不支持为每个用户添加多个设备。 目前, pamusb-conf 不会为已配置的用户添加设备。 您可以在此处跟踪此问题。

值得注意的是 pam_usb 仅用于登录,不用于解锁 GNOME Keyring 或解密私人文件夹. GNOME Keyring 似乎不支持使用密码以外的任何方式解锁。 因此,即使您在使用 pam_usb 时会自动登录并且连接了配对的 USB 闪存驱动器,GNOME Keyring 解锁对话框仍会显示,要求您输入密码以将其解锁。 例如,使用指纹认证时也会发生同样的情况。

我用 GDM 和 LightDM 试过这个。 在这两种情况下,在登录屏幕上,我都必须单击我的用户名并按 Enter 键登录,无需输入账户密码。

[[Edit]]在下面的评论中,开发人员指出他们正在尝试寻求帮助以对代码进行安全审查。 如果您能提供帮助,请通过 Github 与他们联系。

USB 相关:通过使用 Ventoy(Linux 和 Windows)简单地将 ISO 复制到 USB 来创建可启动的 USB 驱动器

安装和设置 pam_usb (fork)

此 pam_usb 分支尚未打包到任何 Linux 发行版的官方存储库中。 旧的 0.5.0 版本(使用 Python2 和 Udisks1)可用于一些 Linux 发行版,但大多数都没有。

pam_usb fork 开发者已经为最近的 Debian 和 Ubuntu 版本(以及 Linux Mint、Pop!_OS 和其他基于 Debian 或 Ubuntu 的 Linux 发行版)打包了这个 pam_usb 版本,你可以从这里下载它(你只需要那里的 libpam-usb 包)。

pam_usb fork 存储库也有一个 Arch Linux / Manjaro PKGBUILD 可用.

对于其他 Linux 发行版,您需要从源代码构建它.

如果您从其开发人员提供的 Debian 软件包安装 pam_usb(fork),则在安装过程中,系统会提示您选择设备和用户:

如果您不是这种情况,或者您想稍后手动执行此操作,您可以像这样设置 pam_usb。 插入 USB 闪存驱动器或存储卡并运行以下命令将新设备添加为身份验证方法:

sudo pamusb-conf --add-device DEVICE_NAME

在哪里 DEVICE_NAME 可以是你想要的任何东西。

接下来,您需要使用以下命令将您的用户添加到 pam_usb 配置中:

sudo pamusb-conf --add-user USERNAME

在哪里 USERNAME 是您要为其启用基于 USB/存储卡的身份验证的用户。

用户名和设备信息保存在 /etc/security/pam_usb.conf 文件。

您现在可以使用以下命令检查配置以查看一切是否正确:

pamusb-check USERNAME

需要注意的是,使用其开发者提供的 DEB 包,您不需要配置任何其他内容。 但是,如果您从源代码安装 pam_usb,则需要将 pam_usb 添加到系统身份验证过程中,如此处所述。

有关其他 pam_usb 配置选项,请参阅其配置 wiki 页面。

如果 U 盘/存储卡被移除,配置 pam_usb 以锁定屏幕(并在重新插入后解锁)

在 pamusb-agent 的帮助下,pam_usb 可以在 U 盘/存储卡插入或移除时执行命令。

pam_usb wiki 有一个配置示例,用于在移除 USB 记忆棒/存储卡时锁定屏幕,并在重新插入时解锁屏幕。该示例不再适用于 Gnome(但它应该适用于其他桌面环境,通过替代 gnome-screensaver-commandcinnamon-screensaver-command 对于 Cinnamon 桌面, mate-screensaver-command 用于 MATE 桌面等)。 [[Edit]]你也可以用它代替 xdg-screensaver (的一部分 xdg-utils 包裹; 例如 xdg-screensaver lock 锁定屏幕,以及 xdg-screensaver reset 解锁)。

为了让 pam_usb 在 USB 记忆棒/存储卡被移除时锁定屏幕,并在设备重新插入后解锁,在使用 systemd 的 Linux 发行版上(我只在 GDM3 的 Gnome 上测试了这个配置),我正在使用以下配置(/etc/security/pam_usb.conf):

...................................

<user id="USERNAME">

<device>DEVICE_NAME</device>

<!-- When the user "USERNAME" removes the usb device, lock the screen -->

<agent event="lock">

        <cmd>/usr/local/bin/screensaver-lock</cmd>        

    </agent>

    <!-- Resume operations when the usb device is plugged back and authenticated -->

    <agent event="unlock">     

        <cmd>/usr/local/bin/screensaver-unlock</cmd>       

    </agent>

</user>

...................................

使用两个脚本来完成这项工作。 /usr/local/bin/screensaver-lock 用于锁定屏幕,以及 /usr/local/bin/screensaver-unlock 解锁屏幕。 这是它们的内容。

/usr/local/bin/screensaver-lock

#!/bin/sh

SESSION=`loginctl list-sessions | grep USERNAME | awk '{print $1}'`

if [ -n $SESSION ]; then

        loginctl lock-session $SESSION

fi

/usr/local/bin/screensaver-unlock

#!/bin/sh

SESSION=`loginctl list-sessions | grep USERNAME | awk '{print $1}'`

if [ -n $SESSION ]; then

        loginctl unlock-session $SESSION

fi

在两者中,替换 USERNAME 用你的用户名。

KDE Con​​nect / GSConnect:如何使用 Android 设备锁定/解锁 Linux 桌面

通过 wiki.ubuntuusers.de

[ad_2]

Related Posts