我想编辑Last login:
与当天的消息一起打印出的信息,但是找不到生成和回显的脚本。
是在易于编辑的Shell脚本中定义它的位置,还是在二进制文件中将其封闭?
注意,这不同于ServerFault:ssh启动时如何编辑欢迎消息?。“上次登录”信息不是从内部打印出来的/etc/update-motd.d/
,而是由设置PrintLastLog
标志定义的,因此不能像当天消息的其他部分一样进行编辑。
我想编辑Last login:
与当天的消息一起打印出的信息,但是找不到生成和回显的脚本。
是在易于编辑的Shell脚本中定义它的位置,还是在二进制文件中将其封闭?
注意,这不同于ServerFault:ssh启动时如何编辑欢迎消息?。“上次登录”信息不是从内部打印出来的/etc/update-motd.d/
,而是由设置PrintLastLog
标志定义的,因此不能像当天消息的其他部分一样进行编辑。
Answers:
看起来印刷行的格式被编译为sshd
:
[me@risby ~]$ ssh lory
Last login: Fri May 23 10:59:01 2014 from 2a01:2c0:e:300:7271:bcff:feac:445a
[me@lory ~]$ strings /usr/sbin/sshd | grep -i "last login"
Last login: %s
Last login: %s from %s
我也看不到任何用于更改它的配置选项,因此您将需要编辑源代码并重新编译。
编辑:在有限的情况下,您可以在http://www.openssh.org中找到源。但是您不会告诉我们您正在使用OpenSSH或任何有关您平台的内容,因此很难具体说明。如果是Linux系统,则最好以通常的方式获取适合您发行版的源,并通过特定于发行版的机制进行重新编译。
不过说真的,你不应该这样做,在所有你正在做一个维护:除非你有一个非常,令人信服的商业理由这样做恶梦自己,去一个安全敏感包的手工编译的版本。
sshd
找到背后的源代码?
wtmp
,将PrintLastLog
标志设置为no
,并使用放置在我自己的脚本中来重新创建“最后一次登录”通知update-motd.d
。更易于维护。:)
motd
输出不完全是最新的。因此,我认为update-motd
可能不会在每次登录时都运行。
最后的登录信息存储在其中,/var/log/wtmp
或者/var/log/utmp
它们是二进制文件。如果不查看sshd的源代码,我不能完全确定,但是我希望它可以使用适当的系统调用从那些文件中检索信息。
看来您不可能找到一种方法来轻松更改此信息,这毕竟是用户安全的一部分。
如果您确实想要详细信息,则需要查看该函数的源代码,该源代码login_get_lastlog
可以在loginrec.c
utmp
和wtmp
文件(根据分布,检查/var/run/utmp
或/var/log/utmp
或看/var
目录)。这些文件不是保存为文本,而是二进制文件,因此您将需要特殊的工具来编辑它们。utmp文件跟踪每个用户的当前登录状态。wtmp文件记录所有登录和注销历史记录。您将需要特殊的工具来对其进行编辑,但是我真的找不到任何东西。