标题：xlock
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