如何实现Linux操作系统的自动登录

馃垰锔忓叆鍣

馃垰锔忓叆鍣

2016-01-29 19:55

如何实现Linux操作系统的自动登录,如何实现Linux操作系统的自动登录
  开机自动登录Linux,并自动运行XWindow应用程序,有其特殊的应用背景,如基于Linux平台的监控系统,Linux启动后不需要身份验证,而直接运行监控程序等等。本文以Redhat7.2为平台,结合Linux启动过程,介绍了如何避免身份验证自动登录,并直接进入X Window自动运行应用程序。

  一、Linux启动的最后阶段的工作

  Linux在启动过程的最后阶段(具体启动步骤略),init会根据/etc/inittab文件的最后一行x:5:respawn:/etc/X11/prefdm-nodaemon运行/etc/X11/prefdm脚本,(Redhat7.2缺省时是这样的)。prefdm脚本的主要任务是完成X Window的启动,可以有几种启动X Window的方法,都包含在prefdm脚本中,几种主要方法有:

  运行xdm启动X Window;
  运行gdm,进入gnome桌面环境;
  运行kdm进入kde桌面环境;
  自动登录进入Linux;

  prefdm脚本框架大致如下:

  #!/bin/sh
  PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
  . /etc/profile.d/lang.sh
  # 第一步:查看是否为自动登录
  if [ -f /etc/sysconfig/autologin -a -x /usr/sbin/autologin ]; then
  if /usr/sbin/autologin; then  
    exit 0
  fi
  fi

  # 第二步:如果不是自动登录方式,就会在/etc/sysconfig/desktop中搜寻用户偏爱的登录方式
  ......
  # 可以是kdm、gdm以及xdm,并运行相应的kdm、gdm以及xdm。

  二、自动登录的实现(autologin的实现)

  在/etc/X11/prefdm脚本中,是否实现自动登录有一个条件测试开关,事实上,可以在这里注释掉测试开关,直接执行启动X Window的操作。

  自动登录实质上就是绕过身份验证,直接启动X Window。X Window的启动可以由xinit来完成。

  Xinit用来启动X Window系统服务器以及系统上的第一个客户程序,可以通过为xinit传递命令行参数的形式指定要启动的服务器及客户程序。如果不传递参数给xinit,它将在用户的根目录下寻找并运行.xinitrc脚本来启动客户程序;在用户的根目录下寻找并运行.xserverrc脚本来启动服务器。如果xinit在用户的根目录下找不到.xinitrc、.xserverrc,xinit将使用缺省的X:0。实际上,用startx来启动X更为方便。对于运行单一会话的XWindow系统,startx提供了更为良好的用户接口。同样,startx首先在用户的根目录下寻找.xinitrc及.xserverrc脚本,如果找不到这两个脚本,startx将使用/etc/X11/xinit/xinitrc以及/etc/X11/xinit/xserverrc脚本。startx脚本的最基本框架是:

  a、 寻找.xinitrc,如果没有则使用xinitrc;
  b、 寻找.xserverrc,如果没有则使用xserverrc;
  c、 根据找到的脚本确定xinit的参数;

  由此可看出,startx在不需要传递任何参数的情况下,可以完成启动X的任务,因此,可以如下修改/etc/X11/prefdm脚本来实现自动登录:

  #!/bin/sh
  PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
  . /etc/profile.d/lang.sh
  # 第一步:查看是否为自动登录
  #if [ -f /etc/sysconfig/autologin -a -x /usr/sbin/autologin ]; then
  #注释掉上边的条件测试,直接运行startx
    if /usr/X11R6/bin/startx; then  
      exit 0
    fi
  #fi

  当然,应确保/etc/inittab中的启动级别为5。

  重新启动系统,会发现系统不验证用户身份,直接进入XWindow,此时的用户身份为root。但是,如果原来root有自己的桌面、默认shell时,上述方法启动X不一定保证还能拥有原来的设置。为了在启动X后,在避免验证身份的同时,又不改变用户原来的设置,那么在运行startx之前,还有工作要做。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/linux/)
  三、自动登录后,保持用户原来的配置(桌面、shell以及其它的一些环境变量)

  观察原来/etc/X11/prefdm脚本的自动登录部分:

  ......
  # 第一步:查看是否为自动登录
  if [ -f /etc/sysconfig/autologin -a -x /usr/sbin/autologin ]; then
    if /usr/sbin/autologin; then  
      exit 0
    fi
  fi
  ......

  不难看出,脚本中保留了自动登录的接口:一个可执行文件/usr/sbin/autologin以及一个配置文件/etc/sysconfig/autologin。
  1、/etc/sysconfig/autologin配置文件的实现:
  #config for autologin
  USER=root
  EXEC=/usr/X11R6/bin/startx
  说明,USER指定自动登录时的用户名;EXEC指定启动X要运行的程序。
  2、/usr/sbin/autologin可执行文件的实现
  /*********************
  **** autologin.c ****
  *********************/
  #include
  #include
  #include
展开更多 50%)
分享

猜你喜欢

如何实现Linux操作系统的自动登录

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
如何实现Linux操作系统的自动登录

WinXP:操作系统也玩自动登录

windows 操作系统
WinXP:操作系统也玩自动登录

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

基于Linux操作系统实现的传真系统

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
基于Linux操作系统实现的传真系统

浅析Linux操作系统登录帐户的管理和审计

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
浅析Linux操作系统登录帐户的管理和审计

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何提高Linux操作系统速度

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
如何提高Linux操作系统速度

不同发行版Linux操作系统如何实现共存

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
不同发行版Linux操作系统如何实现共存

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Linux中BSD套接口开发的基础介绍

Linux中BSD套接口开发的基础介绍

PS与PT结合鼠绘漂亮的新年插画

PS与PT结合鼠绘漂亮的新年插画
下拉加载更多内容 ↓