[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-command
和 cinnamon-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 Connect / GSConnect:如何使用 Android 设备锁定/解锁 Linux 桌面
通过 wiki.ubuntuusers.de
[ad_2]