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. 提供的模块类型
提供了auth
和session
模块类型。
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]>编写。