web-dev-qa-db-ja.com

SSHでユーザー固有またはグループ固有のMOTDを設定する

グループごと/ユーザーごとにSSHログインで表示されるMOTDを無効にするか、変更したいと思います。 SuperUserのこの質問 には、sshd_configMatchブロックを使用できるという回答があります。ただし、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を実行するスクリプトでこれをテストしました。MOTDでrootを取得しました。)

これでPAM設定が残ります。グループ/ユーザーごとにpam_motdを無効にできる可能性があると思いますが、その方法はわかりません。最後のオプションは、pam_motdを完全に無効にし、pam_execを使用することですが、それが実現しないことを願っています。

3
muru

ユーザーごとのmotdまたはログインバナー に触発されたユーザー/グループごとのmotdの実装を次に示します。

最初のコメントアウト:

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

/etc/pam.d/loginPrintMotd 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について、最後に次の2つのバグを見つけました。

これらの理由により、pam_motdを目的に使用することは不可能だと思います。

HUSHLOGIN_FILE/etc/login.defsディレクティブはログインシーケンス中に通常のチャタリングをすべて禁止するであるため、最終ログイン日でも出力は抑制されます。

Motdはシステム内のすべてのユーザーに到達するように設計されているため、すべてのユーザーに対してsshおよびpam_motd単純に有効または無効にできると思います。

3
Lety