blob: 07d84b8692bd32ceb2336dd11140f9a9a3e02065 [file] [log] [blame]
Module Name:
pam_slurm
Authors:
Chris Dunlap <cdunlap@llnl.gov>
Jim Garlick <garlick@llnl.gov>
Moe Jette <jette1@llnl.gov>
Management Groups Provided:
account
System Dependencies:
libslurm.so
Overview:
Restricts access to compute nodes in a cluster using Slurm.
Recognized Arguments:
debug; no_sys_info; no_warn; rsh_kludge; rlogin_kludge
Description:
This module restricts access to compute nodes in a cluster where the
Slurm workload manager is in use. Access is granted to root, any user
with an Slurm-launched job currently running on the node, or any user
who has allocated resources on the node according to the Slurm database.
The behavior of this module can be modified with the following flags:
debug - log debugging information to the system log file
no_sys_info - suppress system logging of "access granted for user ...",
access denied and other errors will still be logged
no_warn - suppress warning messages to the application
rsh_kludge - prevent truncation of first char from rsh error msg
rlogin_kludge - prevent "staircase-effect" following rlogin error msg
Notes:
This module will not work on systems where the hostname returned by the
gethostname() differs from the Slurm node name.
rsh_kludge - The rsh service under RH71 (rsh-0.17-2.5) truncates the first
character of this message. The rsh client sends 3 NUL-terminated ASCII
strings: client-user-name, server-user-name, and command string. The
server then validates the user. If the user is valid, it responds with a
1-byte zero; otherwise, it responds with a 1-byte one followed by an ASCII
error message and a newline. RH's server is using the default PAM
conversation function which doesn't prepend the message with a
single-byte error code. As a result, the client receives a string,
interprets the first byte as a non-zero status, and treats the
remaining string as an error message. The rsh_kludge prepends a
newline which will be interpreted by the rsh client as an error status.
rlogin_kludge - The rlogin service under RH71 (rsh-0.17-2.5) does not perform
a carriage-return after the PAM error message is displayed which results
in the "staircase-effect" of the next message. The rlogin_kludge appends
a carriage-return to prevent this.
Examples / Suggested Usage:
Use of this module is recommended on any compute node where you want to
limit access to just those users who are currently scheduled to run jobs.
For /etc/pam.d/ style configurations where modules live in /lib/security/,
add the following line to the PAM configuration file for the appropriate
service(s) (eg, /etc/pam.d/system-auth):
account required /lib/security/pam_slurm.so
If you always want to allow access for an administrative group (eg, wheel),
stack the pam_access module ahead of pam_slurm:
account sufficient /lib/security/pam_access.so
account required /lib/security/pam_slurm.so
Then edit the pam_access configuration file (/etc/security/access.conf):
+:wheel:ALL
-:ALL:ALL
When access is denied because the user does not have an active job running
on the node, an error message is returned to the application:
Access denied: user foo (uid=1313) has no active jobs.
This message can be suppressed by specifying the "no_warn" argument in the
PAM configuration file.