6.6. pam_env-设置/取消设置环境变量

pam_env.so [调试] [conffile = * +2+ *] [envfile = * +3+ *] [readenv = * +4+ *] [user_envfile = * +5+ *] [user_readenv = * +6+ *]

6.6.1. DESCRIPTION

pam_env PAM 模块允许(取消)设置环境变量。支持使用先前设置的环境变量以及* PAM_ITEM (例如 PAM_RHOST *)。

默认情况下,用于(取消)设置变量的规则来自配置文件/etc/security/pam_env.conf。可以使用* conffile *选项指定备用文件。

其次,将读取在单独的行上具有简单* KEY = VAL 对的文件(默认为/etc/environment)。使用 envfile 选项,可以指定备用文件。使用 readenv *选项可以完全禁用它。

第三,它将读取用户配置文件(默认为$HOME/.pam_environment)。可以使用* user_envfile 选项更改默认文件,并可以使用 user_readenv *选项打开和关闭默认文件。

由于设置 PAM 环境变量可能会对其他模块产生副作用,因此该模块应该是堆栈中的最后一个模块。

6.6.2. DESCRIPTION

/etc/security/pam_env.conf文件指定由 pam_env(8)设置,取消设置或修改的环境变量。当有人登录时,将读取此文件并根据其设置环境变量。

每行以变量名开头,然后每个变量 DEFAULT 和 OVERRIDE 有两个可能的选项。 DEFAULT 允许 Management 员将变量的值设置为某个默认值,如果未提供任何默认值,则假定为空字符串。 OVERRIDE 选项告诉 pam_env 如果有要使用的值,则应 Importing 其值(覆盖默认值)。不使用 OVERRIDE,假定为“”,并且不会进行任何覆盖。

VARIABLE [ DEFAULT=[value] ] [ OVERRIDE=[value] ]

使用${string}语法可在值中使用(可能不存在)环境变量,使用@{string}语法可在值中使用(可能不存在)PAM_ITEM 和 HOME 和 SHELL。 $和@字符都可以反斜杠转义以用作 Literals 值,可以用“”分隔,不支持转义“。请注意,您要使用的许多环境变量可能在模块安装时尚未设置例如,${HOME}在下面多次使用,但是许多 PAM 应用程序在需要时无法使它可用。特殊变量@{HOME}和@{SHELL}扩展为用户的值,从他的* passwd *条目。

行首的“ #”字符(前面没有空格)可用于将该行标记为 Comments 行。

/etc/environment文件指定要设置的环境变量。该文件必须在单独的行上由简单的* NAME = VALUE *对组成。 pam_env(8)模块将在pam_env.conf文件之后读取该文件。

6.6.3. OPTIONS

  • conffile=/path/to/pam_env.conf

    • 指示替代的pam_env.conf样式配置文件以覆盖默认设置。当不同的服务需要不同的环境时,这很有用。
  • debug

    • syslog(3)打印了很多调试信息。
  • envfile=/path/to/environment

    • 指示替代的environment文件以覆盖默认文件。语法在单独的行上是简单的* KEY = VAL 对。可以指定 export *指令以实现 bash 兼容性,但将被忽略。当不同的服务需要不同的环境时,这很有用。
  • readenv=0|1

    • 打开或关闭由 envfile 指定的文件读取(0 禁用,1 启用)。默认情况下,此选项处于启用状态。
  • user_envfile=filename

    • 指示替代的.pam_environment文件以覆盖默认文件。语法与*/etc/security/pam_env.conf *相同。文件名是相对于用户主目录的。当不同的服务需要不同的环境时,这很有用。
  • user_readenv=0|1

    • 打开或关闭特定于用户的环境文件的读取。 0 关闭,1 打开。默认情况下,此选项处于关闭状态。

6.6.4. 提供的模块类型

提供了authsession模块类型。

6.6.5. 返回值

  • PAM_ABORT

    • 并非可以获得所有相关数据或选项。
  • PAM_BUF_ERR

    • 内存缓冲区错误。
  • PAM_IGNORE

    • 找不到 pam_env.conf 和环境文件。
  • PAM_SUCCESS

    • 设置环境变量。

6.6.6. FILES

  • /etc/security/pam_env.conf

    • 默认配置文件
  • /etc/environment

    • 默认环境文件
  • $HOME/.pam_environment

    • 用户特定的环境文件

6.6.7. EXAMPLES

这些是可能在/etc/security/pam_env.conf中指定的示例行。

为任何远程主机设置 REMOTEHOST 变量,默认为“ localhost”,而不是根本没有设置

REMOTEHOST     DEFAULT=localhost OVERRIDE=@{PAM_RHOST}

如果合理,则设置 DISPLAY 变量

DISPLAY        DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}

现在一些简单的变量

PAGER          DEFAULT=less
      MANPAGER       DEFAULT=less
      LESS           DEFAULT="M q e h15 z23 b80"
      NNTPSERVER     DEFAULT=localhost
      PATH           DEFAULT=${HOME}/bin:/usr/local/bin:/bin\
      :/usr/bin:/usr/local/bin/X11:/usr/bin/X11
      XDG_DATA_HOME  @{HOME}/share/

转义变量的愚蠢示例,只是为了展示它们如何工作。

DOLLAR         DEFAULT=\$
      DOLLARDOLLAR   DEFAULT=        OVERRIDE=\$${DOLLAR}
      DOLLARPLUS     DEFAULT=\${REMOTEHOST}${REMOTEHOST}
      ATSIGN         DEFAULT=""      OVERRIDE=\@

6.6.8. AUTHOR

pam_env 由 Dave Kinchlea<[email protected]>编写。