- Merge the following from the English version:

r8705 -> r9228	head/ja_JP.eucJP/books/handbook/users/chapter.sgml

Submitted by:	Hiroo Ono <hiroo _at_ jp dot FreeBSD dot org>
Reference:	[doc-jp-work 1719]
This commit is contained in:
Ryusuke SUZUKI 2012-07-24 09:11:44 +00:00
parent 7309567487
commit d6f8a97cb7
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=39257

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: 1.5
Original revision: r9228
$FreeBSD$
-->
@ -478,14 +478,240 @@ passwd: done</screen>
</sect2>
</sect1>
<sect1 id="users-limiting-and-personalizing">
<title>ユーザへの制限と設定</title>
<sect1 id="users-limiting">
<title>ユーザへの制限</title>
<para>quota がシステムで有効化されていると、
システム管理者はディスク使用の上限を設定し、
ユーザは自身のディスク使用量をチェックできるようになります。
quota については、<link linkend="quotas">quota
の章</link>に書かれています。</para>
<para>あなたがマルチユーザシステムを運用しているのなら、
どのユーザもシステムに損害を与えないという信頼はおいていないのではないでしょうか。
FreeBSD は、
個々のユーザが利用できるシステムのリソースをシステム管理者が制限する方法をいくつも用意しています。
その種の制限は一般的には、ディスククォータ (quota)
とその他のリソースの制限の 2 つに分けられます。</para>
<para>ディスククォータは、
システム管理者がファイルシステムにユーザが使用できるディスク領域の量を指示する手段です。
さらに、その都度測定しなくてもユーザのディスク使用量を簡単に確認できる手段も提供しています。
クォータについては、<xref linkend="quotas"> で解説しています。</para>
<para>その他のリソースの制限とは、ユーザが消費できる
CPU、メモリなどのリソースを制限する手段のことです。
これはログインクラスを用いて定義されているもので、
この後で解説しています。</para>
<para>ログインクラスは <filename>/etc/login.conf</filename>
で定義します。詳細な働きの説明はこの節の範囲を超えますが、
&man.login.conf.5; のマニュアルに詳しく記載されています。
各ユーザにはログインクラスが割り当てられていて
(デフォルトでは <literal>default</literal> です)、
それぞれのログインクラスにはログインケーパビリティの集合が割り当てられているといえば十分でしょう。
ログインケーパビリティとは、
<literal><replaceable>名称</replaceable>=<replaceable>値</replaceable></literal>
の組のことで、<replaceable>名称</replaceable>
は周知の識別子、<replaceable>値</replaceable>
は、名称に応じて処理される任意の文字列です。
ログインクラスとケーパビリティを設定するのはどちらかといえば簡単なことで、
&man.login.conf.5; でも説明されています。</para>
<para>リソースの制限は、
2 つの点で標準的なログインケーパビリティと異なっています。
第一に、どの制限についても、ソフト (現在の)
リミットとハードリミットがあります。
ソフトリミットは、ユーザやアプリケーションが調整できますが、
ハードリミットを超えることはできません。
ユーザはハードリミットを下げることはできますが、上げることはできません。
第二に、ほとんどのリソースの制限は特定のユーザに対してプロセス毎に適用されるもので、
そのユーザが利用するリソースの総量を制限するものではありません。
ただし、この違いは制限を特別扱いすることで実現されるものであり、
ログインケーパビリティフレームワークの実装によるものではありません
(つまり、リソースの制限は、
<emphasis>実際には</emphasis>ログインケーパビリティの特別な場合ではないのです)。</para>
<para>難しい話はこのくらいにしておいて、
以下が最もよく使われるリソースの制限になります
(残りは、他のすべてのログインケーパビリティと並んで
&man.login.conf.5; に書かれています)。</para>
<variablelist>
<varlistentry>
<term><literal>coredumpsize</literal></term>
<listitem>
<para>プログラムが生成する core
ファイルのサイズにかかる制限は、
自明な理由でほかのディスク使用に関する制限に従属します
(例: <literal>filesize</literal> やディスククォータ)。それでも、
ディスク領域の消費を制御するあまり厳しくない手段としてよく使われています。
ユーザは core ファイルを自分で生成するわけではなく、
削除しないことも多いので、これを設定すれば大きなプログラム
(たとえば Emacs)
が異常終了してもディスクの空きがなくならずに済みます。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>cputime</literal></term>
<listitem>
<para>そのユーザのプロセスが消費できる CPU 時間の上限です。
これを超えたプロセスは、カーネルにより終了されます。
<note>
<para>これは、消費される CPU <emphasis>時間</emphasis>
についての制限であって、&man.top.1; や&man.ps.1;
の項目のどれかに表示される
CPU の割合に関するものではありません。
これを書いている時点では後者の制限はかけられませんし、
役にたたないでしょう。たとえば
(正当なタスクである可能性が高い)
コンパイラはたやすく一定時間
CPU を 100% 近く使ってしまいます。</para>
</note>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>filesize</literal></term>
<listitem>
<para>ユーザが所有できるファイルの大きさの上限です。<link
linkend="quotas">ディスククォータ</link> と違い、
この制限はユーザのファイルをすべてまとめた集合にではなく、
個々のファイルにかかります。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>maxproc</literal></term>
<listitem>
<para>ユーザが実行できるプロセス数の上限です。
フォアグラウンドプロセスとバックグラウンドプロセスの両方を平等に扱います。
自明な理由から、sysctl 変数 <literal>kern.maxproc</literal>
で指定されたシステムの制限を超えることはできません。
また、同時に複数ログインすることや、
パイプライン実行することは便利なことが多いので、
この値をあまり小さな値に設定すると、
そのユーザの生産性が悪化することにも注意してください。
大きなプログラムをコンパイルする場合のように、
タスクによっては複数のプロセスが実行されます (たとえば
&man.make.1;, &man.cc.1;
や、その他仲立ちとなるプリプロセッサ)。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>memorylocked</literal></term>
<listitem>
<para>これは、
1 つのプロセスがメインメモリにロックされることを要求できるメモリの最大容量です
(&man.mlock.2; をご覧ください)。&man.amd.8;
のようなシステムで重要なプログラムは、
問題発生時にスワップアウトされてしまって、
システムのスラッシングを引き起こさないように、
メインメモリへのロックを要求します。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>memoryuse</literal></term>
<listitem>
<para>これは、どの時点かを問わず、
あるプロセスが消費できる最大のメモリ容量です。
これは、メインメモリとスワップの使用量を合わせたものです。
メモリ消費を抑えるための包括的な制限ではありませんが、
手始めにはよいでしょう。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>openfiles</literal></term>
<listitem>
<para>これは、あるプロセスが開いておける最大のファイル数です。
FreeBSD では、ファイルはまた、ソケットや
IPC チャンネルを表わすのにも使われています。
ですから、あまり低い値に設定しないよう注意してください。
これに対応するシステム全体の制限は sysctl 変数
<literal>kern.maxfiles</literal> で定義されています。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>sbsize</literal></term>
<listitem>
<para>これは、あるユーザが消費できるネットワークメモリ
(つまり mbuf) の上限の量です。これは、
大量のソケットを生成する古いサービス拒否攻撃に対応するものとして作られましたが、
一般的にはネットワーク通信を制限するのに使えます。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>stacksize</literal></term>
<listitem>
<para>これは、プロセスのスタックサイズの上限です。
あるプログラムが使用しうるメモリの量を制限するには、
これだけでは十分ではありません。
したがって、他の制限と組み合わせて使わなければなりません。</para>
</listitem>
</varlistentry>
</variablelist>
<para>リソースの制限を設定するにあたり、
ほかにもいくつか覚えておかなければならないことがあります。
以下は、一般的なこつやお勧め、さまざまなコメントになります。</para>
<itemizedlist>
<listitem>
<para>システム起動時に <filename>/etc/rc</filename>
から起動されたプロセスは、<literal>daemon</literal>
ログインクラスに割り当てられます。</para>
</listitem>
<listitem>
<para>システムに付属していた
<filename>/etc/login.conf</filename>
はほとんどの制限について妥当な値になっていますが、
あなたのシステムに何がふさわしいか分かるのは、
管理者であるあなただけです。
制限をあまり緩くするとシステムを悪用しやすくしてしまいますし、
厳しくしすぎると生産性を悪化させてしまいます。</para>
</listitem>
<listitem>
<para>X Window System (X11) のユーザには、
他のユーザより多くのリソースを与えるべきかもしれません。
X11 そのものが多くのリソースを使うだけでなく、
より多くのプログラムを並行して使うことをユーザに促します。</para>
</listitem>
<listitem>
<para>多くの制限は個々のプロセスにかかるもので、
一人のユーザにまとめてかかるものではないことを忘れないでください。
例えば、openfiles を 50 に設定することは、
ユーザが動かすそれぞれのプロセスが最大
50 個のファイルを開けるということです。
したがって、あるユーザが開けられるファイルの総数は、
<literal>openfiles</literal> の値に <literal>maxproc</literal>
をかけたものになります。
同じことがメモリ消費量にもあてはまります。</para>
</listitem>
</itemizedlist>
<para>リソースの制限と、ログインクラス、
ログインケーパビリティ一般についての詳しい情報は、
それぞれのマニュアルページ、
&man.cap.mkdb.1;, &man.getrlimit.2;, &man.login.conf.5;
をご覧ください。</para>
</sect1>
<sect1 id="users-personalizing">
<title>ユーザ個別の設定</title>
<para>地域化 (localization) とは、
それぞれ異なる言語、キャラクタセット、