PAM应用与PAM模块间任意字节串的最优共享方案咨询
PAM模块向应用共享任意字节串的最优方案
用官方私有数据接口才是正解:别盯着
pam_get_item()那有限的项类型了,PAM专门提供了pam_set_data()和pam_get_data()来做模块与应用的自定义数据共享,这才是设计用来干这个事的。模块侧调用pam_set_data()把你的任意字节串存进去,记得注册个清理函数负责释放内存;应用侧用同一个自定义键调用pam_get_data()就能取出数据,完全满足任意字节串的需求。别碰PAM_CONV的歪主意:PAM_CONV是给交互回调用的,硬往里面塞自定义数据属于hack,破坏接口原本的语义不说,还容易和正常的交互逻辑冲突,后续维护或者兼容其他模块大概率出问题,绝对不是最优选择。
几个实现细节要注意:
pam_set_data()的第四个参数是清理函数,PAM上下文销毁时会自动调用它,一定要写好,避免内存泄漏。- 模块和应用要约定好唯一的自定义数据键,比如
"my_app_custom_payload",确保两边用同一个键存取。 - 如果是同一进程内的模块和应用,直接传字节串指针就行;要是跨进程场景,得自己处理序列化和字节序问题。
内容的提问来源于stack exchange,提问作者Jay Smith
相关产品推荐
相关产品推荐

