Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198733
  • 博文数量: 29
  • 博客积分: 1280
  • 博客等级: 中尉
  • 技术积分: 320
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-22 16:23
文章分类

全部博文(29)

文章存档

2009年(3)

2008年(1)

2007年(1)

2006年(3)

2005年(21)

我的朋友

分类: BSD

2005-10-17 14:18:20

TELNET的远程登录中,对root用户是不允许的.要打开此开关.必须查看telnetd源代码.
在telnetd的源代码中,远程登录是直接调用login.所以必须对login.c源程序进行更改.
不过后来才知道,在etc下有可以设置的.汗啊!到是真不会玩BSD系统

TELNET的远程登录中,对root用户是不允许的.要打开此开关.必须查看telnetd源代码.
在telnetd的源代码中,远程登录是直接调用login.所以必须对login.c源程序进行更改.
在函数main中取得用户名到变量username中.
if (strncmp(instance + 1, "root", 4) == 0)
rootlogin = 1;
比较用户名是否为root
如果为root,rootlogin=1
随后进行登录安全检查.
if (pwd && rootlogin && !rootterm(tty))
goto failed;
如果pwd(即口令)为真(有口令且口令正确),并且是用root用户登录.而且函数rootterm(tty)
返回为0时.转到登录失败.
即我们再此要使rootterm(tty)返回为真.才能使我们远程登录成功.
当然可以简单的去掉rootterm(tty)函数.就可以达到该目的.但我们也可以去深究此问题
下去.
先来看看rootterm(tty)函数原形.
return ((t = getttynam(ttyn)) && t->ty_status & TTY_SECURE);
其实就是返回是否该tty是否远程安全.第一取得该ttyn的环境放到结构ttyent即t中.如果
为真并且该ttyn的安全属性中有安全终端属性,即为本地登录时,返回真.
我们如果远程登录的话.t->ty_status的属性中肯定没有包含TTY_SECURE.
getttynam函数位于文件libc/gen/getttyent.c中.

阅读(2196) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~