aboutsummaryrefslogtreecommitdiff
path: root/zh_TW.Big5/books/handbook/jails/chapter.xml
diff options
context:
space:
mode:
Diffstat (limited to 'zh_TW.Big5/books/handbook/jails/chapter.xml')
-rw-r--r--zh_TW.Big5/books/handbook/jails/chapter.xml157
1 files changed, 66 insertions, 91 deletions
diff --git a/zh_TW.Big5/books/handbook/jails/chapter.xml b/zh_TW.Big5/books/handbook/jails/chapter.xml
index 65c05c16f8..0ae4ff1526 100644
--- a/zh_TW.Big5/books/handbook/jails/chapter.xml
+++ b/zh_TW.Big5/books/handbook/jails/chapter.xml
@@ -7,22 +7,18 @@
Original revision: 1.15
-->
-<chapter id="jails">
- <chapterinfo>
+<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="jails">
+ <info><title>Jails</title>
<authorgroup>
- <author>
- <firstname>Matteo</firstname>
- <surname>Riondato</surname>
- <contrib>Contributed by </contrib>
- </author>
+ <author><personname><firstname>Matteo</firstname><surname>Riondato</surname></personname><contrib>Contributed by </contrib></author>
</authorgroup>
- </chapterinfo>
+ </info>
- <title>Jails</title>
+
<indexterm><primary>jails</primary></indexterm>
- <sect1 id="jails-synopsis">
+ <sect1 xml:id="jails-synopsis">
<title>概述</title>
<para>本章將介紹 &os; jail 為何,以及如何運用之法。
@@ -65,7 +61,7 @@
</sect1>
- <sect1 id="jails-terms">
+ <sect1 xml:id="jails-terms">
<title>Jail 相關術語</title>
<para>為協助更容易理解 &os; 系統的 jail 相關部分,
@@ -118,7 +114,7 @@
</variablelist>
</sect1>
- <sect1 id="jails-intro">
+ <sect1 xml:id="jails-intro">
<title>背景故事</title>
<para>由於系統管理是困難又繁瑣的工作,因此人們開發許多好用工具,
@@ -131,7 +127,7 @@
受到許多重大改良而集大成,成為強大而靈活的子系統,目前仍在持續開發、
以提高其可用性、效能與安全。</para>
- <sect2 id="jails-what">
+ <sect2 xml:id="jails-what">
<title>何為 Jail</title>
<para>BSD-like 作業系統自 4.2BSD 起即提供 &man.chroot.2;。
@@ -153,8 +149,7 @@
chroot process 與 host 系統的其他 process 一起共享。
Jail 以『虛擬化』來擴展這模型,不單只有檔案系統的存取,還延伸到
系統帳號、&os; kernel 的網路子系統及其他系統資源的虛擬化。
- 關於這些 jail 環境存取的細微調控,請參閱 <xref
- linkend="jails-tuning"/>。</para>
+ 關於這些 jail 環境存取的細微調控,請參閱 <xref linkend="jails-tuning"/>。</para>
<para>jail 具有下列四項特色:</para>
@@ -184,17 +179,17 @@
</listitem>
</itemizedlist>
- <para>除了上述之外,jail 也可擁有自己的帳號及 <username>root</username>
- 帳號。 當然,這裡的<username>root</username> 權力會受制於 jail 環境內。
- 並且從 host 系統的角度來看,jail 的 <username>root</username>
- 並非無所不能的帳號。 此外 jail 的 <username>root</username>
+ <para>除了上述之外,jail 也可擁有自己的帳號及 <systemitem class="username">root</systemitem>
+ 帳號。 當然,這裡的<systemitem class="username">root</systemitem> 權力會受制於 jail 環境內。
+ 並且從 host 系統的角度來看,jail 的 <systemitem class="username">root</systemitem>
+ 並非無所不能的帳號。 此外 jail 的 <systemitem class="username">root</systemitem>
並不能執行其對於 &man.jail.8; 環境以外的一些關鍵性操作。
- 關於 <username>root</username> 的能力與限制,將於稍後的
+ 關於 <systemitem class="username">root</systemitem> 的能力與限制,將於稍後的
<xref linkend="jails-tuning"/> 介紹之。</para>
</sect2>
</sect1>
- <sect1 id="jails-build">
+ <sect1 xml:id="jails-build">
<title>建立和控制 Jail</title>
<para>有些系統管理者把 jail 分為下列兩種:<quote>complete(完全)</quote>
@@ -204,22 +199,21 @@
,並不影響如何建立 jail 的過程。 至於如何建立 jail 在 &man.jail.8;
內有更詳細的說明:</para>
- <screen>&prompt.root; <userinput>setenv D <replaceable>/here/is/the/jail</replaceable></userinput>
-&prompt.root; <userinput>mkdir -p $D</userinput> <co id="jailpath"/>
+ <screen>&prompt.root; <userinput>setenv D /here/is/the/jail</userinput>
+&prompt.root; <userinput>mkdir -p $D</userinput> <co xml:id="jailpath"/>
&prompt.root; <userinput>cd /usr/src</userinput>
-&prompt.root; <userinput>make world DESTDIR=$D</userinput> <co id="jailworld"/>
+&prompt.root; <userinput>make world DESTDIR=$D</userinput> <co xml:id="jailworld"/>
&prompt.root; <userinput>cd etc/</userinput> <footnote><para>&os; 6.0(含)
之後就不需這步驟。</para></footnote>
-&prompt.root; <userinput>make distribution DESTDIR=$D</userinput> <co id="jaildistrib"/>
-&prompt.root; <userinput>mount -t devfs $D/dev</userinput> <co id="jaildevfs"/></screen>
+&prompt.root; <userinput>make distribution DESTDIR=$D</userinput> <co xml:id="jaildistrib"/>
+&prompt.root; <userinput>mount -t devfs $D/dev</userinput> <co xml:id="jaildevfs"/></screen>
<calloutlist>
<callout arearefs="jailpath">
<para>首先就是先為 jail 找個家。 該路徑是在 host 系統中的 jail
- 實體位置。 習慣是放在 <filename
- class="directory">/usr/jail/<replaceable>jailname</replaceable></filename>,
+ 實體位置。 習慣是放在 <filename>/usr/jail/jailname</filename>,
<replaceable>jailname</replaceable> 請替換為該 jail 的 hostname
- 以便辨別。 通常 <filename class="directory">/usr</filename>
+ 以便辨別。 通常 <filename>/usr</filename>
會有足夠空間來存放 jail 檔案系統,對於 <quote>complete</quote> jail
而言,它通常包括了 &os; 預設安裝 base system 所有檔案的拷貝檔。</para>
</callout>
@@ -231,12 +225,11 @@
</callout>
<callout arearefs="jaildistrib">
- <para>使用 <maketarget>distribution</maketarget> 這個
+ <para>使用 <buildtarget>distribution</buildtarget> 這個
<application>make</application> target 來裝所有會用到的設定檔。
- 簡單來說該動作就是把 <filename
- class="directory">/usr/src/etc/</filename> 複製到 jail 環境內的
- <filename class="directory">/etc</filename>,也就是
- <filename class="directory">$D/etc/</filename>。</para>
+ 簡單來說該動作就是把 <filename>/usr/src/etc/</filename> 複製到 jail 環境內的
+ <filename>/etc</filename>,也就是
+ <filename>$D/etc/</filename>。</para>
</callout>
<callout arearefs="jaildevfs">
@@ -296,8 +289,8 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
<para>也可以透過手動執行 <filename>/etc/rc.d/jail</filename> script
來啟動或停止 <filename>rc.conf</filename> 所設定的 jail:</para>
- <screen>&prompt.root; <userinput>/etc/rc.d/jail start <replaceable>www</replaceable></userinput>
-&prompt.root; <userinput>/etc/rc.d/jail stop <replaceable>www</replaceable></userinput></screen>
+ <screen>&prompt.root; <userinput>/etc/rc.d/jail start www</userinput>
+&prompt.root; <userinput>/etc/rc.d/jail stop www</userinput></screen>
<para>目前尚無任何方法來很乾淨地關閉 &man.jail.8;。
此乃因為正常用來關閉系統的指令,目前尚不能在 jail 中使用。 目前關閉 jail
@@ -309,7 +302,7 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
<para>詳情請參閱 &man.jail.8; 說明。</para>
</sect1>
- <sect1 id="jails-tuning">
+ <sect1 xml:id="jails-tuning">
<title>微調與管理</title>
<para>可以為 jail 設定許多不同選項,並讓 &os; 的 host 系統與 jail
@@ -326,7 +319,7 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
</listitem>
</itemizedlist>
- <sect2 id="jails-tuning-utilities">
+ <sect2 xml:id="jails-tuning-utilities">
<title>&os; 所提供的 jail tuning 工具</title>
<para>對於 jail 設定的微調,基本上都是透過設定 &man.sysctl.8; 變數來完成。
@@ -372,9 +365,9 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
</itemizedlist>
<para>系統管理者可在 <emphasis>host system</emphasis>
- 透過修改這些設定值來增加、取消 Jail 內 <username>root</username>
+ 透過修改這些設定值來增加、取消 Jail 內 <systemitem class="username">root</systemitem>
帳號的預設限制。 請注意:有些限制是不能取消,在 &man.jail.8; 環境的
- <username>root</username> 不能掛載或卸載檔案系統。 此外亦不能載入、
+ <systemitem class="username">root</systemitem> 不能掛載或卸載檔案系統。 此外亦不能載入、
卸載 &man.devfs.8; 規則、設定防火牆規則,或執行其他需修改 kernel
資料的管理作業,例如設定 kernel 的 <varname>securelevel</varname>
值。</para>
@@ -392,50 +385,43 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
<listitem>
<para>接上(Attach)正在運作中的 jail,並在其中執行指令以進行管理工作。
- 這點在當 <username>root</username> 想乾淨關閉 jail 時相當有用,
+ 這點在當 <systemitem class="username">root</systemitem> 想乾淨關閉 jail 時相當有用,
&man.jexec.8; 也可用在 jail 中啟動 shell 以便對其進行管理,
比如:</para>
- <screen>&prompt.root; <userinput>jexec <replaceable>1</replaceable> tcsh</userinput></screen>
+ <screen>&prompt.root; <userinput>jexec 1 tcsh</userinput></screen>
</listitem>
</itemizedlist>
</sect2>
- <sect2 id="jails-tuning-admintools">
+ <sect2 xml:id="jails-tuning-admintools">
<title>&os; Ports Collection 所提供的高階管理工具</title>
- <para>在諸多 third-party 所提供的 jail 管理工具當中,<filename
- role="package">sysutils/jailutils</filename> 是最完整也最好用的。
+ <para>在諸多 third-party 所提供的 jail 管理工具當中,<package>sysutils/jailutils</package> 是最完整也最好用的。
該套件是由一系列 &man.jail.8; 管理小工具所組成的。 詳情請參閱其網站介紹
。</para>
</sect2>
</sect1>
- <sect1 id="jails-application">
+ <sect1 xml:id="jails-application">
<title>Jail 的應用</title>
- <sect2 id="jails-service-jails">
- <sect2info>
+ <sect2 xml:id="jails-service-jails">
+ <info><title>Service Jails</title>
<authorgroup>
- <author>
- <firstname>Daniel</firstname>
- <surname>Gerzo</surname>
- <contrib>Contributed by </contrib>
- <!-- 15. May 2007 -->
- </author>
+ <author><personname><firstname>Daniel</firstname><surname>Gerzo</surname></personname><contrib>Contributed by </contrib></author>
</authorgroup>
- </sect2info>
+ </info>
- <title>Service Jails</title>
+
- <para>本節主要以 &a.simon; 寫的 <ulink
- url="http://simon.nitro.dk/service-jails.html"></ulink> 為主,加上
+ <para>本節主要以 &a.simon; 寫的 <uri xlink:href="http://simon.nitro.dk/service-jails.html">http://simon.nitro.dk/service-jails.html</uri> 為主,加上
Ken Tom <email>locals@gmail.com</email> 所更新的文章。
本節介紹如何設定 &os; 以 &man.jail.8; 功能來增加額外的安全層面。
這部分假設您系統跑的是 RELENG_6_0 或更新的版本,
並且對本章先前部分均能理解。</para>
- <sect3 id="jails-service-jails-design">
+ <sect3 xml:id="jails-service-jails-design">
<title>Design</title>
<para>Jail 的主要問題之一在於如何對其進行更新、升級和管理。
@@ -446,7 +432,7 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
<warning>
<para>這些設定的前提是您對 &os; 使用、功能運用上有相當的經驗,
若下面的設定對您來說太過複雜,建議您該考慮用較簡易的系統,像是
- <filename role="package">sysutils/ezjail</filename>,其提供更簡單的
+ <package>sysutils/ezjail</package>,其提供更簡單的
&os; jail 管理方式。</para>
</warning>
@@ -496,55 +482,49 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
<itemizedlist>
<listitem>
- <para>每個 jail 都會掛載到 <filename
- class="directory">/home/j</filename> 底下的其中一個目錄。</para>
+ <para>每個 jail 都會掛載到 <filename>/home/j</filename> 底下的其中一個目錄。</para>
</listitem>
<listitem>
- <para><filename class="directory">/home/j/mroot</filename> 則是每個
+ <para><filename>/home/j/mroot</filename> 則是每個
jail 共用的模版,並對於所有 jail 而言都是唯讀。</para>
</listitem>
<listitem>
- <para>每個 jail 在 <filename class="directory">/home/j</filename>
+ <para>每個 jail 在 <filename>/home/j</filename>
底下都有一個相對應的空目錄。</para>
</listitem>
<listitem>
- <para>每個 jail 都會有 <filename
- class="directory">/s</filename> 目錄,
+ <para>每個 jail 都會有 <filename>/s</filename> 目錄,
該目錄會連到系統的可讀寫部分。</para>
</listitem>
<listitem>
- <para>每個 jail 都會在 <filename
- class="directory">/home/j/skel</filename> 目錄建立自屬的可讀寫空間
+ <para>每個 jail 都會在 <filename>/home/j/skel</filename> 目錄建立自屬的可讀寫空間
。</para>
</listitem>
<listitem>
- <para>每個 jailspace (各 jail 可讀寫的部分) 都建在 <filename
- class="directory">/home/js</filename>>。</para>
+ <para>每個 jailspace (各 jail 可讀寫的部分) 都建在 <filename>/home/js</filename>&gt;。</para>
</listitem>
</itemizedlist>
<note>
<para>這邊假設所有 jail 都放在
- <filename class="directory">/home</filename> 分割區。 當然,
+ <filename>/home</filename> 分割區。 當然,
也可以依自身需求更改,但接下來的例子中,
也要記得修改相對應的地方。</para>
</note>
<!-- Insert an image or drawing here to illustrate the example. -->
</sect3>
- <sect3 id="jails-service-jails-template">
+ <sect3 xml:id="jails-service-jails-template">
<title>建立模版</title>
<para>本節將逐步介紹如何建立 jail 要用的唯讀主模版。</para>
<para>建議先把 &os; 系統升級到最新的 -RELEASE 分支,至於如何做請參閱
Handbook 的
- <ulink url="&url.books.handbook;/makeworld.html">相關章節</ulink>。
- 當更新完成之後,就要進行 buildworld 程序,此外還要裝 <filename
- role="package">sysutils/cpdup</filename> 套件。
+ <link xlink:href="&url.books.handbook;/makeworld.html">相關章節</link>。
+ 當更新完成之後,就要進行 buildworld 程序,此外還要裝 <package>sysutils/cpdup</package> 套件。
我們將用 &man.portsnap.8; 來下載 &os; Ports Collection,
- 在 Handbook 中對 <ulink
- url="&url.books.handbook;/portsnap.html">Portsnap 章節</ulink>
+ 在 Handbook 中對 <link xlink:href="&url.books.handbook;/portsnap.html">Portsnap 章節</link>
中有相關介紹,初學者可以看看。</para>
<procedure>
@@ -587,8 +567,7 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
</step>
<step>
<para>現在把可讀寫的檔案系統以 symlink 方式連到唯讀的檔案系統。
- 請確認 symbolic link 是否有正確連到 <filename
- class="directory">s/</filename> 目錄,若目錄建立方式不對,
+ 請確認 symbolic link 是否有正確連到 <filename>s/</filename> 目錄,若目錄建立方式不對,
或指向位置不對,可能會導致安裝失敗。</para>
<screen>&prompt.root; <userinput>cd /home/j/mroot</userinput>
@@ -617,7 +596,7 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
</procedure>
</sect3>
- <sect3 id="jails-service-jails-creating">
+ <sect3 xml:id="jails-service-jails-creating">
<title>建立 Jail</title>
<para>現在已經有完整的 &os; jail 模版,可以在
@@ -671,11 +650,8 @@ jail_www_devfs_enable="YES"</programlisting>
<warning>
<para>之所以要把
<varname>jail_<replaceable>name</replaceable>_rootdir</varname>
- 從 <filename class="directory">/home</filename> 改為 <filename
- class="directory">/usr/home</filename> 的原因在於 &os;
- 預設安裝的 <filename
- class="directory">/home</filename> 目錄其實只是指向 <filename
- class="directory">/usr/home</filename> 的 symbolic link。 而
+ 從 <filename>/home</filename> 改為 <filename>/usr/home</filename> 的原因在於 &os;
+ 預設安裝的 <filename>/home</filename> 目錄其實只是指向 <filename>/usr/home</filename> 的 symbolic link。 而
<varname>jail_<replaceable>name</replaceable>_rootdir</varname>
變數須為 <emphasis>實體目錄</emphasis> 而非 symbolic link,
否則 jail 會拒絕啟動。 可以用 &man.realpath.1;
@@ -688,8 +664,7 @@ jail_www_devfs_enable="YES"</programlisting>
<screen>&prompt.root; <userinput>mkdir /home/j/ns /home/j/mail /home/j/www</userinput></screen>
</step>
<step>
- <para>為每個 jail 安裝可讀寫的模版。 請注意這時要用 <filename
- role="package">sysutils/cpdup</filename>
+ <para>為每個 jail 安裝可讀寫的模版。 請注意這時要用 <package>sysutils/cpdup</package>
,它能確保每個目錄都有正確複製。</para>
<!-- keramida: Why is cpdup required here? Doesn't cpio(1)
already include adequate functionality for performing this
@@ -728,7 +703,7 @@ jail_www_devfs_enable="YES"</programlisting>
<screen>&prompt.root; <userinput>jexec 3 tcsh</userinput></screen>
</sect3>
- <sect3 id="jails-service-jails-upgrading">
+ <sect3 xml:id="jails-service-jails-upgrading">
<title>升級</title>
<para>有時由於安全問題或者 jail 內要用新功能,而需要把 &os;
@@ -740,7 +715,7 @@ jail_www_devfs_enable="YES"</programlisting>
<procedure>
<step>
<para>首先是照一般方式來升級 host system,再新增臨時的唯讀模版
- <filename class="directory">/home/j/mroot2</filename>:</para>
+ <filename>/home/j/mroot2</filename>:</para>
<screen>&prompt.root; <userinput>mkdir /home/j/mroot2</userinput>
&prompt.root; <userinput>cd /usr/src</userinput>
@@ -749,7 +724,7 @@ jail_www_devfs_enable="YES"</programlisting>
&prompt.root; <userinput>cpdup /usr/src usr/src</userinput>
&prompt.root; <userinput>mkdir s</userinput></screen>
- <para>同樣地,在執行 <maketarget>installworld</maketarget>
+ <para>同樣地,在執行 <buildtarget>installworld</buildtarget>
時會建立一些用不著的目錄,請把這些砍掉:</para>
<screen>&prompt.root; <userinput>chflags -R 0 var</userinput>
@@ -785,7 +760,7 @@ jail_www_devfs_enable="YES"</programlisting>
&prompt.root; <userinput>umount /home/j/www</userinput></screen>
<note>
- <para>可讀寫空間(<filename class="directory">/s</filename>)
+ <para>可讀寫空間(<filename>/s</filename>)
是掛載在唯讀檔案系統底下,故要先卸載。</para>
</note>
</step>