Table of Contents generated with DocToc
By default, console-login-helper-messages
provides several units and scripts
for displaying helpful messages before or upon login. Currently, the following
messages are displayed:
- issuegen:
- SSH keys (before login)
- Network interface information (before login)
- motdgen:
- OS release information (at login)
- profile:
- Failed systemd units (at login)
The following default units and scripts are in charge of generating the information that needs to be displayed in a MOTD or issue, and displaying the sourced information upon and before login:
console-login-helper-messages-gensnippet-ssh-keys.service
(SSH keys)etc/NetworkManager/dispatcher.d/90-console-login-helper-messages-gensnippet-if
(Network interface info)console-login-helper-messages-gensnippet-os-release.service
(OS release info)share/profile.sh
(Failed systemd units)
To test out the latest RPMs in Fedora, run:
dnf install \
console-login-helper-messages-issuegen \
console-login-helper-messages-motdgen \
console-login-helper-messages-profile
In Fedora, the console-login-helper-messages package is grouped via subpackages in the following way:
package | function |
---|---|
console-login-helper-messages | base directory layout for this package (required by all subpackages) |
console-login-helper-messages-issuegen | messages shown before login via serial console using issue (SSH keys, IP address for SSH) |
console-login-helper-messages-motdgen | messages shown using the motd paths at login (OS release information) |
console-login-helper-messages-profile | messages shown using /etc/profile.d script, shown on login to bash terminal (failed systemd units) |
The install
target of the Makefile is the source of truth
on where files should be placed.
The following must be met to ship console-login-helper-messages
by
default as part of a distribution. These instructions apply to Fedora
only as packages are only available in Fedora, currently.
First, list the names of the subpackages to include in the manifest
of base packages for the distribution (this may vary depending on the
build system). Each individual subpackage being included must be
requested, e.g. to install all of issuegen
, motdgen
, and
profile
, list the following:
- console-login-helper-messages-issuegen
- console-login-helper-messages-motdgen
- console-login-helper-messages-profile
Second, add a systemd preset to enable units for specific pieces of information (see all available units). E.g.:
# /usr/lib/systemd/system-preset/40-console-login-helper-messages.preset
enable console-login-helper-messages-gensnippet-os-release.service
enable console-login-helper-messages-gensnippet-ssh-keys.service
The following conditions must be met for displaying the issue and motd files sourced by console-login-helper-messages:
package | version | reason |
---|---|---|
util-linux |
>= 2.36 | agetty and login programs need to be able to read from issue.d and motd.d directories |
pam |
>= 1.3.1-15 | pam_motd PAM module needs to be able to read from motd.d directory |
selinux-policy |
>= 3.14.3-23 | allow /run/motd.d location to be usable |
To enable displaying issue snippets before login (via the console),
let /etc/issue.d
be one of the directories that
agetty
reads from. agetty
reads from /etc/issue.d
if /etc/issue
exists. Thus, in
order for issue files generated by console-login-helper-messages
to be
displayed properly, please ensure that /etc/issue
exists.
Note: As of systemd-246.6
, it is virtually impossible to remove /etc/issue
on systemd distros. https://github.com/systemd/systemd/commit/062666c7c452711f3e38efdec0c2b952ced64d06
To enable displaying MOTD snippets after login via the console, in
/etc/login.defs
, make sure that /run/motd.d
is one of the directories that
login
reads from. The default value is
"/usr/share/misc/motd:/run/motd:/etc/motd"
.
Example:
MOTD_FILE=/run/motd.d
To enable displaying MOTD snippets after login via ssh, in /etc/pam.d/login
,
make sure that /run/motd.d
is one of the directories that
pam_motd
reads from. The default is /etc/motd.d:/run/motd.d:/usr/lib/motd.d
, so no further
configuration is necessary if defaults have not been changed.
Example:
session optional pam_motd.so motd_dir=/run/motd.d
Generation of individual information snippets, such as OS release information and SSH keys, can be enabled individually as follows:
# read by motdgen
systemctl enable console-login-helper-messages-gensnippet-os-release.service
# read by issuegen
systemctl enable console-login-helper-messages-gensnippet-ssh-keys.service
Network interface information is shown via a
NetworkManager Dispatcher script,
and will display in issue
by default.
On systems where NetworkManager is unavailable, udev rules could be used to detect new interfaces being added/removed. Udev rules are disabled by default and do not support complex networking devices or network interfaces with custom names.
The profile
messages are enabled by default by a symlink from
/etc/profile.d
at install.
Appending messages via console-login-helper-messages is no longer supported. However, provided that the configurations described in Integrating into a distribution are configured and the right versions of upstream tools are installed, then:
- To have a message appended to the MOTD, the files to append can be dropped
in
/etc/motd.d/
. - To have a message appended to the issue, the files to append can be dropped
in
/etc/issue.d/
.
The default OS release information and SSH keys may be individually disabled from showing in the motd/issue individually:
# disable OS release information from motd
systemctl disable console-login-helper-messages-gensnippet-os-release.service
# disable SSH keys from issue
systemctl disable console-login-helper-messages-gensnippet-ssh-keys.service
The profile
messages (failed systemd units) can be disabled only by uninstalling
console-login-helper-messages-profile
.
The network interface information can only be disabled by uninstalling
console-login-helper-messages-issuegen
.
If a message is not showing, it could be because a symlink required to show the message was deleted. To recreate the symlinks, the following command can be used:
systemd-tmpfiles --create
Otherwise, please open an issue describing the problem.