時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(7)
眾所周知,Linux是一個(gè)多用戶的操作系統(tǒng)。如下圖,在同一個(gè)時(shí)刻內(nèi)可以有多個(gè)用戶同時(shí)登陸到Linux系統(tǒng)中,甚至同一個(gè)用戶都可以多次同時(shí)進(jìn)行登陸。但是有時(shí)候系統(tǒng)管理員也會(huì)發(fā)現(xiàn)一些不聽話的用戶。如這些用戶可能在進(jìn)行一些未經(jīng)授權(quán)的訪問或者占用了太多的資源。此時(shí)系統(tǒng)管理員需要把他們剔除出系統(tǒng)。這該怎么做呢?
如現(xiàn)在筆者有一臺(tái)Linux的服務(wù)器,現(xiàn)在正有兩個(gè)用戶連接在操作系統(tǒng)上。(筆者現(xiàn)在是利用同一臺(tái)電腦不同的帳戶名進(jìn)行登陸,故后者顯示的IP地址是相同的。)種種跡象表明,現(xiàn)在Oracle用戶正在進(jìn)行一些非法的勾當(dāng)。為了安全考慮,筆者要馬上把這個(gè)用戶踢出Linux服務(wù)器,中斷其與Linux服務(wù)器之間的連接。筆者下面就一步步的跟對(duì)大家介紹,該如何實(shí)現(xiàn)這個(gè)目的。
第一步:利用who命令,找出用戶登錄的終端代號(hào)。
如果系統(tǒng)管理員要把某個(gè)用戶踢出操作系統(tǒng),首先需要了解這個(gè)用戶是通過(guò)什么方式等到到這個(gè)操作系統(tǒng)的,即要掌握用戶登錄的終端代號(hào)。用戶以不同的形式登陸到Linux操作系統(tǒng),其終端代號(hào)是不同的。TTY1-TTY6分別代表本機(jī)上的1到6號(hào)的虛擬主控臺(tái)。PTS表示用戶是通過(guò)遠(yuǎn)程登陸的。如果數(shù)字為:0則表示用戶從XWindow登錄系統(tǒng)。如果系統(tǒng)管理員需要知道某個(gè)用戶是通過(guò)什么方式登陸到Linux操作系統(tǒng)的,則可以通過(guò)who命令來(lái)查詢。如上面的示意圖中,第二個(gè)字段就是用戶登錄操作系統(tǒng)的方式i。這里PTS表示oracle這個(gè)用戶是通過(guò)遠(yuǎn)程登錄的。如可能是通過(guò)ssh協(xié)議登陸到Linux操作系統(tǒng)的。掌握這個(gè)信息是把用戶踢出操作系統(tǒng)的關(guān)鍵。
另外如果系統(tǒng)當(dāng)前登陸的用戶比較多,執(zhí)行who命令列出所有數(shù)據(jù)會(huì)讓系統(tǒng)管理員眼花繚亂。如果系統(tǒng)管理員知道要踢出操作系統(tǒng)的用戶名,則可以使用who 用戶名的方式來(lái)顯示某個(gè)特定用戶的信息。如果系統(tǒng)管理員不知道用戶的具體名字,而只是模糊的記得這個(gè)用戶可能是o開頭的,則還可以利用通配符來(lái)實(shí)現(xiàn)模糊查詢。另外如果只需要查詢用戶的終端代號(hào)信息,還可以在who命令后面加入具體的參數(shù)。
有時(shí)候可能管理員還需要使用who的一個(gè)同胞兄弟w命令。這個(gè)命令提供的信息要比who命令詳細(xì)一點(diǎn)。特別是其中有一個(gè)pcpu與what參數(shù)可以給管理員到底需不需要把這個(gè)用戶踢出操作系統(tǒng)提供一些參考。What參數(shù)反映了用戶正在運(yùn)行的程序。如果用戶正在執(zhí)行某個(gè)程序,則這里會(huì)顯示出這個(gè)程序的名字;如果正在執(zhí)行一般的文字模式命令,則這里會(huì)顯示用戶環(huán)境名稱。Pcpu反映了CPU執(zhí)行程序耗費(fèi)的時(shí)間。這個(gè)時(shí)間就是執(zhí)行What字段內(nèi)的程序所消耗的時(shí)間。所以這些信息能夠幫助管理員判斷,這個(gè)用戶到底是否存做一些非法行為或者在執(zhí)行一些耗費(fèi)操作系統(tǒng)資源的程序。同時(shí),還可以從個(gè)結(jié)果中分析一下如果強(qiáng)制把用戶踢出操作系統(tǒng)的話可能會(huì)給其帶來(lái)什么樣的損失。如果系統(tǒng)管理員鐵了心要把這個(gè)用戶踢出去的話,則可以直接利用who命令查找用戶的終端代號(hào)即可。反正是兩個(gè)命令都可以查詢到用戶的終端代碼。
第二步:利用PS命令,找出程序標(biāo)示符PID最小的值。
找到某個(gè)用戶的終端代號(hào)之后,管理員需要使用ps命令找出該終端正在執(zhí)行的程序中,程序標(biāo)識(shí)符PID編號(hào)最小的值。因?yàn)镻ID編號(hào)最小的值對(duì)應(yīng)的應(yīng)用程序,就是這個(gè)用戶登錄系統(tǒng)時(shí)所執(zhí)行的第一個(gè)程序。通常情況下這個(gè)就是用戶的工作環(huán)境shell。
為此要把用戶踢出Linux操作系統(tǒng)之前,管理員還需要了解shell的主要功能。Shell的功能在于搭起用戶與操作系統(tǒng)間的溝通橋梁,提供基本的操作界面。系統(tǒng)管理員可以通過(guò)shell下達(dá)各種指令,在系統(tǒng)中進(jìn)行維護(hù)操作,產(chǎn)生彼此間互動(dòng)的關(guān)系。簡(jiǎn)單的說(shuō)shell就是一種人機(jī)交換的工具。Shell主要負(fù)責(zé)用戶和操作系統(tǒng)兩者之間的交互。即shell會(huì)把用戶下達(dá)的命令解釋給系統(tǒng)去執(zhí)行,并將系統(tǒng)返回的信息再次進(jìn)行解釋,然后傳遞給用戶讓用戶了解系統(tǒng)內(nèi)核要反映的內(nèi)容。Shell對(duì)Linux系統(tǒng)很重要,大部分功能都只有依靠shell才能夠完成。如shell可以實(shí)現(xiàn)工作控制,可以在前臺(tái)與后臺(tái)進(jìn)行切換操作,并且顯示有哪些工作正在后臺(tái)執(zhí)行??傊痪湓?,如果沒有shell的話,用戶將無(wú)法跟系統(tǒng)內(nèi)核與系統(tǒng)硬件進(jìn)行對(duì)話。所以管理員之需要強(qiáng)制把這個(gè)shell關(guān)掉,就可以將這個(gè)用戶踢出Linux操作系統(tǒng)。
如果系統(tǒng)管理員要關(guān)掉某個(gè)進(jìn)程的話,則可以通過(guò)使用kill PID的方式來(lái)關(guān)閉shell進(jìn)程。不過(guò)前提是系統(tǒng)管理員需要知道這個(gè)用戶所采用shell的進(jìn)程號(hào)。要知道這個(gè)信息的話,管理員可以采用ps aus | grep pts/0命令來(lái)查詢。在返回的接過(guò)中,PID編號(hào)最小的值就是oracle 用戶當(dāng)前所采用的SHELL 的PID號(hào)。這里ps aux命令會(huì)列出系統(tǒng)中正在執(zhí)行的所有程序。如果程序比較多的話,那么看起來(lái)就會(huì)眼花繚亂,難以一下子找到合適的值。故在這里還需要結(jié)合grep命令來(lái)使用,可以事半功倍。grep pts/0 這兩個(gè)參數(shù)就好像是一個(gè)過(guò)濾器,它會(huì)找出oracle用戶(pts/0是第一步找出來(lái)的oracle用戶的終端代號(hào),它與系統(tǒng)登陸用戶一一對(duì)應(yīng))當(dāng)前所有的運(yùn)行程序,并且按PID號(hào)從小到大進(jìn)行排序。而因?yàn)橛脩粢坏顷懖僮飨到y(tǒng),其第一個(gè)開啟的程序就是shell。故顯示在最前面的就是oracle用戶所采用shell的pid號(hào)。系統(tǒng)管理員找到這個(gè)PID號(hào)之后,就可以利用kill命令來(lái)殺死shell進(jìn)程了。
第三步:利用kill命令把用戶踢出Linux操作系統(tǒng)。
以上兩步都完成之后,就是萬(wàn)事俱別,只欠東風(fēng)了。接下去,系統(tǒng)管理員就可以通過(guò)kill命令來(lái)把用戶從系統(tǒng)中踢出去。不過(guò)這個(gè)踢也有好幾種踢法,系統(tǒng)管理員可以先采取比較柔和的方法。如果柔和的方法不管用的話,則采用強(qiáng)制的措施。這么管理起來(lái)比較人性化一點(diǎn)。
通常情況下,筆者建議先利用kill 命令加上要?jiǎng)h除的shell程序的pid號(hào)。如果用戶的所運(yùn)行的其他進(jìn)程不怎么頑固的話,通常可以正常關(guān)閉shell程序。這是一種相對(duì)溫和的方式,它可以把對(duì)用戶oracle正在執(zhí)行的運(yùn)行的文件所造成的負(fù)面影響降低到最低。這個(gè)跟Windows操作系統(tǒng)注銷的功能差不多。如過(guò)用戶已經(jīng)打開的文件還沒有保存的話,則系統(tǒng)會(huì)保存這些文件的副本等等。故下次這個(gè)用戶重新登陸后,不會(huì)丟失大量的數(shù)據(jù)。
不過(guò)同Windows系統(tǒng)一樣,有時(shí)候注銷個(gè)好半天都無(wú)法注銷成功。所以kill命令有時(shí)候也無(wú)法順利刪除某些程序。此時(shí)管理員就需要采用其他的一些手段,如在Kill命令中加入一些參數(shù)來(lái)關(guān)閉shell進(jìn)程。筆者建立當(dāng)無(wú)法通過(guò)kill加PID進(jìn)程號(hào)的方式關(guān)閉shell環(huán)境的話,那么就可以通過(guò)Kill -15的方式來(lái)關(guān)閉。這會(huì)強(qiáng)制刪除shell 進(jìn)程。這個(gè)就好像Windows系統(tǒng)下的重新啟動(dòng)命令一樣。在遇到操作系統(tǒng)問題時(shí),他比系統(tǒng)注銷要強(qiáng)硬一點(diǎn)。但是他的破壞作用也比較大。故需要謹(jǐn)慎使用。不過(guò)話說(shuō)回來(lái),如果真的要強(qiáng)制把某個(gè)用戶踢出系統(tǒng)的話,此時(shí)通過(guò)以上兩種方式來(lái)關(guān)閉用戶的shell進(jìn)程往往不起作用。否則說(shuō),很難再短時(shí)間內(nèi)操作成功。
故大部分情況下,系統(tǒng)管理員最好還是需要使用Kill-9命令來(lái)刪除shell進(jìn)程。如系統(tǒng)管理員可以使用kill -9 pid這個(gè)命令來(lái)強(qiáng)制關(guān)閉某個(gè)用戶的 shell,從而終端用戶與系統(tǒng)的連接。不過(guò)雖然說(shuō)在大部分情況下系統(tǒng)管理員還是需要采用這個(gè)最后的強(qiáng)制措施,不過(guò)為了系統(tǒng)的穩(wěn)定性考慮,筆者還是建議先采用第一、二個(gè)比較柔和的方式看看。只有在以上兩個(gè)方式都不管用的情況下,再采用Kill-9命令。而不要一下子就采用kill -9這個(gè)極端方式。
關(guān)鍵詞標(biāo)簽:Linux
相關(guān)閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP
人氣排行 Linux下獲取CPUID、硬盤序列號(hào)與MAC地址 dmidecode命令查看內(nèi)存型號(hào) linux tc實(shí)現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關(guān)機(jī)、重啟、注銷 命令 查看linux服務(wù)器硬盤IO讀寫負(fù)載