我感兴趣的是写一个PAM模块会利用的Unix登录流行的认证机制。 我的大部分过去的编程经验一直在Python,和我已经与交互的系统有一个Python API。 我一派四周,发现pam_python ,这允许PAM模块intrepreter调用蟒,因此允许PAM模块在 Python基本上被写入。
不过,我读过,有安全隐患,允许用户调用与比用户本身,如SUID Python脚本更高的访问级别运行Python代码时。 适用这些问题给一个Python的PAM模块呢?
我感兴趣的是写一个PAM模块会利用的Unix登录流行的认证机制。 我的大部分过去的编程经验一直在Python,和我已经与交互的系统有一个Python API。 我一派四周,发现pam_python ,这允许PAM模块intrepreter调用蟒,因此允许PAM模块在 Python基本上被写入。
不过,我读过,有安全隐患,允许用户调用与比用户本身,如SUID Python脚本更高的访问级别运行Python代码时。 适用这些问题给一个Python的PAM模块呢?
你提到的安全问题都没有,本身,关于“允许用户调用Python代码”,它具有高访问级别运行,但允许用户行使任何形式的控制了这种代码的运行-最明显的通过控制该进程的环境注入或改变代码本身,但更微妙的是,还(并且因此路径从该代码导入模块,例如)。 (类似的关注将与C-编写的代码适用,如果用户能够控制从后者负载路径.so
的比如-尽管操作系统可能会这样的担忧帮助更直接)。
这在我看来, pam_python
良好装甲防范这种风险,所以它应该是你的目的,安全地使用。 但是,请注意, 该文档指出...:
用Python编写PAM模块会带来较大的性能损失,并要求Python来进行安装,因此它不是写将被广泛使用的模块是最好的选择。
所以,如果你是对的,你提供的机制将是受欢迎的,你可能会想用C编写的模块,以避免这些问题。 然而,它的原型在Python作为有限的分布概念验证,在C紧致起来之前,是一个可行的战略。