You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于SysRq的身份认证:Linux添加不可绕过类UAC授权提示的可行性探讨

可行性分析:Linux下实现类Windows UAC的不可绕过授权提示

针对你提出的需求——在Linux系统中实现软件层面不可绕过、仅允许物理在场键盘操作者完成授权的类Windows UAC提示,且支持任意进程申请权限提升,我结合Linux的系统机制做了如下分析:

核心实现思路

以需要交互式输入密码的特权命令(如su、RBAC工具gradm)作为授权触发载体,同时通过绑定物理输入设备、隔离虚拟输入路径的方式,确保授权操作无法被进程模拟绕过。

1. 特权认证载体的选择与配置

  • 优先选择依赖PAM(Pluggable Authentication Modules)框架的命令,比如su或gradm:
    • 这类命令原生支持交互式密码输入,且可以通过修改PAM配置(如/etc/pam.d/su)强制开启仅交互式认证,禁止通过管道、脚本等非交互式方式传入密码。
    • 以su为例,可在PAM配置中添加限制规则,拒绝所有非交互式的认证请求,确保必须通过物理键盘输入密码。

2. 实现软件不可绕过的关键:绑定物理输入设备

要避免进程通过xdotool、sendevent等工具模拟输入绕过授权,必须确保输入仅来自物理键盘:

  • 虚拟控制台切换:触发授权时,自动切换到独立的虚拟控制台(如tty1),此时X11层面的模拟输入工具无法生效,只能通过物理键盘操作。认证完成后再切回原会话。
  • 自定义PAM模块:编写PAM模块,验证输入来源是否为物理键盘设备(通过读取/dev/input下设备的ID_INPUT_KEYBOARD属性),拒绝来自虚拟输入设备的输入。
  • 直接读取物理设备节点:授权进程以root权限直接读取物理键盘的设备节点(如/dev/input/event0),跳过系统的输入子系统,确保输入无法被进程劫持。

3. 支持任意进程申请提权的架构

  • 编写一个后台守护进程(daemon),以root权限运行,监听系统中进程的提权请求:
    • 进程可通过Unix域套接字或DBus接口向守护进程发送提权请求,附带需要执行的命令。
    • 守护进程收到请求后,触发特权认证流程(如在虚拟控制台弹出su的密码提示),认证通过后以root权限执行请求的命令,并将执行结果返回给发起请求的进程。

4. 潜在风险与应对方案

  • 模拟输入绕过:定期扫描系统中的虚拟输入设备,禁止在授权期间加载虚拟输入驱动;或在PAM模块中添加输入来源验证逻辑。
  • 权限滥用:结合gradm等RBAC工具,限制守护进程仅能执行预定义的提权操作,避免被恶意进程利用执行任意命令。
  • 用户体验:若需要图形化提示,可使用pkexec(Polkit的工具)作为基础,修改Polkit的配置,强制要求物理键盘输入,并禁用远程认证选项。

内容的提问来源于stack exchange,提问作者forest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:07:28