零零社区|百姓的网上家园-互动交流平台!(0.0)=^_^=(00社区)

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz

打 last 显示 IP 而不是 hostname,Why ?

2013-4-8 13:45| 发布者: 123456000000| 查看: 30| 评论: 0

摘要: 从FreeBSD-2.2/3.0起,如果登入的FQDN长度16个字元(UT_HOSTSIZE) 则系统会以ip纪录,因此你打last就会看到一堆IP而不是"不完整"的 hostname,有些系统如bbs也会受影响。当然,这个feature有些人不喜欢 ,毕竟人还 ...
从 FreeBSD-2.2/3.0 起,如果登入的 FQDN 长度 > 16 个字元 (UT_HOSTSIZE)
则系统会以 ip 纪录,因此你打 last 就会看到一堆 IP 而不是"不完整"的
hostname,有些系统如 bbs 也会受影响。当然,这个 feature 有些人不喜欢
,毕竟人还是看 FQDN 比较习惯,因此你可以自己拿掉这个 feature。

1. 修改 telnetd 的程式码
   telnetd 的程式码放在 /usr/src/libexec/telnetd/ 或是 ftp://freebsd
   .csie.nctu.edu.tw/pub/FreeBSD-current/src/libexec/telnetd/,
   取回来後,你可以先修改 8bit 的支援,再来拿掉判断 UT_HOSTSIZE
   的地方。修改 telnetd.c 把以下这段 (搜寻 hp->h_name)

>>      } else if (hp &&
>>          (strlen(hp->h_name) <= ((utmp_len < 0) ? -utmp_len : utmp_len))) {
                host = hp->h_name;
        } else {
                host = inet_ntoa(who->sin_addr);
        }

   改成

>>      } else if (hp) {
                host = hp->h_name;
        } else {
                host = inet_ntoa(who->sin_addr);
        }

2. 修改 login 的程式码
   login 的程式码放在 /usr/src/usr.bin/login/ 或是 ftp://freebsd
   .csie.nctu.edu.tw/pub/FreeBSD-current/src/usr.bin/login/,
   取回来後,修改 login.c 把以下这段 (搜寻 UT_HOSTSIZE) 完全删除。

>>                      if (strlen(optarg) > UT_HOSTSIZE) {
>>                              struct hostent *hp = gethostbyname(optarg);
>>
>>                              if (hp != NULL) {
>>                                      struct in_addr in;
>>
>>                                      memmove(&in, hp->h_addr, sizeof(in));
>>                                      optarg = strdup(inet_ntoa(in));
>>                              } else
>>                                      optarg = "invalid hostname";
>>                      }

3. 其他的程式
   还有其他的程式会做写入 utmp 或 wtmp 的动作,你必须自行修改,
   你可以从 logwtmp(), UT_HOSTSIZE, hp->h_name, utmp, wtmp 等等
   关键字来搜寻修改。


路过

雷人

握手

鲜花

鸡蛋

相关阅读

发表评论

最新评论

相关分类


Archiver|手机版|小黑屋|00社区

GMT+8, 2023-1-31 10:49 , Processed in 0.043112 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部