Установите пользовательский или групповой 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 для вашей цели.

HUSHLOGIN_FILE директива в /etc/login.defs должен запрещать все обычные разговоры во время последовательности входа в систему, поэтому любой вывод подавляется даже в последнюю дату входа в систему.

Я думаю, что MOTD предназначен для охвата всех пользователей в системе и из-за этого ssh а также pam_motd просто включить или отключить его для всех пользователей.

Другие вопросы по тегам