亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 911 | 回復(fù): 0
打印 上一主題 下一主題

【轉(zhuǎn)】自動登陸到Utuntu系統(tǒng)文本模式 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-08-15 20:53 |只看該作者 |倒序?yàn)g覽

本文介紹自動登陸到Utuntu系統(tǒng)文本模式的一種實(shí)現(xiàn)方法。
之所以要實(shí)現(xiàn)Ubuntu自動登陸,一開始的動機(jī)只是為了現(xiàn)成一次作業(yè)。至于是否還有其他的用途,我想,Linux系統(tǒng)的可定制性這么高,自動登陸的實(shí)現(xiàn)就是一個很好的例子,也許在其他的一些地方,還用得到這個方法。
我的Ubuntu是版本是Edgy(6.10),自動登陸的實(shí)現(xiàn)參考了網(wǎng)上廣為轉(zhuǎn)載的一篇介紹自動登錄到Redhat的文章──《如何自動登陸Linux》。對于自動登錄到Ubuntu Edgy的辦法,還沒有能夠在網(wǎng)上找到,其實(shí)原理上一樣,實(shí)現(xiàn)上略有不同。
根據(jù)文章的分析,要實(shí)現(xiàn)動登陸,從Linux系統(tǒng)啟動的inittab文件入手,修改啟動終端的命令getty和它所調(diào)用的用戶登錄的命令login來實(shí)現(xiàn)。采用下載程序源碼,修改程序源碼,生成新的可執(zhí)行文件,覆蓋舊的getty和login命令的辦法來實(shí)現(xiàn)。
Linux系統(tǒng)啟動到登錄的大概過程是:init進(jìn)程是系統(tǒng)所有進(jìn)程的起點(diǎn),內(nèi)核在完成核內(nèi)引導(dǎo)以后,即在本線程(進(jìn)程)空間內(nèi)加載init程序。 init程序需要讀取/etc/inittab文件作為其行為指針,inittab是以行為單位的描述性(非執(zhí)行性)文本。init進(jìn)程將啟動運(yùn)行rc腳 本,在rc返回后,init將得到控制,并啟動getty。
(1)查找命令所屬的deb包。
$ dpkg -S getty
util-linux: /usr/share/doc/util-linux/README.modems-with-getty.gz
util-linux: /usr/share/man/man8/getty.8.gz
util-linux: /sbin/getty
util-linux: /usr/share/doc/util-linux/README.getty.gz
由上面的輸入,我們可以猜測到,getty命令由名字為util-linux的deb包提供。
(2)下載deb包源代碼
$ sudo apt-get source util-linux
在當(dāng)前目錄下即可得到util-linux的源碼包,有如下文件:
util-linux_2.12r-11ubuntu2.diff.gz
util-linux_2.12r-11ubuntu2.dsc
util-linux_2.12r.orig.tar.gz
util-linux-2.12r
源代碼即在util-linux-2.12r文件夾中。
getty命令和login命令的源代碼在util-linux-2.12r/login-utils/文件夾下。
注意,此處于文章《如何自動登陸Linux》中不同之處在于,不需要下載兩個source rpm包,而兩個命令的源代碼都在此處。其中,getty命令的源代碼可以為agetty.c,login命令的源代碼為login.c。
getty 就是一個程序,他讓你能從各種設(shè)備上登陸,比如虛擬終端,文字終端或是一個modem。他顯示一個登陸提示符,一旦你鍵入用戶名,getty把它傳送到 login,login會向你要密碼,認(rèn)證成功后給你一個shell。有很多getty,有的發(fā)行版,包括red hat使用很小的,只能在虛擬終端上用的mingetty。login(登陸)程序是linux功能包的一部分,包含了一個名為agetty的 getty。
(3)修改getty命令的源代碼
getty的功能一般包括:
打開終端線,并設(shè)置模式;輸出登錄界面及提示,接受用戶名的輸入;以該用戶名作為login的參數(shù),加載login程序;缺省的登錄提示記錄在/etc/issue文件中。
在agetty.c的源代碼中的第366行和367行可以看到:
366 while ((logname = get_logname(&options, &chardata, &termio)) == 0)
367 next_speed(&termio, &options);
此處調(diào)用了get_logname得到用戶輸入的用戶名,get_logname在1014行調(diào)用了do_prompt函數(shù),輸出了登錄的提示符,類似于“l(fā)ogin:”。這里,我們把366和367行注釋,直接賦值logname為root:
366 //while ((logname = get_logname(&options, &chardata, &termio)) == 0)
367 // next_speed(&termio, &options);
368 logname = “root”;
(4)修改源login命令的源代碼
login程序在getty的同一個進(jìn)程空間中運(yùn)行,接受getty傳來的用戶名參數(shù)作為登錄的用戶名。
在login.c的源代碼中的第407行:
407 passwd_req = 1;
通過對源代碼的分析,此處為密碼是否需要驗(yàn)證的一個開關(guān)。我們修改此處,把密碼需要驗(yàn)證的開關(guān)直接關(guān)閉:
407 //passwd_req = 1;
408 passwd_req = 0;
(5)編譯生成可執(zhí)行文件
直接利用util-linux-2.12r/login-utils/目錄下的makefile文件進(jìn)行編譯,直接打make命令,編譯完成后,即可得到可執(zhí)行文件:agetty和login。
下面?zhèn)浞窒到y(tǒng)原來的getty和login可執(zhí)行文件。查找文件所在位置,并備份,把新生在的可執(zhí)行文件移入相應(yīng)的目錄中,對agetty改名。
$ whereis login
login: /bin/login /etc/login.defs /usr/share/man/man1/login.1.gz
$ sudo cp /bin/login /bin/login.bak
$ sudo cp login /bin/
$ whereis getty
getty: /sbin/getty /usr/share/man/man8/getty.8.gz
$ sudo cp /sbin/getty /sbin/getty.bak
$ sudo cp agetty /sbin/
$ sudo mv /sbin/agetty /sbin/getty
最后這一步,也可以創(chuàng)建一個名字為getty的軟鏈接到agetty。
$ sudo ln -s /sbin/agetty /sbin/getty
(6)重啟系統(tǒng)
在啟動信息顯示過后,系統(tǒng)將直接進(jìn)入root用戶登錄狀態(tài),出現(xiàn)類似于下面的提示符:
root@link-desktop:~#
這表示我們已經(jīng)順利自動登Ubuntu系統(tǒng)中了。


本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u1/53151/showart_1131752.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP