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