Linux自動登陸的設置方法


 

前些天為了實現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

 
分類:  Linux


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM