---
name: "pam_env"
section: "8"
platform: "linux"
package: "pam"
version: "1.7.3-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/pam_env"
---

# pam\_env(8)

PAM module to set/unset environment variables

## NAME

pam\_env - PAM module to set/unset environment variables

## SYNOPSIS

**pam\_env.so** \[debug\] \[conffile=*conf-file*\] \[envfile=*env-file*\] \[readenv=*0\|1*\] \[user\_envfile=*env-file*\] \[user\_readenv=*0\|1*\]

## DESCRIPTION

The pam\_env PAM module allows the (un)setting of environment variables. Supported is the use of previously set environment variables as well as *PAM\_ITEM*s such as *PAM\_RHOST*.

By default rules for (un)setting of variables are taken from the config file /etc/security/pam\_env.conf. An alternate file can be specified with the *conffile* option.

Second a file (/etc/environment by default) with simple *KEY=VAL* pairs on separate lines will be read. With the *envfile* option an alternate file can be specified. And with the *readenv* option this can be completely disabled.

Third it will read a user configuration file ($HOME/.pam\_environment by default). The default file can be changed with the *user\_envfile* option and it can be turned on and off with the *user\_readenv* option.

Since setting of PAM environment variables can have side effects to other modules, this module should be the last one on the stack.

This module is only executed if the main application calls [**pam\_setcred**(3)](/pam_setcred/3.md) or [**pam\_open\_session**(3)](/pam_open_session/3.md). The module does nothing and returns *PAM\_IGNORE* if called by [**pam\_authenticate**(3)](/pam_authenticate/3.md).

## OPTIONS

conffile=/path/to/pam\_env.conf

Indicate an alternative pam\_env.conf style configuration file to override the default. This can be useful when different services need different environments.

debug

A lot of debug information is printed with [**syslog**(3)](/syslog/3.md).

envfile=/path/to/environment

Indicate an alternative environment file to override the default. The syntax are simple *KEY=VAL* pairs on separate lines. The *export* instruction can be specified for bash compatibility, but will be ignored. This can be useful when different services need different environments.

readenv=0\|1

Turns on or off the reading of the file specified by envfile (0 is off, 1 is on). By default this option is on.

user\_envfile=filename

Indicate an alternative .pam\_environment file to override the default. The syntax is the same as for */etc/security/pam\_env.conf*. The filename is relative to the user home directory. This can be useful when different services need different environments.

user\_readenv=0\|1

Turns on or off the reading of the user specific environment file. 0 is off, 1 is on. By default this option is off as user supplied environment variables in the PAM environment could affect behavior of subsequent modules in the stack without the consent of the system administrator.

Due to problematic security this functionality is deprecated since the 1.5.0 version and will be removed completely at some point in the future.

## MODULE TYPES PROVIDED

The **auth** and **session** module types are provided.

## RETURN VALUES

PAM\_ABORT

Not all relevant data or options could be gotten.

PAM\_BUF\_ERR

Memory buffer error.

PAM\_IGNORE

No pam\_env.conf and environment file was found or the module got called by [**pam\_authenticate**(3)](/pam_authenticate/3.md).

PAM\_SUCCESS

Environment variables were set.

## FILES

/etc/security/pam\_env.conf

Default configuration file

/etc/environment

Default environment file

$HOME/.pam\_environment

User specific environment file

## SEE ALSO

[**pam\_env.conf**(5)](/pam_env.conf/5.md), [**pam.d**(5)](/pam.d/5.md), [**pam**(8)](/pam/8.md), [**environ**(7)](/environ/7.md).

## AUTHOR

pam\_env was written by Dave Kinchlea \<kinch@kinch.ark.com\>.
