MUNGE(7)
πΈ MUNGE(7) β the MUNGE Uid 'N' Gid Emporium β¨
okay bestie, sit down, hydrate, because we're talking about MUNGE π
π NAME π
munge β literally the MUNGE overview, the whole vibe in one page, iykyk π¦
β¨ INTRODUCTION β¨
So. MUNGE β full government name MUNGE Uid 'N' Gid Emporium π β is an authentication service for creating and validating user credentials. She was designed to be highly scalable for use in an HPC cluster environment, no cap.
She hands you a portable API for encoding the user's identity into a tamper-proof credential that can be obtained by an untrusted client and forwarded by untrusted intermediaries within a security realm. And the best part?? Clients within this realm can create and validate credentials without the use of root privileges, reserved ports, or platform-specific methods. no root, no problem π
π¦ RATIONALE π¦
The need for MUNGE arose out of the HPC cluster environment. Picture it: a local daemon running on a login node receives a client request and forwards it on to remote daemons running on compute nodes within the cluster. Since the user has already logged on to the login node, the local daemon just needs a reliable means of ascertaining the UID and GID of the client process. Also? The remote daemons need a mechanism to ensure the forwarded authentication data has not been subsequently altered. the way that's a whole two-problem situation π
The common solution to this is to use Unix domain sockets to determine the identity of the local client, and then forward this information on to remote hosts via trusted rsh connections. But bestie, that presents several new problems:
- There is no portable API for determining the identity of a client over a Unix domain socket. π
rshconnections must originate from a reserved port; the limited number of reserved ports available on a given host directly limits scalability. π- Root privileges are required in order to bind to a reserved port. π
- Finally, the remote daemons have no means of determining whether the client identity is authentic. π
MUNGE solves all of these problems. periodt. π
π USAGE π
A process creates a credential by requesting one from the local MUNGE service β either via the munge_encode() C library call, or the munge executable. The encoded credential contains the UID and GID of the originating process.
This process sends the credential to another process within the security realm as a means of proving its identity. π«Ά
The receiving process validates the credential with the use of its local MUNGE service β either via the munge_decode() C library call, or the unmunge executable. The decoded credential provides the receiving process with a reliable means of ascertaining the UID and GID of the originating process. That info can then be used for accounting or access control decisions. it's giving trust-but-verify β¨
π DETAILS π
The contents of the credential β including any optional payload data β are encrypted with a key shared by all munged daemons within the security realm. π
The integrity of the credential is ensured by a message authentication code (MAC).
The credential is valid for a limited time defined by its time-to-live (TTL); this presumes clocks within a security realm are in sync. β° (yes, clock skew is the enemy, stay synced bestie)
Unexpired credentials are tracked by the local munged daemon in order to prevent replay attacks on a given host. π
Decoding of a credential can be restricted to a particular user and/or group ID.
The payload data can be used for purposes such as embedding the destination's address to ensure the credential is only valid on a specific host. π―
The internal format of the credential is encoded in a platform-independent manner. And the credential itself is base64 encoded to allow it to be transmitted over virtually any transport. slay π
π AUTHOR π
Chris Dunlap <cdunlap@llnl.gov> β iconic, we thank him for his service π«Ά
π COPYRIGHT π
Copyright (C) 2007-2025 Lawrence Livermore National Security, LLC. Copyright (C) 2002-2007 The Regents of the University of California.
MUNGE is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Additionally for the MUNGE library (libmunge), you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
fr fr read the licenses, they're literally the whole point π
π₯ SEE ALSO π₯
go read the source bestie, it's right there π¦
and that's the whole page!! this was munge-0.5.18, dated 2026-02-10 β go forth and munge responsibly, bestie ππβ¨
π¦ where this page comes from
- arch rolling: munge 0.5.18-2 Β· GPL-3.0-or-later AND LGPL-3.0-or-later
- fedora 43: munge 0.5.18-1.fc43 Β· GPL-3.0-or-later AND LGPL-3.0-or-later
- fedora 44: munge 0.5.18-1.fc44 Β· GPL-3.0-or-later AND LGPL-3.0-or-later
- nixpkgs unstable: munge 0.5.18
- Copyright (C) 2007-2025 Lawrence Livermore National Security, LLC
- Copyright (C) 2002-2007 The Regents of the University of California
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms