Applications/Munge

From HPC
Jump to: navigation , search

Application Details

  • Description: It is an authentication service for creating and validating credentials. It is designed to be highly scalable for use in an HPC cluster environment like Viper.
  • Version: 0.5.11
  • Module: munge/0.5.11
  • Licence: GNU

Usage Examples

This module provides the binary for munge and its library component to allow for compilation with external programs.

It allows a process to authenticate the UID and GID of another local or remote process within a group of hosts having common users and groups. These hosts form a security realm that is defined by a shared cryptographic key. Clients within this security realm can create and validate credentials without the use of root privileges, reserved ports, or platform-specific methods.

Module

[username@login01 ~]$ module add munge/0.5.11

Compilation

A C code snippet requiring is shown below:


#define MUNGE_H

#include <sys/types.h>




/*****************************************************************************
 *  Data Types
 *****************************************************************************/

/*  MUNGE context opaque data type
 */
typedef struct munge_ctx * munge_ctx_t;

/*  MUNGE context options
 */
typedef enum munge_opt {
    MUNGE_OPT_CIPHER_TYPE       =  0,   /* symmetric cipher type (int)       */
    MUNGE_OPT_MAC_TYPE          =  1,   /* message auth code type (int)      */
    MUNGE_OPT_ZIP_TYPE          =  2,   /* compression type (int)            */
    MUNGE_OPT_REALM             =  3,   /* security realm (str)              */
    MUNGE_OPT_TTL               =  4,   /* time-to-live (int)                */
    MUNGE_OPT_ADDR4             =  5,   /* src IPv4 addr (struct in_addr)    */
    MUNGE_OPT_ENCODE_TIME       =  6,   /* time when cred encoded (time_t)   */
    MUNGE_OPT_DECODE_TIME       =  7,   /* time when cred decoded (time_t)   */
    MUNGE_OPT_SOCKET            =  8,   /* socket for comm w/ daemon (str)   */
    MUNGE_OPT_UID_RESTRICTION   =  9,   /* UID able to decode cred (uid_t)   */
    MUNGE_OPT_GID_RESTRICTION   = 10    /* GID able to decode cred (gid_t)   */
} munge_opt_t;

...

Compilation is carried out below, in this example the gcc compiler is used. However, the applies similarly to the Intel compiler too.

Applications written in C/C++ can use the interface provided by <munge.h> and link against libmunge.

Scripts can invoke the munge and unmunge executables -- specify -h or --help for usage information, or Read The Fine Manpages.


gcc -o makeMUNGE makeMUNGE.c -llibmunge


Further Information

https://dun.github.io/munge/

Icon home.png