我有一个自己编写的自定义 NSS 模块,我通常通过复制库来安装它,像这样...
cp libnss_mymodule.so.0 /lib64/
...然后我将模块添加到/etc/nsswitch.conf...
$ grep mymodule /etc/nsswitch.conf
passwd: mymodule files usrfiles sss systemd
group: mymodule files usrfiles sss systemd
这在 CentOS 7 中对我有用,但在 CoreOS 中不起作用,因为/lib64位于只读文件系统上。我可以将共享对象库放在 CoreOS 的哪里,以便 nsdispath() 可以查看?
编辑:我尝试将文件添加到/opt/me/lib64并将其放入 LD_LIBRARY_PATH 环境变量中。但似乎没有帮助。
答案1
CoreOS 称其自己是不可变的;这是设计使然。
答案2
我通过放置库来让它工作/opt/mything/lib64然后修改以下系统配置:
将以下行添加到/etc/环境:
LD_LIBRARY_PATH=/opt/mything/lib64
将以下行添加到/etc/systemd/system.conf:
DefaultEnvironment=LD_LIBRARY_PATH=/opt/mything/lib64
然后运行以下命令:
sudo systemctl daemon-reload
这使得 NSS 能够找到我构建的自定义 NSS 模块。