Environment Modules uses modulefiles (Tcl) that can change user environments and execution paths. Security depends on controlling modulefile authorship and module path policy.
- Keep modulefile directories owned by root/admin group only.
- Require review and change tracking for modulefile updates.
- Separate trusted core modules from user-contributed trees.
- Remove obsolete modulefiles that reference removed software.
¶ 2) Prevent path and command hijacking
- Disallow modulefiles that prepend unsafe writable directories.
- Define global defaults carefully to avoid loading risky modules automatically.
- Use module naming conventions to prevent ambiguity.
- Audit shell initialization scripts that load modules.
- Validate modulefiles produced by EasyBuild/Spack pipelines.
- Keep Tcl and modules package patched.
- Test module unload/load behavior for side effects.
- Restrict cluster login node write access to module roots.
¶ Verification commands
modulecmd --version 2>/dev/null || module --version
find /etc/modulefiles /usr/share/modules/modulefiles -type f -ls 2>/dev/null | head
grep -R "prepend-path\|setenv" /etc/modulefiles /usr/share/modules/modulefiles 2>/dev/null | head
- Environment Modules docs: https://modules.readthedocs.io/
- Environment Modules source: https://github.com/envmodules/modules
- Security advisories: https://github.com/envmodules/modules/security