热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

当前位置 :| 主页>Linux教程>Linux入门>

如何自动登录linux

来源: 作者: 时间:2007-10-24 Tag: 点击:
在"如何自动登录linux"中,以redhat 7.2操作系统平台为背景,阐述了如何实现自动登录X window(系统启动级别为5),并自动运行指定的应用程序。本文以redhat 8.0操作系统平台为背景,阐述如何实现启动级别为3时的自动登录,及自动运行相应程序,并简要介绍了如何在redhat 8.0下自动登录X window(系统启动级别为5),并自动运行指定的应用程序。

  一、启动级别为3时自动登录的实现

  启动级别为3时自动登录的实现涉及两个软件包:mingetty-1.00-3.src.rpm软件包及util-linux-2.11r-10.src.rpm软件包。

  (1)mingetty-1.00-3.src.rpm软件包

  对于启动级别为3的自动登录的实现,仍然需要考察/etc/inittab脚本,

  3:123:respawn:/sbin/mingetty tty3

  因此,如果想在启动级别3的情况下实现自动登录,必须要了解mingetty的功能,甚至要修改mingetty的代码。用命令rpm -qf /sbin/mingetty 可知redhat 8.0版本的mingetty包含在mingetty-1.00-3.src.rpm软件包中,下载该软件包,安装源代码,缺省情况下,代码会安装在 /usr/src/redhat/下,我们关心的只是mingetty.c源文件。mingetty.c约有五百行代码,主要实现如下功能:

  打开指定的tty(由参数指定);

  提示用户登录(login:);

  获得登录用户名;

  把用户登录名作为参数,调用/bin/login。

  我们所关心的部分实质上只有以下三行:

  ... ...

  438 while ((logname = get_logname ()) == 0); //mingetty.c文件438行

  439 execl (_PATH_LOGIN, _PATH_LOGIN, "--", logname, NULL);

  440 error ("%s: can't exec " _PATH_LOGIN ": %s", tty, sys_errlist[errno]);

  ... ...

  第一行的功能是输出login提示,并获得用户输入的登录用户名,登录用户名由logname返回。因此,可作如下修改

  ... ...

  438 // while ((logname = get_logname ()) == 0); //注释掉本行,不再提示login:

  439 logname = "root"; //添加本行代码

  440 execl (_PATH_LOGIN, _PATH_LOGIN, "--", logname, NULL);

  441 error ("%s: can't exec " _PATH_LOGIN ": %s", tty, sys_errlist[errno]);

  ... ...

  注意,这里假定用户以超级用户身份登录。

  第二行以用户登录名为参数,调用/bin/login程序,进一步实现登录。因此,要想实现自动登录,还应该了解/bin/login的功能,必要时还应修改其源代码。

  第三行为出错处理。
最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册