張 妍,帥文明
(廣東工業(yè)大學(xué),廣東 廣州510006)
在公司局域網(wǎng)內(nèi),服務(wù)器是共有的財(cái)產(chǎn),經(jīng)常有多個(gè)用戶需要登錄到linux平臺(tái)進(jìn)行操作,但由于每個(gè)層級(jí)能接觸到的內(nèi)容都不盡相同,所以需要對(duì)不同的分組設(shè)置不同的權(quán)限,讓各層級(jí)從不同權(quán)限用戶登入linux平臺(tái),這樣就需要配置VNC多用戶。在此介紹一種簡(jiǎn)便的設(shè)置VNC不同權(quán)限多用戶的方法。以下操作均在筆者的實(shí)驗(yàn)環(huán)境下進(jìn)行,服務(wù)器操作系統(tǒng)為Red Hat Enterprise Linux 4,客戶機(jī)操作系統(tǒng)為Windows XP。
VNC(Virt ual Net wor k Co mputing)是虛擬網(wǎng)絡(luò)計(jì)算機(jī)的縮寫(xiě),它是一套由英國(guó)劍橋大學(xué)AT&T實(shí)驗(yàn)室在2002年開(kāi)發(fā)的輕量型的遠(yuǎn)程控制計(jì)算機(jī)軟件,采用了GPL授權(quán)條款,任何人都可免費(fèi)取得該軟件。VNC是基于UNIX和Linux的免費(fèi)的開(kāi)源軟件,遠(yuǎn)程控制能力強(qiáng)大,高效實(shí)用。軟件分為兩個(gè)部分:vncser ver和vncviewer。使用前,用戶先將VNC server安裝在被控端的計(jì)算機(jī)上,然后在主控端運(yùn)行VNC vier wer來(lái)遠(yuǎn)程控制被控端。VNC支持多種操作系統(tǒng),如 Windows、Linux、Unix、Mac OS等,可將 VNC ser ver與VNC viewer分別安裝在不同的操作系統(tǒng)中進(jìn)行控制。
通常情況下,Red Hat Enter prise Linux默認(rèn)附帶VNC,可使用r p m-q vnc-ser ver命令檢查已安裝了何種版本。如果沒(méi)有安裝的話,可以去網(wǎng)上下載安裝。
首先,如果是第一次使用vnc的話,你必須先通過(guò)其他方式進(jìn)入Linux系統(tǒng),然后創(chuàng)建一個(gè)vnc用戶,開(kāi)啟vnc服務(wù)??梢允褂胿ncserver命令來(lái)啟動(dòng)VNC服務(wù),命令的格式為“vncserver:桌面號(hào)”,其中桌面號(hào)用數(shù)字表示,每個(gè)用戶連接需要占用一個(gè)桌面,以此來(lái)區(qū)別到底是使用哪個(gè)用戶來(lái)登錄的,桌面號(hào)可以說(shuō)是唯一的識(shí)別碼。這里建議第一個(gè)創(chuàng)建的用戶為r oot,如要啟動(dòng)編號(hào)為1的桌面可以執(zhí)行命令:vncserver:1。第一次運(yùn)行該命令的時(shí)候,系統(tǒng)會(huì)提示用戶輸入訪問(wèn)口令??诹顣?huì)被加密保存在用戶主目錄下的.vnc子目錄中的pass wd文件里,以后想修改密碼的話也很簡(jiǎn)單,只需要輸入vncpasswd就可以進(jìn)行修改了。同時(shí),系統(tǒng)還會(huì)在用戶目錄下的.vnc子目錄中為用戶自動(dòng)建立xstartup配置文件,以后每次啟動(dòng)VNC服務(wù)時(shí),都會(huì)讀取該文件中的配置選項(xiàng)。
如果Linux服務(wù)器開(kāi)啟了防火墻功能,還需要設(shè)置允許TCP協(xié)議相應(yīng)的端口通過(guò)或關(guān)閉防火墻功能,如可以使用以下命令允許桌面號(hào)為1的連接通過(guò):iptables-I INPUT-p tcp-dport 5901-j ACCEPT。其 中桌面號(hào)1對(duì)應(yīng)的端口是5901,2對(duì)應(yīng)的端口是5902,依此類推。
要想更方便地使用VNC遠(yuǎn)程控制Linux系統(tǒng),KDE和GNOME圖形桌面環(huán)境無(wú)疑是一大助手。創(chuàng)建好vnc桌面號(hào)之后,想直接登錄進(jìn)入圖形界面,則要對(duì)其用戶目錄下的.vnc/xstart up文件做一些修改——將第四行和第五行,即unset SESSION_M(jìn)AN-AGER和exec/etc/X11/xinit/xinitrc前面的#號(hào)去掉,如圖1所示。
圖1 xstartup文檔的修改
然后重新啟動(dòng)vncserver桌面號(hào)——使用命令vncserver-kill:1殺掉桌面號(hào)1,再用vncserver:1重新啟動(dòng)它。這樣就成功配置好了一個(gè)桌面號(hào)為1的root用戶了。配置好vnc用戶之后,從安裝了vnc viewer的機(jī)器登錄時(shí),只需在其中輸入Linux所在主機(jī)名和桌面號(hào),就會(huì)以桌面號(hào)對(duì)應(yīng)的用戶登入Linux系統(tǒng)了,如圖2。
圖2 VNC登陸Linux界面
對(duì)于VNC多用戶配置,筆者總結(jié)網(wǎng)上最為普遍的一種方法,就是修改配置文件/etc.sysconfig/vncser vers,首先將最后兩排代碼#VNCSERVERS="2:myuser na me"
#VNCSERVERARGS[2]="-geometry 800x600-nolisten tcp-nohttpd-localhost"
之間加入要配置的vnc多用戶的信息,即:
#VNCSERVERS="2:myuser name"
VNCSERVERS="1:root 2:test1 3:test2"
VNCSERVERARGS[1]="-geometry 800x600"
VNCSERVERARGS[2]="-geometry 800x600"
VNCSERVERARGS[3]="-geometry 800x600"
#VNCSERVERARGS[2]="-geometry 800x600-nolisten tcp-nohttpd-localhost"
然后切換到上述寫(xiě)入的用戶中,手動(dòng)創(chuàng)建.vnc文件夾,設(shè)置該用戶的vnc遠(yuǎn)程連接密碼,再回到root用戶重啟vnc服務(wù)。
實(shí)際上,這樣配置出來(lái)的VNC多用戶登錄進(jìn)入Linux系統(tǒng)后都是r oot權(quán)限,顯然不符合不同用戶擁有不同權(quán)限的要求,必須更進(jìn)一步進(jìn)行授權(quán),非常麻煩。于是筆者想到一種方法——既然要求登入系統(tǒng)后每個(gè)用戶權(quán)限不同,那么直接用相應(yīng)權(quán)限的用戶來(lái)創(chuàng)建VNC登錄用戶無(wú)疑更加方便可靠。
配置VNC多用戶的過(guò)程其實(shí)與上述配置r oot用戶過(guò)程相差不多,只要在配置其他用戶之前先切換到該用戶,然后進(jìn)行基礎(chǔ)配置即可。這里以test1用戶,桌面號(hào)11為例,先以su-test1命令切換到test1用戶,然后以vncserver:11啟動(dòng)該桌面號(hào)服務(wù),再修改.vnc/xstartup文 件,最 后 以 vncserver-kill:11 和vncserver:11重新啟動(dòng)服務(wù)即可。
若test1用戶要配置多個(gè)vnc登錄用戶,只需要在該用戶下多次重復(fù)上述過(guò)程創(chuàng)建不同桌面號(hào)就能滿足要求。
由于使用vncserver命令創(chuàng)建的桌面號(hào)會(huì)在服務(wù)器重新啟動(dòng)后失效,服務(wù)器每次啟動(dòng)之后都需要重新建立桌面號(hào),非常不方便。為了讓系統(tǒng)自動(dòng)管理這些桌面號(hào),可以將它們添加到配置文件/etc/sysconfig/vncser vers中,格式為:VNCSERVERS="桌面號(hào):使用的用戶名。
例如:VNCSERVERS="1:r oot"
VNCSERVERS="2:test1"
VNCSERVERS="3:test2"
添加完成后,VNC服務(wù)每次啟動(dòng)時(shí)都會(huì)自動(dòng)創(chuàng)建這些桌面號(hào)。
若不小心異常操作刪除了桌面號(hào),導(dǎo)致雖然桌面號(hào)被刪除,但對(duì)應(yīng)的端口號(hào)卻沒(méi)有釋放,而無(wú)法重新啟用該桌面號(hào)時(shí),我們可以先計(jì)算出對(duì)應(yīng)的端口號(hào),如test1的桌面號(hào)為11,則對(duì)應(yīng)的端口號(hào)則為5911。然后用lsof-i:5911來(lái)查看占用該端口號(hào)的進(jìn)程,然后用kill殺掉該進(jìn)程,即可以恢復(fù)到桌面號(hào)和端口號(hào)都自由的狀態(tài),重新使用該桌面號(hào)。
[1] 陳 虹.基于Linux平臺(tái)下的VNC遠(yuǎn)程控制實(shí)現(xiàn)方法[J].萍鄉(xiāng)高等專科學(xué)校學(xué)報(bào),2007,3:25-26.