web-dev-qa-db-fra.com

Définir le MOTD spécifique à l'utilisateur ou au groupe dans SSH

Je souhaite désactiver ou modifier le MOTD affiché sur la connexion SSH, groupe par utilisateur. Cette question sur SuperUser a une réponse indiquant que je peux utiliser des blocs Match dans _sshd_config_. Cependant, _man sshd_config_ indique:

_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.
_

Et je ne vois rien de ce qui est lié à MOTD dans cette liste. Et en effet, si vous essayez d'utiliser cette suggestion, sshd ne démarrera pas en raison d'une configuration incorrecte.

Alors, je peux faire ça? Si c'est le cas, comment? Depuis la configuration SSH ou en modifiant ce qui génère/imprime le MOTD?


Modifier des fichiers dans _/etc/update-motd.d_ n'est pas utile, car, selon 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. 
_

(J'ai testé cela avec un script qui faisait _echo $USER_. J'ai un root dans mon MOTD.)

Cela laisse la configuration de PAM. J'imagine qu'il pourrait être possible de désactiver _pam_motd_ groupe par utilisateur/utilisateur, mais je ne sais pas comment faire. La dernière option consisterait à désactiver _pam_motd_ au total et à utiliser _pam_exec_, mais j'espère vraiment que cela n'arrivera pas.

3
muru

Voici une implémentation par utilisateur/groupe motd inspirée par bannière de motd ou de connexion par utilisateur

Premier commentaire sur:

session    optional   pam_motd.so  motd=/run/motd.dynamic
session    optional   pam_motd.so

dans /etc/pam.d/login et définissez PrintMotd no dans /etc/ssh/sshd_config

Vous pouvez ensuite définir votre script de message par utilisateur/groupe et le placer dans un dossier, par exemple:

Sudo mkdir -p /etc/mymotd/groups
Sudo mkdir -p /etc/mymotd/users

Dans ces dossiers, vous pouvez créer des scripts exécutables pour chaque groupe ou utilisateur, qui impriment sur une sortie standard le message du jour.

Vous pouvez créer /etc/profile.d/perUserGroupMotd.sh avec les lignes suivantes:

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

ou vous pouvez utiliser fichier pour activer/désactiver le message et ensuite exécuter /path/to/script -g $gidName ou /path/to/script -u $USER, il existe évidemment de nombreuses implémentations possibles.

À propos de pam_motd, à la fin j'ai trouvé ces deux bogues:

Pour ces raisons, j’imagine qu’il est impossible d’utiliser pam_motd pour votre objectif.

La directive HUSHLOGIN_FILE dans /etc/login.defs devrait inhiber toutes les discussions habituelles pendant la séquence de connexion , ainsi toute sortie est supprimée, même la dernière date de connexion .

Je suppose que motd est conçu pour atteindre tous les utilisateurs du système et pour cette raison ssh et pam_motd l'activer ou le désactiver pour tous les utilisateurs.

3
Lety