Linux自動登陸的設定方法

來源:互聯網
上載者:User

前些天為了實現Linux自動登陸的方法,在網上查了很多資料,發現有不少方法,但網上有些方法的講解不是特別清楚,或者已經過時。因此,特意整理了一下Linux自動登陸的設定方法。
本文的測試環境為Centos 5.5。

1、設定GDM
GDM是GNOME顯示管理器,通過設定其設定檔/etc/gdm/custom.conf可以設定帳號自動登陸。
設定方法如下:
在/etc/gdm/custom.conf檔案中添加以下內容
[daemon]
AutomaticLogin=username
AutomaticLoginEnable=True
其中,username是要自動登陸的使用者名稱。
說明:username不能是root,也就說無法實現root的自動登陸。

2、設定prefdm
其中,/etc/inittab檔案的最後一行,該行命令的作用是啟動X Windows,而/etc/X11/prefdm就是具體實現啟動X Windows的指令碼。
在/etc/X11/prefdm中添加啟動X Windows的命令,並退出。
/usr/bin/startx
exit 1
說明:
(1)這兩行代碼一定要在
[ -n "$preferred" ] && exec $preferred "$@" >/dev/null 2>&1 </dev/null
代碼之前。
(2)該方法自動以root登陸,是因為運行到/etc/X11/prefdm時,是root身份。

3、在rc.local中啟動X Windows
在/etc/rc.local中添加啟動X Windows的命令
/usr/bin/startx
說明:該方法自動以root登陸,是因為運行到/etc/rc.local時,是root身份。

4、更改mingetty和login的源碼。
該方法只對文字模式有效,因此,需要把/etc/initab中的設定為:
id:3:initdefault:

/sbin/mingetty的作用是擷取登陸使用者名稱,並把使用者名稱作為參數調用/bin/login。
/bin/login其中一個功能就是擷取使用者輸入的密碼。
(1) 查看/sbin/mingetty所屬的軟體包
[root@localhost ~]$ rpm -qf /sbin/mingetty
mingetty-1.07-5.2.2
(2)下載mingetty對應的源碼
mingetty-1.07-5.2.2.src.rpm
(3)解壓源碼包
[root@localhost Desktop]# rpm -ivh mingetty-1.07-5.2.2.src.rpm
解壓後的源碼包所在的目錄為: /usr/src/redhat/SOURCES/
查看檔案
[root@localhost ~]# ls /usr/src/redhat/SOURCES/mingetty*
/usr/src/redhat/SOURCES/mingetty-1.00-opt.patch
/usr/src/redhat/SOURCES/mingetty-1.07.tar.gz
繼續解壓源碼包
[root@localhost ~]# tar zxvf /usr/src/redhat/SOURCES/mingetty-1.07.tar.gz
mingetty-1.07/
mingetty-1.07/mingetty.8
mingetty-1.07/COPYING
mingetty-1.07/Makefile
mingetty-1.07/mingetty-0.9.4-autologin.patch
mingetty-1.07/mingetty.c
(4)修改mingetty.c中的代碼
更改mingetty的代碼需要進行兩步操作。
第352行的char *logname, *s;
更改為char *logname = "root", *s;
把第409-415行注釋
/* if (autologin) {
  do_prompt (0);
  printf ("login: %s (automatic login)\n", autologin);
  logname = autologin;
 } else
  while ((logname = get_logname ()) == 0)
   /* do nothing */ /*; */
(5)編譯產生mingetty
[root@localhost ~]# cd /usr/src/redhat/SOURCES/mingetty-1.07/
[root@localhost mingetty-1.07]# make
(6)更新mingetty
[root@localhost mingetty-1.07]# cp mingetty /sbin/mingetty
mingetty的源碼更改就完成了。

(1) 查看/bin/login所屬的軟體包
[root@localhost ~]# rpm -qf /bin/login
util-linux-2.13-0.47.el5
(2)下載login對應的源碼
util-linux-2.13-0.47.e15.src.rpm
(3)解壓源碼包
[root@localhost Desktop]# rpm -ivh util-linux-2.13-0.47.e15.src.rp
解壓後的源碼包所在的目錄為: /usr/src/redhat/SOURCES/
查看解壓的檔案:
[root@localhost ~]# ls /usr/src/redhat/SOURCES/util-linux-2.13*tar*
util-linux-2.13-pre7.tar.bz2
繼續解壓檔案
[root@localhost ~]# tar xf /usr/src/redhat/SOURCES/util-linux-2.13-pre7.tar.bz2
解壓後的檔案夾為util-linux-2.13-pre7。
其中login的源碼的目錄為/usr/src/redhat/SOURCES/util-linux-2.13-pre7/login-utils
login-utils檔案中不存在make檔案,因此,需要自己編寫編譯命令來產生login。
(4)修改login.c中的代碼
把344行的passwd_req = 1;
更改為passwd_req = 0;
在檔案中添加locale.h標頭檔
#include <locale.h>
(5)編譯產生login
[root@localhost login-utils]# gcc -o login login.c ../lib/setproctitle.c checktty.c -Wall -lcrypt -I ../include/
(6)更新login
[root@localhost login-utils]# cp login /bin/login

重啟,即可在文字模式中以root賬戶登入。

參考資料
1、http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip20/
2、http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip20/index2.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.