- Merge the following from the English version:

r41037 -> r42873	head/ja_JP.eucJP/books/handbook/users/chapter.xml

Submitted by:	Yuta MASUMOTO <owata _at_ club dot kyutech dot ac dot jp>
		ryusuke
Reviewed by:	Yuta MASUMOTO <owata _at_ club dot kyutech dot ac dot jp>
		ryusuke
This commit is contained in:
Ryusuke SUZUKI 2013-10-25 09:48:55 +00:00
parent 0911ade3b2
commit e784d12453
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=43040

View file

@ -3,7 +3,7 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: r41037
Original revision: r42873
$FreeBSD$
-->
@ -30,43 +30,31 @@
システムを使うためには、
どのユーザもアカウントがなければなりません。</para>
<para>この章を読むと、以下のことがわかります。</para>
<para>この章では、以下のことを説明します。</para>
<itemizedlist>
<listitem>
<para>&os; のさまざまなユーザアカウントの違い</para>
<para>&os;
システムにおけるさまざまな種類のユーザアカウントについて</para>
</listitem>
<listitem>
<para>ユーザアカウントを追加したり削除する方法</para>
<para>ユーザアカウントを追加、削除および変更する方法</para>
</listitem>
<listitem>
<para>ユーザの名前やシェルなど、アカウントの細目を変更する方法</para>
<para>ユーザやグループが利用できるリソースの上限を制御する方法</para>
</listitem>
<listitem>
<para>アカウント毎に制限をかけて、メモリや CPU 時間など、
アカウントやグループに対してアクセスが許可される資源を制御する方法</para>
</listitem>
<listitem>
<para>アカウント管理を楽にするためのグループの使い方</para>
</listitem>
</itemizedlist>
<para>この章を読む前に</para>
<itemizedlist>
<listitem>
<para><link linkend="basics">&unix;&os; の基礎知識</link>
を理解しておいてください。</para>
<para>グループの作成、
およびグループにユーザをメンバとして追加する方法</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="users-introduction">
<title>はじめに</title>
<title>アカウントの種類</title>
<para>&os; システムへアクセスするには、
かならずアカウントが使われ、
@ -74,8 +62,73 @@
ユーザとアカウントの管理は、重要なものです。
</para>
<para>&os; システム上のどのアカウントにも、
そのアカウントを識別するための情報がなにかしら結び付けられています。</para>
<para>アカウントには大きく分けて三種類あります。
システムアカウント (system accounts)、ユーザアカウント (user accounts)、
そしてスーパーユーザ (superuser) です。</para>
<sect2 id="users-system">
<title>システムアカウント</title>
<indexterm>
<primary>アカウント</primary>
<secondary>システム</secondary>
</indexterm>
<para>システムアカウントは、DNS、メール、
ウェブサーバといった各種サービスを運用するために使われます。
この目的は、セキュリティを確保するためです。
もしすべてのサービスがスーパーユーザで実行されていると、
それらのサービスはどんな動作でも可能となり、
適切な制限を適用することができません。</para>
<indexterm>
<primary>アカウント</primary>
<secondary><username>daemon</username></secondary>
</indexterm>
<indexterm>
<primary>アカウント</primary>
<secondary><username>operator</username></secondary>
</indexterm>
<para>システムアカウントの具体例は、
<username>daemon</username>, <username>operator</username>,
<username>bind</username>, <username>news</username> および
<username>www</username> といったものです。</para>
<indexterm>
<primary>アカウント</primary>
<secondary><username>nobody</username></secondary>
</indexterm>
<para><username>nobody</username>
は通常の特権を持たないシステムアカウントです。
しかし、<username>nobody</username>
を利用するサービスが増えれば増えるほど、
それに所属するファイルやプロセスも増え、
その特権も大きくなるということを忘れないようにしてください。</para>
</sect2>
<sect2 id="users-user">
<title>ユーザアカウント</title>
<indexterm>
<primary>アカウント</primary>
<secondary>user</secondary>
</indexterm>
<para>ユーザアカウントは、
主に現実のユーザがシステムにアクセスする手段として用いられるものです。
システムにアクセスするすべてのユーザは、
それぞれ唯一のユーザアカウントを持つべきです。
こうすることで管理者は誰が何を行なっているかがわかりますし、
他の人の設定を壊してしまうようなことを避けることができます。</para>
<para>それぞれのユーザは快適にシステムを利用するため、
シェル、エディタ、キー設定、言語など、
各自の環境をセットアップすることができます。</para>
<para>&os; システム上のどのアカウントにも、
以下のような情報がなにかしら結び付けられています。</para>
<variablelist>
<varlistentry>
@ -89,7 +142,7 @@
有効なユーザ名を作成するには &man.passwd.5;
に記載されているいくつもの規則があります。
アプリケーションの上位互換性を保つために、
8 文字以下の小文字からなるユーザ名が一般的です。</para>
8 文字以下の小文字からなるユーザ名を使うことが推奨されています。</para>
</listitem>
</varlistentry>
@ -97,10 +150,9 @@
<term>パスワード</term>
<listitem>
<para>それぞれのアカウントにはパスワードがあります。
<para>それぞれのユーザアカウントにはパスワードがあります。
パスワードは空白にもできますが、
行うべきではありません。
すべてのアカウントにはパスワードをつけるべきです。</para>
行うべきではありません。</para>
</listitem>
</varlistentry>
@ -109,21 +161,12 @@
<listitem>
<para>ユーザ ID (<acronym>UID</acronym>) は、
システムがユーザを一意に識別するための、
伝統的には 0 から 65535<footnote
id="users-largeuidgid">
<para><acronym>UID</acronym><acronym>GID</acronym>
には 4294967295 までの数を使えますが、
そのような ID は、ID
の値に対して仮定を置いているソフトウェアで問題を起こす可能性があります。</para>
</footnote>の間の数値です。内部的には、&os; はユーザの識別に
<acronym>UID</acronym> を使っています。
&os; システムがユーザを一意に識別するための数値です。
ユーザ名を指定できるコマンドは、
ユーザ名を <acronym>UID</acronym> に変換してから扱っています。
好ましくありませんが、同じ <acronym>UID</acronym>
を持つ異なるユーザ名のアカウントがいくつあってもよいということになります。
&os; に限っていうと、
これらのアカウントはひとりのユーザとして扱われます。</para>
65535 より大きな UID は、32
ビット以上の整数に対応していないソフトウェアにおいて互換性の問題を引き起こす可能性があるので、
65535 以下の UID を使用することが推奨されています。</para>
</listitem>
</varlistentry>
@ -132,12 +175,13 @@
<listitem>
<para>グループ ID (<acronym>GID</acronym>) は、
ユーザが属する第一グループを一意に識別するための、
伝統的には 0 から 65535<footnoteref linkend="users-largeuidgid"/>
の間の数値です。グループは、<acronym>UID</acronym> ではなく、
ユーザが属する第一グループを一意に識別するための数値です。
グループは、<acronym>UID</acronym> ではなく、
ユーザの <acronym>GID</acronym> に基づいて資源へのアクセスを制御する仕組みです。
これは、ある種の設定ファイルのサイズを大幅に小さくします。
ユーザは、複数のグループに所属できます。</para>
ユーザは、複数のグループに所属できます。
65535 より大きな GID は、ソフトウェアに問題を引き起こす可能性があるので、
65535 以下の GID を使うことを推奨します。</para>
</listitem>
</varlistentry>
@ -147,7 +191,8 @@
<listitem>
<para>ログインクラスはグループの仕組みを拡張したもので、
別々のユーザに対してシステムを調整する時に、
さらなる柔軟性を提供します。</para>
さらなる柔軟性を提供します。ログインクラスの詳細については、
<xref linkend="users-limiting"/> で説明します。</para>
</listitem>
</varlistentry>
@ -157,7 +202,8 @@
<listitem>
<para>デフォルトでは、&os;
は定期的にパスワードを変更することをユーザに強制しません。
これをユーザごとに設定して、一部またはすべてのユーザに、
これを &man.pw.8; を使用してユーザごとに設定し、
一部またはすべてのユーザに、
一定の時間がたったらパスワードを強制的に変更させることができます。</para>
</listitem>
</varlistentry>
@ -169,7 +215,7 @@
<para>デフォルトでは、&os; はアカウントを失効させません。
たとえば学校で生徒のアカウントがある場合など、
限られた期間だけのアカウントを作成するなら、
そのアカウントがいつ失効するか指定できます。
そのアカウントがいつ失効するか &man.pw.8; を使って指定できます。
有効期間が経過したら、
そのアカウントのディレクトリやファイルは残っていますが、
システムへのログインはできなくなります。</para>
@ -182,7 +228,9 @@
<listitem>
<para>&os; ではユーザ名でアカウントを一意に識別しますが、
必ずしもユーザの本名を反映したものではありません。
この情報をアカウントに関連付けることもできます。</para>
この情報をアカウントに関連付けることもできます。
この情報は、コメントのように、空白、大文字、および
8 字以上で記載できます。</para>
</listitem>
</varlistentry>
@ -214,29 +262,20 @@
</listitem>
</varlistentry>
</variablelist>
</sect2>
<para>
アカウントには大きく分けて三種類のものがあります。それは、
<link linkend="users-superuser">スーパーユーザ (superuser)</link>
<link linkend="users-system">システムアカウント (system accounts)</link>
そして<link linkend="users-user">ユーザアカウント (user accounts)</link> です。
スーパーユーザのアカウントは通常 <username>root</username> と呼ばれ、
無制限の特権を持つためにシステムの管理に用いられます。
また、システムアカウントはサービスの運用に用いられ、
ユーザアカウントは、
実際のユーザに割り当てられ、ログインしてシステムを利用するために使われます。</para>
<sect2 id="users-superuser">
<sect2 id="users-superuser">
<title>スーパーユーザアカウント</title>
<indexterm>
<primary>アカウント</primary>
<secondary>スーパーユーザ (root)</secondary>
</indexterm>
<para>スーパーユーザアカウントは通常
<username>root</username> と呼ばれ、
システム管理を行なうために使われます
このアカウントはメールのやりとり、システムの調査、
システム管理を行なうために使われ、権限に制限がありません。
そのため、このアカウントはメールのやりとり、システムの調査、
プログラミングといった日常的な作業を行なうために使われるべきものではありません。</para>
<para>その理由は、スーパーユーザが通常のユーザアカウントと異なり、
@ -245,89 +284,58 @@
システムに重大な影響を与えてしまう恐れがあるのです。
ユーザアカウントでは、
仮に操作を間違えてもシステムを壊してしまうようなことはできないようになっています。
したがって特権を必要としていないのであれば
できるだけいつもユーザアカウントを利用する方が望ましいと言えるでしょう</para>
そのため、ユーザアカウントでログインし
高い権限が必要なコマンドを実行するときだけスーパーユーザになることが推奨されています</para>
<para>スーパーユーザで実行するコマンドはいつでも、
二回、三回と確認してください。
なぜならスペースが多かったり、文字が欠けていたりするだけで、
取り返しのつかないデータの破壊につながる可能性があるからです。</para>
<para>常にシステム管理者用にユーザアカウントを作成し、
一般的な使用においては、そのアカウントを使ってください。
これはマルチユーザモード、シングルユーザモードを問わず、
同様にあてはまります。
この章のうしろの方では、アカウントの追加と通常のユーザから
スーパーユーザへと移行する手順について扱います。</para>
</sect2>
<para>スーパーユーザの権限を得るには、さまざまな方法があります。
<username>root</username> ユーザとしてログインする方法もありますが、
これはまったくお勧めできません。</para>
<sect2 id="users-system">
<title>システムアカウント</title>
<para>スーパーユーザの権限を手に入れるには、かわりに &man.su.1;
を使って下さい。
<literal>-</literal> オプションをつけて実行すると、
実行したユーザに root ユーザの環境が設定されます。
このコマンドは <groupname>wheel</groupname>
グループに入ってるユーザのみが実行でき、他のユーザは実行出来ません。
また、実行時には <username>root</username>
ユーザのパスワードを必要とします。</para>
<indexterm>
<primary>アカウント</primary>
<secondary>システム</secondary>
</indexterm>
<para>システムアカウントとは、DNS、メール、
ウェブサーバといった各種サービスを運用するために使われます。
この目的は、セキュリティを確保するためです。
もしサービスがスーパーユーザで実行されていると、
それらのサービスは (本来意図しないような)
どんな動作でも可能となり、適切な制限を適用することができません。</para>
<para>以下の例では、<command>make install</command>
を行うときにスーパーユーザの権限が必要なので、
このコマンドを実行する時だけユーザはスーパーユーザになります。
コマンドを実行したら、ユーザは <command>exit</command>
を実行してスーパーユーザからログアウトし、
通常のユーザアカウントの権限に戻ります。</para>
<indexterm>
<primary>アカウント</primary>
<secondary><username>daemon</username></secondary>
</indexterm>
<indexterm>
<primary>アカウント</primary>
<secondary><username>operator</username></secondary>
</indexterm>
<para>システムアカウントの具体例として、
<username>daemon</username>, <username>operator</username>,
<username>bind</username>, <username>news</username> および
<username>www</username>
といったものがあります。</para>
<example>
<title>スーパーユーザ権限でプログラムをインストールする</title>
<indexterm>
<primary>アカウント</primary>
<secondary><username>nobody</username></secondary>
</indexterm>
<para><username>nobody</username>
ユーザは通常の特権を持たないシステムユーザです。
しかし、<username>nobody</username>
を利用するサービスが増えれば増えるほど、
それに所属するファイルやプロセスも増え、
その特権も大きくなるということを忘れないようにしてください。</para>
</sect2>
<screen>&prompt.user; <userinput>configure</userinput>
&prompt.user; <userinput>make</userinput>
&prompt.user; <userinput>su -</userinput>
Password:
&prompt.root; <userinput>make install</userinput>
&prompt.root; <userinput>exit</userinput>
&prompt.user;</screen>
</example>
<sect2 id="users-user">
<title>ユーザアカウント</title>
<indexterm>
<primary>アカウント</primary>
<secondary>user</secondary>
</indexterm>
<para>ユーザアカウントは、
主に現実のユーザがシステムにアクセスする手段として用いられるものです。
このアカウントは利用するユーザとシステム環境を分離します。
そのため、システムや他のユーザに危害をおよぼす危険性をなくし、また、
他に影響を与えることなくユーザ自身の環境をカスタマイズすることを可能にしています。</para>
<para>システムにアクセスするすべてのユーザは、
それぞれ唯一のユーザアカウントを持つべきです。
こうすることで管理者は誰が何を行なっているかがわかりますし、
他の人の設定を壊してしまったり、
他人のメールを読んでしまうようなことを避けることができます。</para>
<para>それぞれのユーザは快適にシステムを利用するため、
シェル、エディタ、キー設定、言語など、
各自の環境をセットアップすることができます。</para>
</sect2>
<para>1 人の管理者が一台のマシン、
もしくは小規模なネットワークを管理する場合には、
&man.su.1; のフレームワークはうまく機能するでしょう。
この代わりとなるのは、
<filename role="package">security/sudo</filename> package または port
です。これはログ機能や、
スーパーユーザの権限で実行できるユーザやコマンドを設定できます。</para>
</sect2>
</sect1>
<sect1 id="users-modifying">
<title>アカウント情報の変更</title>
<title>アカウント情報の管理</title>
<indexterm>
<primary>アカウント</primary>
@ -752,14 +760,10 @@ passwd: done</screen>
<term><literal>coredumpsize</literal></term>
<listitem>
<indexterm><primary>coredumpsize</primary></indexterm>
<indexterm><primary>ユーザに対する制限</primary>
<secondary>coredumpsize</secondary>
</indexterm>
<para>プログラムが生成する core
ファイルのサイズにかかる制限は、
ファイルのサイズ<indexterm><primary>coredumpsize</primary></indexterm>にかかる制限は、
<literal>filesize</literal> やディスククォータなどの、
ほかのディスク使用に関する制限に従属します。
ほかのディスク使用に関する制限<indexterm><primary>ユーザに対する制限</primary><secondary>coredumpsize</secondary></indexterm>に従属します。
この制限は、ディスク領域の消費を制御するあまり厳しくない手段としてよく使われています。
ユーザは core ファイルを自分で生成するわけではなく、
削除しないことも多いので、
@ -771,12 +775,7 @@ passwd: done</screen>
<term><literal>cputime</literal></term>
<listitem>
<indexterm><primary>cputime</primary></indexterm>
<indexterm>
<primary>ユーザに対する制限</primary>
<secondary>cputime</secondary>
</indexterm>
<para>そのユーザのプロセスが消費できる CPU 時間の上限です。
<para>そのユーザのプロセスが消費できる CPU 時間<indexterm><primary>cputime</primary></indexterm><indexterm><primary>ユーザに対する制限</primary><secondary>cputime</secondary></indexterm> の上限です。
これを超えたプロセスは、カーネルにより終了されます。</para>
<note>
@ -792,12 +791,7 @@ passwd: done</screen>
<term><literal>filesize</literal></term>
<listitem>
<indexterm><primary>filesize</primary></indexterm>
<indexterm>
<primary>ユーザに対する制限</primary>
<secondary>filesize</secondary>
</indexterm>
<para>ユーザが所有できるファイルの大きさの上限です。<link
<para>ユーザが所有できるファイルの大きさ<indexterm><primary>filesize</primary></indexterm><indexterm><primary>ユーザに対する制限</primary><secondary>filesize</secondary></indexterm>の上限です。<link
linkend="quotas">ディスククォータ</link> と違い、
この制限はユーザのファイルをすべてまとめた集合にではなく、
個々のファイルにかかります。</para>
@ -808,12 +802,7 @@ passwd: done</screen>
<term><literal>maxproc</literal></term>
<listitem>
<indexterm><primary>maxproc</primary></indexterm>
<indexterm>
<primary>ユーザに対する制限</primary>
<secondary>maxproc</secondary>
</indexterm>
<para>ユーザが実行できるプロセス数の上限です。
<para>ユーザが実行できるプロセス数の上限<indexterm><primary>maxproc</primary></indexterm><indexterm><primary>ユーザに対する制限</primary><secondary>maxproc</secondary></indexterm>です。
フォアグラウンドプロセスとバックグラウンドプロセスの両方を扱います。
この上限は、&man.sysctl.8; 変数
<varname>kern.maxproc</varname>
@ -831,13 +820,8 @@ passwd: done</screen>
<term><literal>memorylocked</literal></term>
<listitem>
<indexterm><primary>memorylocked</primary></indexterm>
<indexterm>
<primary>ユーザに対する制限</primary>
<secondary>memorylocked</secondary>
</indexterm>
<para>これは、1 つのプロセスが &man.mlock.2;
によりメインメモリにロックされることを要求できるメモリの最大容量です
によりメインメモリにロックされることを要求できるメモリ<indexterm><primary>memorylocked</primary></indexterm><indexterm><primary>ユーザに対する制限</primary><secondary>memorylocked</secondary></indexterm>の最大容量です。
&man.amd.8; のようなシステムで重要なプログラムは、
メインメモリへロックして、システムがスワップする際に、
ディスクのスラッシングを引き起こさないようにします。</para>
@ -848,12 +832,8 @@ passwd: done</screen>
<term><literal>memoryuse</literal></term>
<listitem>
<indexterm><primary>memoryuse</primary></indexterm>
<indexterm><primary>ユーザに対する制限</primary>
<secondary>memoryuse</secondary>
</indexterm>
<para>これは、どの時点かを問わず、
あるプロセスが消費できる最大のメモリ容量です。
あるプロセスが消費できる最大のメモリ容量<indexterm><primary>memoryuse</primary></indexterm><indexterm><primary>ユーザに対する制限</primary><secondary>memoryuse</secondary></indexterm>です。
これは、メインメモリとスワップの使用量を合わせたものです。
メモリ消費を抑えるための包括的な制限ではありませんが、
手始めにはよいでしょう。</para>
@ -864,11 +844,7 @@ passwd: done</screen>
<term><literal>openfiles</literal></term>
<listitem>
<indexterm><primary>openfiles</primary></indexterm>
<indexterm><primary>ユーザに対する制限</primary>
<secondary>openfiles</secondary>
</indexterm>
<para>これは、あるプロセスが開いておける最大のファイル数です。
<para>これは、あるプロセスが開いておける最大のファイル数<indexterm><primary>openfiles</primary></indexterm><indexterm><primary>ユーザに対する制限</primary><secondary>openfiles</secondary></indexterm>です。
&os; では、ファイルはまた、ソケットや
IPC チャンネルを表わすのにも使われています。
ですから、あまり低い値に設定しないよう注意してください。
@ -882,12 +858,8 @@ passwd: done</screen>
<term><literal>sbsize</literal></term>
<listitem>
<indexterm><primary>sbsize</primary></indexterm>
<indexterm><primary>ユーザに対する制限</primary>
<secondary>sbsize</secondary>
</indexterm>
<para>これは、あるユーザが消費できるネットワークメモリ
(つまり mbuf) の上限の量です。ユーザは、
(つまり mbuf<indexterm><primary>sbsize</primary></indexterm><indexterm><primary>ユーザに対する制限</primary><secondary>sbsize</secondary></indexterm>) の上限の量です。ユーザは、
ネットワーク通信を制限するのに使えます。</para>
</listitem>
</varlistentry>
@ -896,11 +868,8 @@ passwd: done</screen>
<term><literal>stacksize</literal></term>
<listitem>
<indexterm><primary>stacksize</primary></indexterm>
<indexterm><primary>ユーザに対する制限</primary>
<secondary>stacksize</secondary>
</indexterm>
<para>これは、プロセスのスタックサイズの上限です。
<para>これは、プロセスのスタックサイズ<indexterm><primary>stacksize</primary></indexterm><indexterm><primary>ユーザに対する制限</primary><secondary>stacksize</secondary></indexterm>の上限です。
あるプログラムが使用しうるメモリの量を制限するには、
これだけでは十分ではありません。
したがって、他の制限と組み合わせて使わなければなりません。</para>
@ -956,7 +925,7 @@ passwd: done</screen>
</sect1>
<sect1 id="users-groups">
<title>グループ</title>
<title>グループの管理</title>
<indexterm><primary>グループ</primary></indexterm>
<indexterm>