Configuration
Overview
Himmelblau is configured primarily through a single file: /etc/himmelblau/himmelblau.conf
. This file controls authentication behavior, domain bindings, environment setup, policy enforcement, and more.
This page also describes required system integration steps, including PAM and NSS configuration.
Config File: /etc/himmelblau/himmelblau.conf
To enable authentication, you must configure the domains
option in the /etc/himmelblau/himmelblau.conf
file. This setting determines which domains are permitted to authenticate to the host. You MUST only specify the primary domain from each tenant.
All other configuration options are optional.
Format
The file uses an INI-like syntax with support for [global]
and per-domain sections:
[global]
domains = example.com
[example.com]
app_id = 00000000-1111-2222-3333-444444444444
Key Options
Key | Description |
---|---|
domains |
Comma-separated list of allowed Entra ID domains |
pam_allow_groups |
Group object IDs and user UPNs allowed to authenticate |
enable_hello |
Enables Linux Hello PIN support |
Note: Leaving the pam_allow_groups
option unset in the /etc/himmelblau/himmelblau.conf
file permits all users to authenticate.
Note: On Ubuntu, you should additionally set use_etc_skel
to true
and configure home_attr
and home_alias
to match (I recommend using the CN
or SPN
attributes). These parameters are necessary, otherwise Ubuntu's snaps will fail to execute. These settings are set by default using the Himmelblau project Debian/Ubuntu packages.
[global]
home_attr = CN
home_alias = CN
use_etc_skel = true
Refer to the himmelblau.conf man page for a full list of options.
⚠️Important: To enable hardware-backed security, you must configure TPM support before authenticating or enrolling this device. It is disabled by default. Learn how to configure TPM ».
PAM Configuration
To allow users to authenticate with Azure Entra ID, Himmelblau must be integrated into your system’s PAM (Pluggable Authentication Module) stack. This directs authentication requests to the pam_himmelblau.so
module.
Preferred Configuration Methods
Use one of the following automated tools to insert Himmelblau into the appropriate PAM files.
- Ubuntu / Debian:
sudo pam-auth-update
Then check the box labeled Azure authentication.
- openSUSE / Tumbleweed:
sudo pam-config --add --himmelblau
- All systems (manual file editing):
sudo aad-tool configure-pam
This directly modifies PAM config files such as:
/etc/pam.d/common-auth
ℹ️ This tool is safe to use as a starting point, and allows fine-grained control later if needed.
Manual Configuration (Advanced)
If the above tools don’t produce the desired result or you require precise control over module ordering and behavior, you may manually edit your PAM stack.
Guidelines:
- Place
pam_himmelblau.so
afterpam_localuser.so
- If using Linux Hello or Passwordless, place Himmelblau before
pam_unix.so
to avoid password prompts - Always include
ignore_unknown_user
- Ensure
pam_deny.so
is placed last
Example: /etc/pam.d/common-auth
auth required pam_env.so
auth [default=1 ignore=ignore success=ok] pam_localuser.so
auth sufficient pam_unix.so nullok try_first_pass
auth sufficient pam_himmelblau.so ignore_unknown_user
auth required pam_deny.so
💡 For Passwordless login, move Himmelblau above
pam_unix.so
to avoid fallback password prompts.
Example: /etc/pam.d/common-account
account [default=1 ignore=ignore success=ok] pam_localuser.so
account sufficient pam_unix.so
account sufficient pam_himmelblau.so ignore_unknown_user
account required pam_deny.so
Example: /etc/pam.d/common-session
session optional pam_systemd.so
session required pam_limits.so
session optional pam_unix.so try_first_pass
session optional pam_umask.so
session optional pam_himmelblau.so
session optional pam_env.so
Example: /etc/pam.d/common-password
password sufficient pam_himmelblau.so ignore_unknown_user
password optional pam_gnome_keyring.so use_authtok
password sufficient pam_unix.so use_authtok nullok shadow try_first_pass
password required pam_deny.so
NSS Configuration
To ensure system tools can resolve Entra ID users and groups:
-
Edit
/etc/nsswitch.conf
Find the
passwd
andgroup
lines and modify them to includehimmelblau
, for example:
passwd: files himmelblau
group: files himmelblau
Using Multiple Tenants
You can support multiple Azure Entra ID tenants by listing their primary domain names in the global domains
key:
[global]
domains = example.com,contoso.com
[example.com]
home_attr = CN
[contoso.com]
app_id = 1111-2222-3333-4444
Only the primary domain need be listed in the domains
key. Other domains associated with the same tenant will be configured automatically.
Each domain block may override options like app_id
, idmap_range
, or shell
. Refer to the himmelblau.conf
man page for a full list of options.
Disabling Linux Hello PIN
Linux Hello authentication is enabled by default. To disable it:
[global]
enable_hello = false
Debug Logging
Enable debug logs for troubleshooting:
[global]
debug = true
Logs are written to:
journalctl -u himmelblaud -u himmelblaud-tasks