我正在尝试将 Linux-PAM 从 Ubuntu 主机交叉编译到 powerpc 架构(运行 Linux 内核 2.6.34)。首先,我运行 ./configure 命令,将交叉编译器的 --host 路径和名为“target”的本地目录的 --prefix 路径作为配置命令的选项;之后,我运行 make 和 make install。 make install 命令显然结束时没有任何错误。在安装过程结束时,我的“目标”文件夹中会创建几个文件和目录,但缺少 /etc/pam.d:我希望找到包含 PAM 模块的该文件夹。 pam.conf 文件也丢失。难道我做错了什么?或者也许缺少 /etc/pam.d 和 pam.conf 是预期的行为?这些是我尝试交叉编译的命令:
export PATH=/path/to/crosscompiler/$PATH
./configure --prefix=/home/target --host=powerpc-unknown-linux-gnu
make
make install
多谢。
答案1
据我所知,这是预期行为,因为 PAM 设计为由系统管理员配置。实际上,大多数 Linux 发行版都会附带自己的默认配置和假设(参见 Arch Linux:帕姆库,Debian:libpam 运行时),因此每个 Linux 系统都没有提供规范的 PAM 基本配置。
看源码有一个例子conf/pam.conf
您可以将其转换为 pam.d/ 结构(例如,通过cat pam.conf | pam_conv1/pam_conv1
在 conf/ 目录中运行)。也有相关说明超越 Linux 从头开始手册这将导致最少的设置。
不过,我宁愿建议您阅读文档(id 手册页和系统管理员指南)并且根据您想要执行的操作,也许还可以分发特定的文档(例如Arch Linux 维基,保护 Debian 手册)这样您就知道 PAM 是如何工作的并且可以编写适当的配置。