From 26aac1a47f52ec8bd3b0b1b8439d93769071b9f7 Mon Sep 17 00:00:00 2001 From: "Christopher J. Morrone" <morrone2@llnl.gov> Date: Thu, 27 Apr 2006 19:12:52 +0000 Subject: [PATCH] Add UsePAM slurm.conf flag --- slurm/slurm.h.in | 1 + src/common/read_config.c | 10 ++++++++++ src/common/slurm_protocol_pack.c | 2 ++ src/slurmd/common/slurmstepd_init.c | 2 ++ src/slurmd/slurmd/slurmd.c | 3 +++ src/slurmd/slurmd/slurmd.h | 1 + src/slurmd/slurmstepd/pam_ses.c | 5 +++++ src/srun/allocate.c | 3 +++ 8 files changed, 27 insertions(+) diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in index 10ebe4f652f..f33d8ee7d96 100644 --- a/slurm/slurm.h.in +++ b/slurm/slurm.h.in @@ -627,6 +627,7 @@ typedef struct slurm_ctl_conf { char *srun_epilog; /* srun epilog program */ char *node_prefix; /* prefix of nodes in partition */ uint16_t tree_width; /* number of threads per node to span */ + uint16_t use_pam; /* enable/disable PAM support */ } slurm_ctl_conf_t; typedef struct submit_response_msg { diff --git a/src/common/read_config.c b/src/common/read_config.c index cddf3b1c9e2..955d16c8602 100644 --- a/src/common/read_config.c +++ b/src/common/read_config.c @@ -174,6 +174,7 @@ s_p_options_t slurm_conf_options[] = { {"TaskPlugin", S_P_STRING}, {"TmpFS", S_P_STRING}, {"TreeWidth", S_P_UINT16}, + {"UsePAM", S_P_BOOLEAN}, {"WaitTime", S_P_UINT16}, {"NodeName", S_P_ARRAY, parse_nodename, destroy_nodename}, @@ -1023,6 +1024,7 @@ init_slurm_conf (slurm_ctl_conf_t *ctl_conf_ptr) xfree (ctl_conf_ptr->srun_epilog); xfree (ctl_conf_ptr->node_prefix); ctl_conf_ptr->tree_width = (uint16_t) NO_VAL; + ctl_conf_ptr->use_pam = 0; _free_name_hashtbl(); _init_name_hashtbl(); @@ -1192,6 +1194,8 @@ static void _normalize_debug_level(uint16_t *level) static void validate_and_set_defaults(slurm_ctl_conf_t *conf, s_p_hashtbl_t *hashtbl) { + bool truth; + if (s_p_get_string(&conf->backup_controller, "BackupController", hashtbl) && strcasecmp("localhost", conf->backup_controller) == 0) { @@ -1452,5 +1456,11 @@ validate_and_set_defaults(slurm_ctl_conf_t *conf, s_p_hashtbl_t *hashtbl) } else { conf->tree_width = DEFAULT_TREE_WIDTH; } + + if (s_p_get_boolean(&truth, "UsePAM", hashtbl) && truth) { + conf->use_pam = 1; + } else { + conf->use_pam = 0; + } } diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c index 431a343cafc..e99769181bc 100644 --- a/src/common/slurm_protocol_pack.c +++ b/src/common/slurm_protocol_pack.c @@ -1941,6 +1941,7 @@ _pack_slurm_ctl_conf_msg(slurm_ctl_conf_info_msg_t * build_ptr, Buf buffer) packstr(build_ptr->srun_epilog, buffer); packstr(build_ptr->node_prefix, buffer); pack16((uint16_t)build_ptr->tree_width, buffer); + pack16(build_ptr->use_pam, buffer); } static int @@ -2035,6 +2036,7 @@ _unpack_slurm_ctl_conf_msg(slurm_ctl_conf_info_msg_t ** safe_unpackstr_xmalloc(&build_ptr->srun_epilog, &uint16_tmp, buffer); safe_unpackstr_xmalloc(&build_ptr->node_prefix, &uint16_tmp, buffer); safe_unpack16(&build_ptr->tree_width, buffer); + safe_unpack16(&build_ptr->use_pam, buffer); return SLURM_SUCCESS; diff --git a/src/slurmd/common/slurmstepd_init.c b/src/slurmd/common/slurmstepd_init.c index ec8fe2301ef..0268d05b81c 100644 --- a/src/slurmd/common/slurmstepd_init.c +++ b/src/slurmd/common/slurmstepd_init.c @@ -37,6 +37,7 @@ extern void pack_slurmd_conf_lite(slurmd_conf_t *conf, Buf buffer) pack32(conf->debug_level, buffer); pack32(conf->daemonize, buffer); pack32((uint32_t)conf->slurm_user_id, buffer); + pack16(conf->use_pam, buffer); } extern int unpack_slurmd_conf_lite_no_alloc(slurmd_conf_t *conf, Buf buffer) @@ -54,6 +55,7 @@ extern int unpack_slurmd_conf_lite_no_alloc(slurmd_conf_t *conf, Buf buffer) conf->daemonize = uint32_tmp; safe_unpack32(&uint32_tmp, buffer); conf->slurm_user_id = (uid_t)uint32_tmp; + safe_unpack16(&conf->use_pam, buffer); return SLURM_SUCCESS; unpack_error: diff --git a/src/slurmd/slurmd/slurmd.c b/src/slurmd/slurmd/slurmd.c index 6bd27b1302e..51a6842d343 100644 --- a/src/slurmd/slurmd/slurmd.c +++ b/src/slurmd/slurmd/slurmd.c @@ -576,6 +576,8 @@ _read_config() if (cf->slurmctld_port == 0) fatal("Unable to establish controller port"); + conf->use_pam = cf->use_pam; + slurm_mutex_unlock(&conf->config_mutex); slurm_conf_unlock(); } @@ -660,6 +662,7 @@ _init_conf() conf->debug_level = LOG_LEVEL_INFO; conf->pidfile = xstrdup(DEFAULT_SLURMD_PIDFILE); conf->spooldir = xstrdup(DEFAULT_SPOOLDIR); + conf->use_pam = 0; slurm_mutex_init(&conf->config_mutex); return; diff --git a/src/slurmd/slurmd/slurmd.h b/src/slurmd/slurmd/slurmd.h index b61d9064e93..07b0e3892a0 100644 --- a/src/slurmd/slurmd/slurmd.h +++ b/src/slurmd/slurmd/slurmd.h @@ -90,6 +90,7 @@ typedef struct slurmd_config { uid_t slurm_user_id; /* UID that slurmctld runs as */ pthread_mutex_t config_mutex; /* lock for slurmd_config access */ uint16_t job_acct_freq; + uint16_t use_pam; } slurmd_conf_t; slurmd_conf_t * conf; diff --git a/src/slurmd/slurmstepd/pam_ses.c b/src/slurmd/slurmstepd/pam_ses.c index 580d180634b..a1d2c58580d 100644 --- a/src/slurmd/slurmstepd/pam_ses.c +++ b/src/slurmd/slurmstepd/pam_ses.c @@ -31,6 +31,8 @@ #include "slurm/slurm_errno.h" #include "src/slurmd/slurmstepd/pam_ses.h" +#include "src/common/log.h" +#include "src/slurmd/slurmd/slurmd.h" #ifdef conf->use_pam @@ -114,6 +116,9 @@ pam_finish () * ending the association with PAM. */ + if (!conf->use_pam) + return; + if (pam_h != NULL) { /* * Log any errors, but there's no need to return a SLURM error. diff --git a/src/srun/allocate.c b/src/srun/allocate.c index 6400c4406dc..273e439d03e 100644 --- a/src/srun/allocate.c +++ b/src/srun/allocate.c @@ -486,6 +486,9 @@ job_desc_msg_create_from_opts (char *script) */ xassert (opt.batch); + if (opt.overcommit) + putenv("SLURM_OVERCOMMIT=1"); + j->environment = environ; j->env_size = envcount (environ); j->script = script; -- GitLab