我想在每个组/每个用户的基础上禁用或更改 SSH 登录时显示的 MOTD。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
,但我真的希望它不会变成那样。
这是受每个用户的motd 或登录横幅启发的每个用户/组 motd 的实现
先注释掉:
在和
/etc/pam.d/login
设置PrintMotd no
/etc/ssh/sshd_config
然后您可以定义每个用户/组的消息脚本并将其放入文件夹中,例如:
在这些文件夹中,您可以为每个组或用户创建可执行脚本,以在标准输出上打印当天的消息。
您可以
/etc/profile.d/perUserGroupMotd.sh
使用以下行创建:或者您可以使用 file 来启用/禁用消息,而不是运行
/path/to/script -g $gidName
or/path/to/script -u $USER
,显然有许多不同的可能实现。关于
pam_motd
,最后我发现了这两个错误:update-motd
补丁是:取消设置环境并手动设置PATH
变量。update-motd
. 在多用户系统中,多个并发访问会导致 motd 损坏。由于这些原因,我想不可能
pam_motd
用于您的目标。HUSHLOGIN_FILE
/etc/login.defs
should中的指令在登录序列期间禁止所有常见的聊天,因此即使是上次登录日期也禁止任何输出。我猜想 motd 旨在覆盖系统中的所有用户,因此
ssh
简单pam_motd
地为所有用户启用或禁用它。