小编Col*_*RiX的帖子

了解 PAM 和 NSS

在过去的几天里,我设置了一些带有 LDAP 身份验证的 Linux 系统,一切正常,但是经过大量研究,我仍然无法真正理解 NSS 和 PAM。

引用:

NSS 允许管理员指定将存储和搜索身份验证文件、主机名和其他信息的源列表

PAM 是一组库,为应用程序和底层操作系统提供可配置的身份验证平台

我不明白的是 PAM 和 NSS 如何一起工作和交互。在这本书的架构是解释得很好:我PAM配置为使用pam_ldapLDAP的帐户和pam_unix本地帐户,然后我配置nsswitch.conf来从本地文件和LDAP信息。

如果我理解正确,LDAP 使用了两次:首先pam_ldap由 NSS使用,然后由 NSS 调用,它本身从pam_unix. 那正确吗?LDAP 真的使用了两次吗?但是为什么我需要同时配置 NSS 和 PAM?我的解释是 PAM 执行与 NSS 不同的任务,它被其他程序使用。但是,正如我在本页中所读到的那样,应该可以仅使用 NSS 或仅使用 PAM 。

所以我进行了一些试验,我首先尝试从nsswitch.conf(并且身份验证停止工作,好像只有 pam_ldap 不足以完成这项工作)中删除 LDAP 。然后我在 NSS 中重新启用了 LDAP,并从 PAM 配置中删除了它(这次一切正常,好像pam_ldap没用一样,而且 NSS 足以验证用户的身份)。

有没有人可以帮我澄清一下?提前谢谢了。

更新

我现在刚刚尝试了一些东西。我再次删除了所有pam_ldappam 配置字段中的所有条目,并且还shadow: ldap从 …

ldap authentication pam nss

23
推荐指数
1
解决办法
2万
查看次数

在声明式 Jenkins 管道中使用 GIT 变量

我正在努力访问我的 Jenkins 管道中的 GIT 变量

我需要知道在管道的某个阶段的某些 bash 代码中检查了哪个 GIT 分支。我将使用它来创建不同的输出文件名。我的管道是声明性的,而不是脚本化的,我使用的是 Jenkins 2.150.1

我尝试了所有可以在网上找到的东西,但大多是不完整的代码或脚本管道。或者干脆我不能把这些信息放在一起。

给我花多少时间,如果有一个使用声明性管道的完整工作示例会很好。

这是我到目前为止尝试过的:

#1

运行 git inside sh,但 Jenkins 检出提交,而不是分支,导致分离头

#2

从 shell 中查找环境变量,但没有设置与 GIT 相关的变量。这个片段

steps {
  sh 'echo $GIT_BRANCH'
}
Run Code Online (Sandbox Code Playgroud)

总是返回空。然后我尝试了 Groovy:

steps {
  echo "${env.GIT_BRANCH}"
}
Run Code Online (Sandbox Code Playgroud)

打印null

#3

在“全局变量参考”中有一段说:

SCM-specific variables such as GIT_COMMIT are not automatically defined as environment variables; rather you can use the return value of the checkout step.
Run Code Online (Sandbox Code Playgroud)

我在网上搜索了如何做到这一点,并将此代码放在一起:

pipeline {
  stages {
    stage('Build') {
      steps {
        def …
Run Code Online (Sandbox Code Playgroud)

git jenkins

12
推荐指数
2
解决办法
5万
查看次数

标签 统计

authentication ×1

git ×1

jenkins ×1

ldap ×1

nss ×1

pam ×1