handbook:

                      audit/chapter.sgml     1.31 -> 1.33
                      disks/chapter.sgml    1.279 -> 1.281
                  firewalls/chapter.sgml     1.78 -> 1.80
                       geom/chapter.sgml     1.38 -> 1.40
               introduction/chapter.sgml    1.121 -> 1.123
               kernelconfig/chapter.sgml    1.176 -> 1.180
                   linuxemu/chapter.sgml    1.134 -> 1.135
                      ports/chapter.sgml    1.269 -> 1.273
               ppp-and-slip/chapter.sgml    1.176 -> 1.177
                   security/chapter.sgml    1.316 -> 1.320
                        x11/chapter.sgml    1.185 -> 1.186

Obtained from:          The FreeBSD Simplified Chinese Project
Merging work done by:   delphij@, loader@
This commit is contained in:
Fukang Chen 2008-02-09 13:33:16 +00:00
parent c377caa7c2
commit ed5b888f26
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=31457
11 changed files with 180 additions and 98 deletions

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.31
Original Revision: 1.33
$FreeBSD$
-->
@ -84,7 +84,7 @@ requirements. -->
</itemizedlist>
<warning>
<para>在 &os; 6.2 上的审计机制是试验性的,
<para>在 &os; 6.<replaceable>X</replaceable> 上的审计机制是试验性的,
在生产环境中部署之前, 应仔细评估部署试验性软件可能带来的风险。 已知的限制是,
并不是所有与安全有关的系统事件都是可审计的, 某些登录机制, 例如基于 X11
显示管理器, 以及第三方服务的登录机制, 都不会在用户的登录会话中正确配置审计。</para>
@ -169,8 +169,9 @@ requirements. -->
例如 <filename>audit_event</filename>。</para>
<para>用户空间对事件审计的支持已经作为 &os; 基本系统的一部分被安装。
在 &os; 6.3 和以后的版本中,内核对于事件审计的支持已被默认编译进内核。
对于 &os; 6.2 必须加入明确地把以下这行加入内核配置文件并编译。</para>
在 &os; 7.0 和以后的版本中,内核对于事件审计的支持已被默认编译进内核。
对于 &os; 6.<replaceable>X</replaceable>
必须加入明确地把以下这行加入内核配置文件并编译。</para>
<programlisting>options AUDIT</programlisting>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.279
Original Revision: 1.281
$FreeBSD$
-->
@ -3133,7 +3133,7 @@ Password:</screen>
<para>一个 <application>gbde</application> 分区在使用前必须被初始化,
这个初始化过程只需要执行一次:</para>
<screen>&prompt.root; <userinput>gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c</userinput></screen>
<screen>&prompt.root; <userinput>gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lock</userinput></screen>
<para>&man.gbde.8; 将打开您的编辑器,
提示您去设置在一个模板文件中的配置变量。
@ -3164,7 +3164,10 @@ sector_size = 2048
<para><command>gbde init</command> 命令为您的
<application>gbde</application> 分区创建了一个 lock 文件,
在这个例子中存储在
<filename>/etc/gbde/ad4s1c</filename>ÖС£</para>
<filename>/etc/gbde/ad4s1c.lock</filename>中。
<application>gbde</application> lock 文件必须使用
<quote>.lock</quote> 扩展名才能够被
<filename>/etc/rc.d/gbde</filename> 启动脚本正确识别。</para>
<caution>
<para><application>gbde</application> lock
@ -3180,7 +3183,7 @@ sector_size = 2048
<step>
<title>把加密分区和内核进行关联</title>
<screen>&prompt.root; <userinput>gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c</userinput></screen>
<screen>&prompt.root; <userinput>gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock</userinput></screen>
<para>在加密分区的初始化过程中您将被要求提供一个密码短语。
新的加密设备将在
@ -3255,7 +3258,7 @@ Filesystem Size Used Avail Capacity Mounted on
<step>
<title>关联 gbde 分区到内核</title>
<screen>&prompt.root; <userinput>gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c</userinput></screen>
<screen>&prompt.root; <userinput>gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock</userinput></screen>
<para>接下来系统将提示您输入在初始化加密的
<application>gbde</application> 分区时所用的密码短语。</para>
@ -3294,7 +3297,8 @@ Filesystem Size Used Avail Capacity Mounted on
&man.rc.conf.5; 来指定, 例如:</para>
<programlisting>gbde_autoattach_all="YES"
gbde_devices="ad4s1c"</programlisting>
gbde_devices="ad4s1c"
gbde_lockdir="/etc/gbde"</programlisting>
<para>在启动时将要求输入 <application>gbde</application>
的口令。 在输入正确的口令之后, <application>gbde</application>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.78
Original Revision: 1.80
$FreeBSD$
-->
@ -144,7 +144,11 @@
&man.altq.4; 和 &man.dummynet.4;。 Dummynet 在过去一直和
<acronym>IPFW</acronym> 紧密集成, 而
<acronym>ALTQ</acronym> 则需要配合
<acronym>IPF</acronym>/<acronym>PF</acronym> 使用。 IPF、
<acronym>PF</acronym> 使用。 <acronym>IPFILTER</acronym>
对于流量整形可以使用 <acronym>IPFILTER</acronym> 的 NAT
和过滤功能以及 <acronym>IPFW</acronym> 的 &man.dummynet.4; 配合,
<emphasis>或者</emphasis> 使用 <acronym>PF</acronym> 跟
<acronym>ALTQ</acronym> 的组合。
IPFW 以及 PF 都是用规则来控制是否允许数据包出入您的系统,
虽然它们采取了不同的实现方法和规则语法。</para>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.38
Original Revision: 1.40
$FreeBSD$
-->
@ -314,33 +314,23 @@ Done.</screen>
#/dev/da0s2b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1</programlisting>
<para>接下来应在当前和新 root 分区中分别建立一个 <filename>boot.config</filename> 文件。 它会
<quote>帮助</quote> 系统的 <acronym>BIOS</acronym>
从正确的驱动器上引导:</para>
<screen>&prompt.root; <userinput>echo "1:da(1,a)/boot/loader" &gt; /boot.config</userinput></screen>
<screen>&prompt.root; <userinput>echo "1:da(1,a)/boot/loader" &gt; /mnt/boot.config</userinput></screen>
<note>
<para>在所有的分区上都放这些是为了保证系统能够正确引导。
如果由于某种原因系统无法从新的根分区读数据,
则还有一根救命稻草。</para>
</note>
<para>用下面的命令来确保系统引导时会加载 <filename>geom_mirror.ko</filename></para>
<screen>&prompt.root; <userinput>echo 'geom_mirror_load="YES"' &gt;&gt; /mnt/boot/loader.conf</userinput></screen>
<screen>&prompt.root; <userinput>echo 'geom_mirror_load="YES"' &gt;&gt; /boot/loader.conf</userinput></screen>
<para>最后重新启动系统:</para>
<screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
<para>如果一切顺利, 系统将从
<devicename>gm0s1a</devicename> 设备启动, 并给出 <command>login</command>
提示等待用户登录。 如果发生错误, 请查阅接下来的故障排除环节。 我们接着将
<devicename>da0</devicename> 磁盘也加入 <devicename>gm0</devicename>
设备:</para>
<para>在启动时选择第 4 个选项进入单用户模式。 在控制台,
可以通过 &man.df.1; 的输出来确认系统是从
<devicename>gm0s1a</devicename> 启动的。</para>
<para>如果一切顺利,系统将从 <devicename>gm0s1a</devicename>
设备启动。 现在可以使用以下命令清除主磁盘并插入镜像中:</para>
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/da0 bs=512 count=79</userinput></screen>
<screen>&prompt.root; <userinput>gmirror configure -a gm0</userinput>
&prompt.root; <userinput>gmirror insert gm0 /dev/da0</userinput></screen>
@ -350,9 +340,12 @@ Done.</screen>
以及替换磁盘, 只不过它用 <devicename>data</devicename>
表示这里的 <devicename>gm0</devicename>。</para>
<para>在镜像建立后,可以用如下命令检查镜像的状态:</para>
<screen>&prompt.root; <userinput>gmirror status</userinput></screen>
<sect2>
<title>故障排除</title>
<sect3>
<title>系统拒绝引导</title>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.121
Original Revision: 1.123
$FreeBSD$
-->

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Chinese Documentation Project
Original Revision: 1.176
Original Revision: 1.180
$FreeBSD$
-->
@ -115,6 +115,77 @@
</itemizedlist>
</sect1>
<sect1 id="kernelconfig-devices">
<sect1info>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>作者 </contrib>
</author>
</authorgroup>
</sect1info>
<title>发现系统硬件</title>
<para>在尝试配置内核以前,比较明智的做法是先获得一份机器硬件的清单。
当 &os; 并不是主操作系统时,通过查看当前操作系统的配置可以很容易的
创建一份机器硬件的配置清单。举例来说, &microsoft; 的
<application>设备管理器</application> 里通常含有关于已安装硬件的重要信息。
<application>设备管理器</application> 位于控制面板。</para>
<note>
<para>某些版本的 &microsoft.windows; 有一个 <application>系统</application>
图标会指明 <application>设备管理器</application> 的位置。</para>
</note>
<para>如果机器上并不存在其他的操作系统,
系统管理员只能手动寻找这些信息了。其中的一个方法是使用
&man.dmesg.8; 工具以及 &man.man.1; 命令。&os;
上大多数的驱动程序都有一份手册页manual page列出了所支持的硬件
在系统启动的时候,被发现的硬件也会被列出。举例来说,
下面的这几行表示 <devicename>psm</devicename> 驱动找到了一个鼠标:</para>
<programlisting>psm0: &lt;PS/2 Mouse&gt; irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model Generic PS/2 mouse, device ID 0</programlisting>
<para>这个驱动需要被包含在客户制定的内核配置文件里,
或着使用 &man.loader.conf.5; 加载。</para>
<para>有时,<command>dmesg</command> 里只会显示来自系统消息的数据,
而不是系统启动时的检测信息。在这样的情况下,你可以查看文件
<filename>/var/run/dmesg.boot</filename>。</para>
<para>另一个查找硬件信息的方法是使用 &man.pciconf.8; 工具,
它能提供更详细的输出,比如:</para>
<programlisting>ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
vendor = 'Atheros Communications Inc.'
device = 'AR5212 Atheros AR5212 802.11abg wireless'
class = network
subclass = ethernet</programlisting>
<para>这个片断取自于 <command>pciconf <option>-lv</option></command>
命令的输出,显示 <devicename>ath</devicename>
驱动找到了一个无线以太网设备。输入命令
<command>man <replaceable>ath</replaceable></command>
就能查阅有关 &man.ath.4; 的手册页manual page了。</para>
<para>还可以传给 &man.man.1; 命令 <option>-k</option> 选项,
同样能获得有用的信息。例如:</para>
<screen>&prompt.root; man -k <replaceable>Atheros</replaceable></screen>
<para>能得到一份包含特定词语的手册页manual page:</para>
<programlisting>ath(4) - Atheros IEEE 802.11 wireless network driver
ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
<para>手头备有一份硬件的配置清单,
那么编译制定内核的过程就显得不那么困难了。</para>
</sect1>
<sect1 id="kernelconfig-building">
<title>建立并安装一个定制的内核</title>
<indexterm>
@ -579,8 +650,7 @@ options NFS_ROOT # NFS usable as /, requires NFSCLIENT</progra
<programlisting>options KBD_INSTALL_CDEV # install a CDEV entry in /dev</programlisting>
<para>这个选项与键盘有关。 它在 <filename>/dev</filename>
中安装一个 CDEV 项。</para>
<para>这个选项是在 <filename>/dev</filename>下建立键盘设备节点必需的。</para>
<programlisting>options ADAPTIVE_GIANT # Giant mutex is adaptive.</programlisting>
@ -593,6 +663,13 @@ options NFS_ROOT # NFS usable as /, requires NFSCLIENT</progra
一般情况下, 另一个线程将进入休眠状态并等待下一次调度。
如果您不确定是否应该这样做的话, 一般应该打开它。</para>
<note>
<para>请注意在 &os; 8.0-CURRENT 及以后的版本,所有的互斥体默认都是自适应的,
除非在编译时使用 <literal>NO_ADAPTIVE_MUTEXES</literal> 选项,
明确的指定为非自适应。因此内核全局锁Giant目前默认也是自适应的,
而且 <literal>ADAPTIVE_GIANT</literal> 选项已经从内核配置文件中移出。</para>
</note>
<indexterm>
<primary>内核选项</primary>
<secondary>SMP</secondary>

View file

@ -1,7 +1,7 @@
<!--
The FreeBSD Documentation Project
Original Revision: 1.134
Original Revision: 1.135
$FreeBSD$
-->
@ -2279,11 +2279,13 @@ options SEMUME=100 #number of UNDO keys</programlisting>
但RedHat 6.1已经使用了一个新的glibc。所以您必须安装下面额外的软件包来保证链接正常
</para>
<para><filename>compat-libs-5.2-2.i386.rpm</filename></para>
<para><filename>compat-glibc-5.2-2.0.7.2.i386.rpm</filename></para>
<para><filename>compat-egcs-5.2-1.0.3a.1.i386.rpm</filename></para>
<para><filename>compat-egcs-c++-5.2-1.0.3a.1.i386.rpm</filename></para>
<para><filename>compat-binutils-5.2-2.9.1.0.23.1.i386.rpm</filename></para>
<itemizedlist>
<listitem><para><filename>compat-libs-5.2-2.i386.rpm</filename></para></listitem>
<listitem><para><filename>compat-glibc-5.2-2.0.7.2.i386.rpm</filename></para></listitem>
<listitem><para><filename>compat-egcs-5.2-1.0.3a.1.i386.rpm</filename></para></listitem>
<listitem><para><filename>compat-egcs-c++-5.2-1.0.3a.1.i386.rpm</filename></para></listitem>
<listitem><para><filename>compat-binutils-5.2-2.9.1.0.23.1.i386.rpm</filename></para></listitem>
</itemizedlist>
<para>更多的信息,看相应的&sap;注释和&oracle;的<filename>Readme</filename>。
如果这不是选项您可以使用最初的程序或使用与最初的Redhat系统重链接的程序。

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Documentation Project
Original Revision: 1.269
Original Revision: 1.273
$FreeBSD$
-->
@ -235,6 +235,22 @@ lsof: /usr/ports/sysutils/lsof</screen>
<para>结果告诉我们这个命令<command>lsof</command> (一个系统配置程序)可以在
<filename>/usr/ports/sysutils/lsof</filename>目录中找到。</para></listitem>
<listitem>
<para>你可以使用简单的 &man.echo.1;
语句来查找某个 port 是否存在于 ports 树中。
例如:</para>
<screen>&prompt.root; <userinput>echo /usr/ports/*/*lsof*</userinput>
/usr/ports/sysutils/lsof</screen>
<para>Note that this will return any matched files downloaded into the
<filename role="directory">/usr/ports/distfiles</filename>
directory.</para>
<para>请注意这条命令将会返回下载到
<filename role="directory">/usr/ports/distfiles</filename>
目录中所有符合条件的文件。</para>
</listitem>
<listitem>
<para>还有另外的一个寻找您需要的port的方法--是用ports collecton
内嵌的搜索机制。要使用这个搜索, 您需要先到

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.176
Original Revision: 1.177
$FreeBSD$
-->
@ -1172,14 +1172,14 @@ defaultroute # put this if you want that PPP server will be your
<para>下面这个<filename>/etc/ppp/pppup</filename>脚本能自动完成这三个步骤:</para>
<programlisting>#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
@ -1199,14 +1199,14 @@ pppd /dev/tty01 19200</programlisting>
<para>使用下面这个脚本<filename>/etc/ppp/pppdown</filename>断开PPP连线</para>
<programlisting>#!/bin/sh
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
pid=`pgrep pppd`
if [ X${pid} != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill -TERM ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
@ -1220,7 +1220,7 @@ kermit -y /etc/ppp/kermit.hup
<para>通过执行<filename>/usr/etc/ppp/ppptest</filename> 看看<command>pppd</command> 是否仍在运行:</para>
<programlisting>#!/bin/sh
pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'`
pid=`pgrep pppd`
if [ X${pid} != "X" ] ; then
echo 'pppd running: PID=' ${pid-NONE}
else
@ -1314,14 +1314,14 @@ modem # modem line</programlisting>
使<application>pppd</application>以服务器方式启动:</para>
<programlisting>#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
@ -1340,14 +1340,14 @@ pppd /dev/tty01 19200</programlisting>
<para>使用脚本<filename>/etc/ppp/pppservdown</filename>停止服务器:</para>
<programlisting>#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.316
Original Revision: 1.320
$FreeBSD$
-->
@ -50,7 +50,7 @@
<listitem>
<para>如何配置 <acronym>TCP</acronym> Wrappers 以便与
<command>inetd</command> 配合使用。</para>
<application>inetd</application> 配合使用。</para>
</listitem>
<listitem>
@ -327,21 +327,16 @@
尽管有 <groupname>wheel</groupname> 比什么都没有要强一些,
但它并不是一种绝对安全的办法。</para>
<!-- XXX:
This will need updating depending on the outcome of PR bin/71147.
Personally I know what I'd like to see, which puts this in definite
need of a rewrite, but we'll have to wait and see. ceri@
-->
<para>可以使用 &man.pw.8; 命令来完全禁止某一个帐号:</para>
<para>一种间接地提高员工帐号, 乃至 <username>root</username>
权限安全性的方法, 便是采用其他的登录访问方式,
并使用 <quote>星号</quote>
替代员工加密的口令。使用 &man.vipw.8; 命令,
可以把每一个加密的口令替换成一个 <quote><literal>*</literal></quote> 符。
这将更新 <filename>/etc/master.passwd</filename> 文件,以及
用户名/口令数据库,以禁用口令登录。</para>
<screen>&prompt.root;<userinput>pw lock <replaceable>staff</replaceable></userinput></screen>
<para>如下面的员工帐号</para>
<para>这将阻止用户使用任何方法登录,包括 &man.ssh.1;。</para>
<para>另一个阻止某个帐户访问的方法是使用一个
<quote><literal>*</literal></quote> 字符替换掉加密后的口令。
这将不会与任何加密后的口令匹配,从而阻止了用户的访问。
举例说明:</para>
<programlisting>foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh</programlisting>
@ -349,23 +344,11 @@
<programlisting>foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh</programlisting>
<para>这一更改将阻止一般的登录,因为加密的口令永远不会与
<quote><literal>*</literal></quote> 匹配。一旦这么做之后,
任何员工都必须使用其他的方式来完成登录,例如,使用
&man.kerberos.1; 或者通过 &man.ssh.1; 利用 公钥/密钥对
的方式来完成登录。当使用 Kerberos 这样的工具时,通常必须加强运行
Kerberos 的服务器,以及桌面工作站的安全性。当使用 公钥/密钥对以
ssh 登录时,通常必须加固用户 <emphasis>开始</emphasis>
登录的那台机器的安全 (通常这是他们的工作站)。
在这之上还可以增加一层安全性,即在使用 &man.ssh-keygen.1;
生成它的时候,使用口令来保护它们。 如果能够用
<quote>星号</quote> 替换掉所有员工的口令,
那么,这也就保证了他们只能通过您设置的安全的方法来登录。
这将迫使所有的员工使用安全的、经过加密的连接来完成他们的会话,
而这将使得入侵者通过监听网络通讯, 从某些不相关的、
不太安全的机器上窃取口令成为不可能。</para>
<para>这会阻止用户 <username>foobar</username> 使用传统的方式登录。
但是对于使用了 <application>Kerberos</application>
或者配置了 &man.ssh.1; 公钥/密钥对的情况下,用户依然可以访问。</para>
<para>另一种间接的安全机制则是
<para>这些安全机制同样假定,
从严格受限的机器向限制更宽松的机器上登录。 例如,
如果您的服务器运行了所有的服务,那么,工作站应该什么都不运行。
为了让工作站尽可能地安全,应该避免运行任何没有必要的服务,
@ -1086,7 +1069,7 @@ Enter secret pass phrase: <userinput>&lt;secret password&gt;</userinput>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>作者</contrib>
<contrib>作者</contrib>
</author>
</authorgroup>
</sect1info>
@ -4413,14 +4396,14 @@ VII. References<co id="co-ref"></programlisting>
<para>要显示关于刚刚发出的命令的相关信息,
则应使用 &man.lastcomm.1; 工具。
<command>lastcomm</command> 可以用来显示在某一 &man.ttys.5;
<command>lastcomm</command> 命令可以用来显示在某一 &man.ttys.5;
上的用户信息, 例如:</para>
<screen>&prompt.root; <userinput>lastcomm ls
<username>trhodes</username> ttyp1</userinput></screen>
<para>将会显示出所有已知的 <username>trhodes</username>
ttyp1 终端上执行 <command>ls</command> 的情况。</para>
<literal>ttyp1</literal> 终端上执行 <command>ls</command> 的情况。</para>
<para>更多的可用选项在联机手册
&man.lastcomm.1;、 &man.acct.5; 和 &man.sa.8; 中有所介绍。</para>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.185
Original Revision: 1.186
$FreeBSD$
-->
@ -116,7 +116,9 @@
<para>X 一开始就是针对网络而设计的,所以
采用了 <quote>client-server</quote> 模型。在 X 模型中,
<quote>X server</quote> 运行在有键盘,显示器,鼠标的计算机上。
服务器用来管理显示信息,处理来自键盘和鼠标的输入等。
服务器用来管理显示信息,处理来自键盘和鼠标的输入信息,
并与其他输入输出设备交互 (比如作为输入设备的 <quote>tablet</quote>
或者作为输出设备的投影仪)。
每一个 X 应用程序 (比如 <application>XTerm</application>, 或者
<application>&netscape;</application>) 就是一个 <quote>客户程序 (client)</quote>。
客户程序给服务器发送信息,如 <quote>请在这些坐标上画一个窗口</quote>