Установите пользовательский или групповой MOTD в SSH
Я хотел бы отключить или изменить MOTD, отображаемый при входе в систему SSH для каждой группы / каждого пользователя. На этот вопрос в SuperUser есть ответ о том, что я могу использовать Match
блоки в sshd_config
, Тем не мение, man sshd_config
состояния:
Match
...
Only a subset of keywords may be used on the lines following a
Match keyword. Available keywords are AcceptEnv,
AllowAgentForwarding, AllowGroups, AllowTcpForwarding,
AllowUsers, AuthenticationMethods, AuthorizedKeysCommand,
AuthorizedKeysCommandUser, AuthorizedKeysFile,
AuthorizedPrincipalsFile, Banner, ChrootDirectory, DenyGroups,
DenyUsers, ForceCommand, GatewayPorts, GSSAPIAuthentication,
HostbasedAuthentication, HostbasedUsesNameFromPacketOnly,
KbdInteractiveAuthentication, KerberosAuthentication,
MaxAuthTries, MaxSessions, PasswordAuthentication,
PermitEmptyPasswords, PermitOpen, PermitRootLogin, PermitTTY,
PermitTunnel, PubkeyAuthentication, RekeyLimit,
RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset,
X11Forwarding and X11UseLocalHost.
И я не вижу ничего, что связано с MOTD в этом списке. И действительно, попытка использовать это предложение вызывает sshd
не запускаться из-за неправильной конфигурации.
Итак, я могу это сделать? Если так, то как? Из конфигурации SSH или путем изменения того, что генерирует / печатает MOTD?
Изменение файлов в /etc/update-motd.d
не полезно, так как, согласно man update-motd
:
Executable scripts in /etc/update-motd.d/* are executed by pam_motd(8)
as the root user at each login, and this information is concatenated in
/var/run/motd.
(Я проверил это с помощью скрипта, который сделал echo $USER
, Я получил root
в моем MOTD.)
Это оставляет конфигурацию PAM. Я думаю, что это может быть возможно отключить pam_motd
для каждой группы / пользователя, но я не уверен, как это сделать. Последний вариант будет отключить pam_motd
в целом, и использовать pam_exec
, но я действительно надеюсь, что это не доходит до этого.
1 ответ
Вот реализация motd для каждого пользователя / группы, вдохновленная motd или баннером входа для каждого пользователя.
Первый комментарий:
session optional pam_motd.so motd=/run/motd.dynamic
session optional pam_motd.so
в /etc/pam.d/login
и установить PrintMotd no
в /etc/ssh/sshd_config
Затем вы можете определить свой скрипт сообщения для каждого пользователя / группы и поместить его в папку, например:
sudo mkdir -p /etc/mymotd/groups
sudo mkdir -p /etc/mymotd/users
В этих папках вы можете создавать исполняемые скрипты для каждой группы или пользователей, которые выводят на стандартный вывод сообщение дня.
Вы могли бы создать /etc/profile.d/perUserGroupMotd.sh
со следующими строками:
gidName=`id -gn`
if [ -e /etc/mymotd/groups/$gidName ]; then
/etc/mymotd/groups/$gidName
else
if [ -e /etc/mymotd/users/$USER ]; then
/etc/mymotd/users/$USER
fi
fi
или вы можете использовать файл, чтобы включить / отключить сообщение и затем запустить /path/to/script -g $gidName
или же /path/to/script -u $USER
Очевидно, есть много разных возможных реализаций.
Около pam_motd
В конце я нашел эти две ошибки:
- pam_motd выполняет команды от имени пользователя root в неанизированной среде: это дыра в безопасности и
update-motd
патч есть: неустановленное окружение и устанавливается вручнуюPATH
переменная. - Многочисленные проблемы с кодом pam_motd update-motd: одна из этих многочисленных проблем связана с отсутствующей блокировкой файла, сгенерированного
update-motd
, В многопользовательской системе множественный одновременный доступ может привести к повреждению MOTD.
По этим причинам, я думаю, невозможно использовать pam_motd
для вашей цели.
HUSHLOGIN_FILE
директива в /etc/login.defs
должен запрещать все обычные разговоры во время последовательности входа в систему, поэтому любой вывод подавляется даже в последнюю дату входа в систему.
Я думаю, что MOTD предназначен для охвата всех пользователей в системе и из-за этого ssh
а также pam_motd
просто включить или отключить его для всех пользователей.