xlock 命令
用途
鎖定本地 X 顯示器,直到輸入密碼。
語法
xlock [ -batchcount Number ] [ -bg Color ] [ -delay Users ] [ -display Display ] [ -fg Color ] [ -font FontName ] [ -info TextString ] [ -invalid TextString ] [ -mode ModeName ] [ +mono | -mono ] [ -username TextString ] [ -nice Level ] [ +nolock | -nolock ] [ -password TextString ] [ +remote | -remote ] [ +allowaccess | -allowaccess ] [ +allowroot | -allowroot ] [ +echokeys | -echokeys ] [ +enablesaver | -enablesaver ] [ -help ] [ -saturation Value ] [ -timeout Seconds ] [ +usefirst | -usefirst ] [ +v | -v ] [ -validate TextString ]
描述
在 xlock 命令運行期間,所有新的伺服器連線都會被拒絕。螢幕保護程式將被禁用,滑鼠指針將被關閉,螢幕置空,只顯示一個不斷變化的模式。如果按下了鍵盤或滑鼠按鈕,就會提示輸入啟動 xlock 命令的用戶的密碼。
如果輸入了正確的密碼,螢幕就會解除鎖定,X 伺服器將被恢復。在輸入密碼時,可以使用 Ctrl-U 和 Ctrl-H 分別作為取消和刪除。要返回到鎖定的螢幕,請單擊變化的模式的小圖示。
要正常運轉,xlock 需要在 root 用戶的許可下運行,因為作業系統會限制對密碼和訪問控制檔案的訪問。要給 xlock root 用戶許可,您可以執行下列步驟:
1. 登錄為 root 用戶。
2. 到包含 xlock 程式檔案的目錄。
3. 運行兩個命令:
1. chown root xlock
2. chmod u+s xlock
標誌
-batchcount Number 設定每個批處理中要處理任務的數量。Number 指取決於模式的不同任務:
qix
指按同一種顏色處理的行數。
hop
指按同一種顏色處理的像素數。
image
指螢幕上面一次顯示的 sun 徽標數。
swarm
指蜜蜂的數量
life and blank
不套用。
-bg Color 設定密碼螢幕上的背景顏色。
-delay Number 設定模式操作的速度,為一組 hopalong 像素、qix 行、life 生成、image 位 和 swarm 動作之間延遲的微秒數。
在 blank 模式下,一定要將其設定為比較小的數字,因為鍵盤和滑鼠只在每個延遲後檢查動作。一個為零的延遲會在檢查緊跟的循環中的滑鼠和鍵盤輸入時不必要地消耗處理單元,因為 blank 模式不起任何作用。
-display Display 設定 X11 顯示器為鎖定狀態。xlock 命令將鎖定伺服器上所有可用的螢幕,並限制您只能鎖定本地伺服器,如 unix:0、localhost:0 或 :0(除非您設定了 -remote 標誌)。
-fg Color 設定密碼螢幕上文本的顏色。
-font FontName 設定提示螢幕上使用的字型。
-help 列印關於可用選項的一個簡要描述。
-info TextString 定義包含信息的訊息。預設值為 Enter password to unlock; select icon to lock。
-invalid TextString 指定密碼訊息。預設值為 Invalid login。
-mode ModeName 指定下面六種顯示方式之一:
blank
顯示空的螢幕。
hop
顯示 Scientific American 1986 年 9 月刊中的真實飛機幾何圖形。
image
顯示幾個隨機出現的 sun 徽標。
life
顯示 Conway 的生命遊戲。
qix
顯示旋轉的線條。
swarm
顯示跟著一隻黃蜂的一群蜜蜂。
-nice NiceLevel 設定 xlock 進程的系統友好程度。
-password TextString 指定密碼提示字元串。預設值為 Password:。
-saturation Value 設定彩色斜坡的飽和度。如果值為 0(零)則為灰度,如果值為 1 則為豐富的顏色。如果值為 0.4,則為適中的顏色飽和度。
-timeout Seconds 設定密碼螢幕逾時前的秒數。
-username TextString 指定在用戶名前面顯示的訊息。預設值為 Name:。
-validate TextString 指定在驗證密碼時顯示的訊息。預設值為 Validating login...。
-/+allowaccess 允許禁用訪問控制表,但仍會使本地伺服器提示輸入密碼。如果用 -KILL 命令取消了 xlock,就不會失去訪問控制表。
在遠程運行 xlock 命令時也需要這個標誌,因為對控制列表的訪問也被限制了。
-/+allowroot 允許用 root 用戶密碼解開伺服器以及啟動 xlock 命令的用戶的鎖定。
-/+echokeys 使 xlock 命令在螢幕上對每個輸入到密碼提示的字元顯示“?”(問號)字元。預設值為不顯示。
+/-enablesaver 啟用預設的螢幕保護程式。如果將延遲參數設得足夠長,可能會使某些顯示器上的螢光體燒壞。該標誌可以用作附加的預防措施。
+/-mono 使 xlock 命令在彩色顯示器上顯示單色(黑白)像素,而不是預設的彩色像素。
+/-nolock 使 xlock 命令只繪製圖案而不鎖定顯示器。按鍵或滑鼠點擊都會終止螢幕保護程式。
+/-remote 允許對 X11 伺服器進行遠程鎖定。該標誌應當小心使用。它主要旨在鎖定不能本地運行 xlock 命令的 X11 終端。如您鎖定了工作站而不是自己的機器,別人就需要您的密碼來解鎖。 -remote 選項不會使您失去切換到另一個 shell 的能力。
+/-usefirst 允許使用激活密碼螢幕時敲入的那個鍵作為密碼的第一個輸入字元。預設情況下將忽略第一次擊鍵。
+/-v 負號前綴將啟用詳細模式,它會顯示 xlock 命令將使用的選項。加號前綴為預設值。
xlock 漏洞
NetBSD的xlock存在shandow密碼被獲取的漏洞
NetBSD存在一個安全漏洞:利用xlock能顯示shandow密碼的信息,甚至在發生溢出時可以"踢掉"root許可權。Xlock程式能鎖住X server,直到輸入一個有效的密碼。在X server被鎖住時,使用帶有"-mode"選項的命 令能改變預設的顯示。雖然一些有特權的用戶通過xlock能獲取密碼信息,但是在使用帶有"-mode"的命令行產 生溢出時,一個惡意攻擊者就能獲取shadow密碼檔案。
xlock產生的快取溢出,是在初始的記憶體數據段(.data)中。Xlock讀取shadow密碼檔案獲得當前用戶 password bash後,立刻釋放許可權。這些password bash並不屬於當前的用戶,它存儲在記憶體中。 輸入帶有"-mode"的命令行,就會調用checkResources()內的strcpy()函式。在已初始化了的記憶體數據段 (.data)分配一個小的快取空間,叫old_default_mode.如果指定任意大的命令行參數,就會在記憶體數據段產生溢出。
當指定一個未知類型的"-mode"參數,在調用resources.c里的的函式Syntax()時,就會產生中斷。 Synatax()函式提供了一些錯誤命令行選項的信息。
解 決 方 法
檢查netBSD安裝xlockmore的版本號,可用下面的命令:
pkg_info -e xlockmore
如果使用版本4.16或者更早的版本,更新到xlockmore 4.16.1,它已經包含在2000年5月11號發布的包里 。
使用下面的命令移除受漏洞影響的包,以root身份:
pkg_delete -v xlockmore
在更新到xlockmore 4.16.1之前,要先下載以下的新版本(2000年5月11號以後)的package:
cd pkgsrc/x11/xlockmore; make clean; make install