无法从 dotnet 核心调用自定义 PAM 模块 - 可能与多体系结构有关
Can't call custom PAM module from dotnet core - possibly related to multiarch
我构建了一个简单的自定义 PAM 模块,该模块与 pamtester 和我在网上找到的其他一些 pam 测试代码一起按预期工作。
我还构建了一个简单的 dotnet 核心应用程序,它使用 pinvoke 对 pam 进行身份验证。
如前所述,自定义模块与 pamtester 一起工作,自定义 dotnet 应用程序(直到接收到 conv 回调)针对默认 ubuntu 15.10 pam 设置工作。
但是,如果我将自定义应用程序连接到自定义 PAM 模块,我会在 auth.log 中收到一条错误消息
dotnet: PAM unable to dlopen(pam_permit_log_response.so):
/lib/security/pam_permit_log_response.so: cannot open shared object file: No
such file or directory
...所以当从 dotnet 调用 pam 到自定义模块时,它在 /lib/x86_64-linux-gnu/security 中找不到模块
如果我更改 pam 配置文件以包含模块的完整路径,则会收到错误
dotnet: PAM unable to dlopen(/lib/x86_64-linux-
gnu/security/pam_permit_log_response.so): /lib/x86_64-linux-
gnu/security/pam_permit_log_response.so: undefined symbol: pam_syslog
看来还是没能解决问题,这次是自定义pam模块中的引用问题。
谁能在以下方面为我指出正确的方向:
- 为什么 PAM 找不到我的自定义模块但可以找到默认的 ubuntu 模块?
- 为什么只有从 dotnet 调用 pam 时才会发生这种情况
- 如何构建 and/or 配置我的自定义 pam 模块,使其与预先存在的系统模块的行为相同?
我仍然不知道为什么从 dotnet 而不是从 pamtester 调用我的自定义模块会出现问题,但要回答最重要的问题:"How I can build and/or configure my custom pam module to behave the same as the pre-existing system modules?"
答案是,我之前 link 使用以下方法构建模块:
ld -x --shared -o pam_permit_log_response.so pam_permit_log_response.o
为了解决这个问题,我需要向 link 人员指出这是一个使用 -lpam 标志的 pam 模块,因此对 link 的调用变为:
ld -x --shared -o pam_permit_log_response.so pam_permit_log_response.o -lpam
我构建了一个简单的自定义 PAM 模块,该模块与 pamtester 和我在网上找到的其他一些 pam 测试代码一起按预期工作。
我还构建了一个简单的 dotnet 核心应用程序,它使用 pinvoke 对 pam 进行身份验证。
如前所述,自定义模块与 pamtester 一起工作,自定义 dotnet 应用程序(直到接收到 conv 回调)针对默认 ubuntu 15.10 pam 设置工作。
但是,如果我将自定义应用程序连接到自定义 PAM 模块,我会在 auth.log 中收到一条错误消息
dotnet: PAM unable to dlopen(pam_permit_log_response.so):
/lib/security/pam_permit_log_response.so: cannot open shared object file: No
such file or directory
...所以当从 dotnet 调用 pam 到自定义模块时,它在 /lib/x86_64-linux-gnu/security 中找不到模块
如果我更改 pam 配置文件以包含模块的完整路径,则会收到错误
dotnet: PAM unable to dlopen(/lib/x86_64-linux-
gnu/security/pam_permit_log_response.so): /lib/x86_64-linux-
gnu/security/pam_permit_log_response.so: undefined symbol: pam_syslog
看来还是没能解决问题,这次是自定义pam模块中的引用问题。
谁能在以下方面为我指出正确的方向:
- 为什么 PAM 找不到我的自定义模块但可以找到默认的 ubuntu 模块?
- 为什么只有从 dotnet 调用 pam 时才会发生这种情况
- 如何构建 and/or 配置我的自定义 pam 模块,使其与预先存在的系统模块的行为相同?
我仍然不知道为什么从 dotnet 而不是从 pamtester 调用我的自定义模块会出现问题,但要回答最重要的问题:"How I can build and/or configure my custom pam module to behave the same as the pre-existing system modules?"
答案是,我之前 link 使用以下方法构建模块:
ld -x --shared -o pam_permit_log_response.so pam_permit_log_response.o
为了解决这个问题,我需要向 link 人员指出这是一个使用 -lpam 标志的 pam 模块,因此对 link 的调用变为:
ld -x --shared -o pam_permit_log_response.so pam_permit_log_response.o -lpam