sudo proxychains 与 proxychains sudo:顺序为何重要
了解为什么 proxychains sudo 可能丢失其拦截库,而 sudo proxychains 会在目标执行环境中启动包装器。
这两条命令的执行边界并不相同:
proxychains4 sudo command
sudo proxychains4 command
Proxychains-ng 会安排把库预加载到目标程序中。在 Linux 上,执行 sudo 这类 set-user-ID 程序会触发加载器的安全规则,在 sudo 来得及保留相关库加载变量之前就把它们移除。
因此,“保留更多环境变量”并不是把 sudo 放进包装器里的可靠修复办法。sudoers 手册明确说明,像 LD_* 这样的变量会在 sudo 启动之前被移除。
如果命令确实需要目标账户,就在该已授权上下文中启动包装器。然后检查它读取哪份配置:sudo 可能改变 HOME、PATH 以及适用的每用户文件。非特权调用可以工作,并不能证明 root 选择了同一份代理列表。
如果程序自带代理接口,就优先使用它。这样就不必为程序本来就知道如何路由的请求去依赖拦截。
同时也要留意 proxychains 的覆盖范围限制。它的启动信息只能证明包装器启动了;它不能证明原始数据包、不受支持的调用或另行启动的既有应用进程使用了它的库。要确认你打算代理的网络操作,而不是把 root 权限当作每个操作都被拦截的证据。