这是一个基于 Rust 编写的 Linux 指纹驱动和 PAM 模块。
专为 AS608 指纹模块设计。没有测试过在 R307 / R503 上是否可用。
它允许你通过 USB-TTL 转换器将这些廉价的嵌入式指纹模块连接到台式机或笔记本上,并实现:
- 🚀 Sudo 提权认证:在终端执行
sudo时刷指纹,无需输入密码。 - 🔒 锁屏解锁:支持 kscreenlocker (及其他支持 PAM 的锁屏工具) 指纹解锁。
- 👥 多用户映射:支持将同一个指纹 ID 映射到多个 Linux 用户(如
root和普通用户)。
注意:本项目采用 UART 串口通信协议,不支持 笔记本自带的 USB 协议指纹识别器。
你需要以下大约 50 元人民币的硬件:
- 指纹模块:AS608。
- USB 转 TTL 模块:CH340 (CP2102应该也可以, 但是贵一些)。
- 连接线:4 根杜邦线。
| 指纹模块 | USB-TTL 模块 | 说明 |
|---|---|---|
| VI | 3.3V / 5V | 模块主电源,接 3.3V |
| GND | GND | 地线 |
| TX | RX / RXD | 模块发,电脑收 |
| RX | TX / TXD | 模块收,电脑发 |
| 其他线 | - | 悬空 |
确保安装了 Rust 工具链以及 PAM 开发库。
- Arch Linux:
sudo pacman -S rust cargo pam
git clone https://github.com/krteke/as608-driver.git
cd as608-driver
cargo build --release将编译好的二进制文件和动态库复制到系统目录:
# 安装 CLI 管理工具
sudo cp target/release/as608_tool /usr/local/bin/
# 安装 PAM 模块 (Arch 路径)
sudo cp target/release/libas608_pam.so /usr/lib/security/
# 注意:Ubuntu/Debian 用户路径通常是 /lib/x86_64-linux-gnu/security/为了让普通用户(以及锁屏程序)能访问 USB 设备,必须配置 Udev 规则并固定设备名。
创建文件 /etc/udev/rules.d/99-as608.rules,写入以下内容:
(此处示例的 idVendor 为 CH340 芯片的 USB 转 TTL 模块, 其他芯片可以使用 lsusb 指令来查看设备 ID, 一般取前四位就够了)
# 赋予读写权限,创建 /dev/as608 软链接,并设置 ID_MM_DEVICE_IGNORE 防止 ModemManager 干扰
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", MODE="0666", SYMLINK+="as608", ENV{ID_MM_DEVICE_IGNORE}="1"
重载规则:
sudo udevadm control --reload-rules && sudo udevadm trigger检查 /dev/as608 是否存在且权限正确。
(软链接指向的文件权限应为crw-rw-rw-)
使用 TUI 工具录入指纹。因为需要写入 /etc 下的配置文件,必须使用 sudo。
sudo as608_tool会出现选择界面,可以选择录入 / 删除 / 搜索指纹
- 程序会自动寻找空闲的指纹 ID 或者使用输入的指纹 ID。
- 按提示按压两次手指。
- 录入成功后,数据会保存在硬件 Flash 和
/etc/as608_config.toml中。
/etc/pam.d/system-auth,因为这可能导致 SDDM/GDM 登录界面卡死。
最佳实践是只为 sudo 和 锁屏 启用指纹(可以覆盖90%的使用场景)。
编辑 /etc/pam.d/sudo,在文件最开头添加:
auth sufficient libas608_pam.so
将 /usr/lib/pam.d/kde 的文件复制到 /etc/pam.d/kde ,在 /etc/pam.d/kde 文件最开头添加:
auth sufficient libas608_pam.so
配置文件位于 /etc/as608_config.toml,由 CLI 工具自动管理,但你也可以手动编辑。
[[fingerprints]]
id = 0
name = "右手食指"
users = ["zhangsan", "root"]
[[fingerprints]]
id = 1
name = "左手拇指"
users = ["zhangsan"]本项目基于 GPLv3 许可证开源。