果洛皆料电子有限公司

如何實(shí)現(xiàn)Linux操作系統(tǒng)的自動(dòng)登錄

  • 發(fā)布于:2021-10-25
  • 250 人圍觀
開機(jī)自動(dòng)登錄Linux,并自動(dòng)運(yùn)行XWindow應(yīng)用程序,有其特殊的應(yīng)用背景,如基于Linux平臺(tái)的監(jiān)控系統(tǒng),Linux啟動(dòng)后不需要身份驗(yàn)證,而直接運(yùn)行監(jiān)控程序等等。本文以Redhat7.2為平臺(tái),結(jié)合Linux啟動(dòng)過(guò)程,介紹了如何避免身份驗(yàn)證自動(dòng)登錄,并直接進(jìn)入X Window自動(dòng)運(yùn)行應(yīng)用程序。

  一、Linux啟動(dòng)的最后階段的工作

  Linux在啟動(dòng)過(guò)程的最后階段(具體啟動(dòng)步驟略),init會(huì)根據(jù)/etc/inittab文件的最后一行x:5:respawn:/etc/X11/prefdm-nodaemon運(yùn)行/etc/X11/prefdm腳本,(Redhat7.2缺省時(shí)是這樣的)。prefdm腳本的主要任務(wù)是完成X Window的啟動(dòng),可以有幾種啟動(dòng)X Window的方法,都包含在prefdm腳本中,幾種主要方法有:

  運(yùn)行xdm啟動(dòng)X Window;
  運(yùn)行g(shù)dm,進(jìn)入gnome桌面環(huán)境;
  運(yùn)行kdm進(jìn)入kde桌面環(huán)境;
  自動(dòng)登錄進(jìn)入Linux;

  prefdm腳本框架大致如下:

  #!/bin/sh
  PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
  . /etc/profile.d/lang.sh
  # 第一步:查看是否為自動(dòng)登錄
  if [ -f /etc/sysconfig/autologin -a -x /usr/sbin/autologin ]; then
  if /usr/sbin/autologin; then  
    exit 0
  fi
  fi

  # 第二步:如果不是自動(dòng)登錄方式,就會(huì)在/etc/sysconfig/desktop中搜尋用戶偏愛的登錄方式
  ......
  # 可以是kdm、gdm以及xdm,并運(yùn)行相應(yīng)的kdm、gdm以及xdm。

  二、自動(dòng)登錄的實(shí)現(xiàn)(autologin的實(shí)現(xiàn))

  在/etc/X11/prefdm腳本中,是否實(shí)現(xiàn)自動(dòng)登錄有一個(gè)條件測(cè)試開關(guān),事實(shí)上,可以在這里注釋掉測(cè)試開關(guān),直接執(zhí)行啟動(dòng)X Window的操作。

  自動(dòng)登錄實(shí)質(zhì)上就是繞過(guò)身份驗(yàn)證,直接啟動(dòng)X Window。X Window的啟動(dòng)可以由xinit來(lái)完成。

  Xinit用來(lái)啟動(dòng)X Window系統(tǒng)服務(wù)器以及系統(tǒng)上的第一個(gè)客戶程序,可以通過(guò)為xinit傳遞命令行參數(shù)的形式指定要啟動(dòng)的服務(wù)器及客戶程序。如果不傳遞參數(shù)給xinit,它將在用戶的根目錄下尋找并運(yùn)行.xinitrc腳本來(lái)啟動(dòng)客戶程序;在用戶的根目錄下尋找并運(yùn)行.xserverrc腳本來(lái)啟動(dòng)服務(wù)器。如果xinit在用戶的根目錄下找不到.xinitrc、.xserverrc,xinit將使用缺省的X:0。實(shí)際上,用startx來(lái)啟動(dòng)X更為方便。對(duì)于運(yùn)行單一會(huì)話的XWindow系統(tǒng),startx提供了更為良好的用戶接口。同樣,startx首先在用戶的根目錄下尋找.xinitrc及.xserverrc腳本,如果找不到這兩個(gè)腳本,startx將使用/etc/X11/xinit/xinitrc以及/etc/X11/xinit/xserverrc腳本。startx腳本的最基本框架是:

  a、 尋找.xinitrc,如果沒(méi)有則使用xinitrc;
  b、 尋找.xserverrc,如果沒(méi)有則使用xserverrc;
  c、 根據(jù)找到的腳本確定xinit的參數(shù);

  由此可看出,startx在不需要傳遞任何參數(shù)的情況下,可以完成啟動(dòng)X的任務(wù),因此,可以如下修改/etc/X11/prefdm腳本來(lái)實(shí)現(xiàn)自動(dòng)登錄:

  #!/bin/sh
  PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
  . /etc/profile.d/lang.sh
  # 第一步:查看是否為自動(dòng)登錄
  #if [ -f /etc/sysconfig/autologin -a -x /usr/sbin/autologin ]; then
  #注釋掉上邊的條件測(cè)試,直接運(yùn)行startx
    if /usr/X11R6/bin/startx; then  
      exit 0
    fi
  #fi

  當(dāng)然,應(yīng)確保/etc/inittab中的啟動(dòng)級(jí)別為5。

  重新啟動(dòng)系統(tǒng),會(huì)發(fā)現(xiàn)系統(tǒng)不驗(yàn)證用戶身份,直接進(jìn)入XWindow,此時(shí)的用戶身份為root。但是,如果原來(lái)root有自己的桌面、默認(rèn)shell時(shí),上述方法啟動(dòng)X不一定保證還能擁有原來(lái)的設(shè)置。為了在啟動(dòng)X后,在避免驗(yàn)證身份的同時(shí),又不改變用戶原來(lái)的設(shè)置,那么在運(yùn)行startx之前,還有工作要做。
萬(wàn)企互聯(lián)
標(biāo)簽: