From nobody Fri Sep 16 10:32:57 2022 X-Original-To: dev-commits-doc-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4MTVlF3d59z4cLJ7 for ; Fri, 16 Sep 2022 10:32:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4MTVlF3FCLz49Dn; Fri, 16 Sep 2022 10:32:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1663324377; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wzLnrGR7mMqY/IB4dBpjuUPY8yEufw/4oolo6IQirgE=; b=RrS2/bECzQmjSNA9s34803V2sCDx5nFnxomfbDor/UfVAjWfFajFf1DcJ/zcKLZ06JLC9P TvosaXD98r0wYoageTcAXQyyQckEEuu+tjD+MVDO50ws40zLgGOamzqKbhz2m8IdNKEZxT 3nuYwLV322Hp2Jg908s4/ZFt0ziROGIlND/Q54j96NX/ICL6KYyR30c9uSEpOVOVNCcS7V eXG5YIcyqpEm9SlW2hjUImaDVh5rmYj4xqHK/Y6u7vH0mo3LUKVndUmDiM3qgtJqBszdkF u9a/qfB2jt/SHM7MAvFV+ZXjgl6oqB+aid4c6MTMqXqSwOsiaVe0kffwr1hqfA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4MTVlF2GQzzKVN; Fri, 16 Sep 2022 10:32:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 28GAWveU088757; Fri, 16 Sep 2022 10:32:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 28GAWvUw088756; Fri, 16 Sep 2022 10:32:57 GMT (envelope-from git) Date: Fri, 16 Sep 2022 10:32:57 GMT Message-Id: <202209161032.28GAWvUw088756@gitrepo.freebsd.org> To: doc-committers@FreeBSD.org, dev-commits-doc-all@FreeBSD.org From: Ryusuke SUZUKI Subject: git: db4cfb7d69 - main - ja/handbook: Upadate basic chapter List-Id: Commit messages for all branches of the doc repository List-Archive: https://lists.freebsd.org/archives/dev-commits-doc-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-doc-all@freebsd.org X-BeenThere: dev-commits-doc-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ryusuke X-Git-Repository: doc X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: db4cfb7d692f12ec203788f243901733249544c7 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1663324377; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wzLnrGR7mMqY/IB4dBpjuUPY8yEufw/4oolo6IQirgE=; b=xlB6P3+FK8ZLNKDa6wcS3AkUN5SGI92QPgY4NvijHRQiqVPW3MaGkAMIx7k6yAi2br4Soi KsHeTxGpueJ8z0E3z4WnX+WoeQktTgB4vi2zjgR+qIs1bVb2rPCfliZm+cIN7BbBtge9sm RrEskQ6g18ieTzmT44UrZmu448czbwB2so18a8uykf8QV0T0ORZvlLED2fqOO1bnQ9LPQq RJ7mkvCPdPlFkltY6EHZ0g4Z7c9QRyr93A2vTvI2Yydm0i04oJrDDOLRsoJVwXgqm5E2dQ TZjc+n5bTZrgCz1xf+96XGvvot3HQm5YGDnenGv8fB+wDntvmoHnAx0ejmgG+w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1663324377; a=rsa-sha256; cv=none; b=lk0r94VTLWm/FE1PMteYCIKoNFpYyr8uLeQGtiuu8nS+0pMewycD6P17BjXOrUyq+Rango /WMCuv6jg9Sc3NPQmFuJERMsT73zVUZzE9APYv1xPmf6/TKepdi5dBK6RNK+Ak034pu5iM TFqC6g/+THJOuNrnUhBoQQG0dUAadWV4cD3k9xNasppEnpjIZcOzuHbaOEzvgixeJWMaTM SwY+qyv0wl1pCYCD6ljvMQVKyQZ65Ax0zRUgETxY1vxgVKGf3pp8db7TaBe2bEInRacJ5n 2M22R5A0zqchSxLueiOFN5IexAh5XH3czFiWYNDYrGCeLCNq4K/S28aX02cWrw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by ryusuke: URL: https://cgit.FreeBSD.org/doc/commit/?id=db4cfb7d692f12ec203788f243901733249544c7 commit db4cfb7d692f12ec203788f243901733249544c7 Author: Ryusuke SUZUKI AuthorDate: 2022-09-16 10:32:16 +0000 Commit: Ryusuke SUZUKI CommitDate: 2022-09-16 10:32:16 +0000 ja/handbook: Upadate basic chapter f846d4ea99 -> 4225fc88f3 --- .../content/ja/books/handbook/basics/_index.adoc | 497 ++++++++++++++++++++- 1 file changed, 488 insertions(+), 9 deletions(-) diff --git a/documentation/content/ja/books/handbook/basics/_index.adoc b/documentation/content/ja/books/handbook/basics/_index.adoc index ee652d1c61..950107971e 100644 --- a/documentation/content/ja/books/handbook/basics/_index.adoc +++ b/documentation/content/ja/books/handbook/basics/_index.adoc @@ -56,6 +56,7 @@ FreeBSD の初心者であれば、この章を読んでおいた方がきっと この章を読んで分かることは、次のようなことです。 * 仮想コンソールの使い方と設定方法 +* FreeBSD システム上でユーザやグループを作成し管理する方法 * UNIX(R) のファイルの許可属性の仕組みと FreeBSD のファイルフラグについて * FreeBSD のファイルシステムの構成 * FreeBSD のディスク構成 @@ -135,11 +136,9 @@ ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure .... 仮想コンソールを無効にするには、無効にしたい仮想コンソールの行をコメント記号 (`\#`) から始まるように設定してください。 -たとえば、利用可能な仮想コンソールを 8 つから 4 つに減らす場合には、 [.filename]#ttyv5# から -[.filename]#ttyv8# までの仮想コンソールを表す最後の 4 行の先頭に `\#` を挿入してください。 -システムコンソールを表す [.filename]#ttyv0# -から始まる行はコメントアウト _しないでください。_ -最後の仮想コンソール ([.filename]#ttyv8#) は、Xrog がインストールされ crossref:x11[x11,X Window System] で説明されているように設定されている場合に、グラフィカル環境にアクセスするために使用されます。 +たとえば、利用可能な仮想コンソールを 8 つから 4 つに減らす場合には、 [.filename]##ttyv5## から [.filename]##ttyv8## までの仮想コンソールを表す最後の 4 行の先頭に `#` を挿入してください。 +システムコンソールを表す [.filename]##ttyv0## から始まる行はコメントアウト _しないでください。_ +最後の仮想コンソール ([.filename]##ttyv8##) は、Xrog がインストールされ crossref:x11[x11,X Window System] で説明されているように設定されている場合に、グラフィカル環境にアクセスするために使用されます。 このファイルのそれぞれのカラムと仮想コンソールに設定可能なオプションの詳しい説明は、man:ttys[5] のマニュアルを参照してください。 @@ -170,8 +169,8 @@ console none unknown off secure [NOTE] ==== -_`insecure` に 変更する場合は十分注意してください!_ -`root` のパスワードを忘れてしまうと、シングルユーザモードで起動することはできますが、FreeBSD の起動のプロセスに詳しくない人が起動できるようにするに難しいかも知れません。 +__ `insecure` に変更する場合は十分注意してください! __ +`root` のパスワードを忘れてしまうと、シングルユーザモードで起動することはできますが、FreeBSD の起動のプロセスに詳しくない人が起動できるようにするのは難しいかも知れません。 ==== [[consoles-vidcontrol]] @@ -208,6 +207,486 @@ FreeBSD のデフォルトのビデオモードは 1024x768 や 1280x1024 など allscreens_flags="MODE_279" .... +[[users-synopsis]] +== ユーザと基本的なアカウント管理 + +FreeBSD は、複数のユーザが同時にコンピュータを使えるようにします。 スクリーンとキーボードの前に一度に座れるのはその中の一人だけですが ユーザは何人でもネットワークを通してログインできます。 システムを使うためには、 どのユーザもアカウントがなければなりません。 + +この章では、以下のことを説明します。 + +* FreeBSD システムにおけるさまざまな種類のユーザアカウントについて +* ユーザアカウントを追加、削除および変更する方法 +* ユーザやグループが利用できるリソースの上限を制御する方法 +* グループの作成、 およびグループにユーザをメンバとして追加する方法 + +[[users-introduction]] +=== アカウントの種類 + +FreeBSD システムへアクセスするには、 かならずアカウントが使われ、 また、プロセスもすべてユーザによって実行されるので、 ユーザとアカウントの管理は、重要なものです。 + +アカウントには大きく分けて三種類あります。 システムアカウント (system accounts)、ユーザアカウント (user accounts)、 そしてスーパーユーザ (superuser) です。 + +[[users-system]] +==== システムアカウント + +システムアカウントは、DNS、メール、 ウェブサーバといった各種サービスを運用するために使われます。 この目的は、セキュリティを確保するためです。 もしすべてのサービスがスーパーユーザで実行されていると、 それらのサービスはどんな動作でも可能となり、 適切な制限を適用することができません。 + +システムアカウントの具体例は、 `daemon`, `operator`, `bind`, `news` および `www` といったものです。 + +`nobody` は通常の特権を持たないシステムアカウントです。 しかし、`nobody` を利用するサービスが増えれば増えるほど、 それに所属するファイルやプロセスも増え、 その特権も大きくなるということを忘れないようにしてください。 + +[[users-user]] +==== ユーザアカウント + +ユーザアカウントは、 主に現実のユーザがシステムにアクセスする手段として用いられるものです。 システムにアクセスするすべてのユーザは、 それぞれ唯一のユーザアカウントを持つべきです。 こうすることで管理者は誰が何を行なっているかがわかりますし、 他の人の設定を壊してしまうようなことを避けることができます。 + +それぞれのユーザは快適にシステムを利用するため、 シェル、エディタ、キー設定、言語など、 各自の環境をセットアップすることができます。 + +FreeBSD システム上のどのアカウントにも、 以下のような情報がなにかしら結び付けられています。 + +ユーザ名:: +`login:` プロンプトに対して入力するユーザの名前です。 ユーザ名はそのシステムで一意でなければならず、 2 名のユーザに同じユーザ名をつけることはできません。 有効なユーザ名を作成するには man:passwd[5] に記載されているいくつもの規則があります。 アプリケーションの上位互換性を保つために、 8 文字以下の小文字からなるユーザ名を使うことが推奨されています。 + +パスワード:: +それぞれのユーザアカウントにはパスワードがあります。 パスワードは空白にもできますが、 行うべきではありません。 + +ユーザ ID (UID):: +ユーザ ID (UID) は、 FreeBSD システムがユーザを一意に識別するための数値です。 ユーザ名を指定できるコマンドは、 ユーザ名を UID に変換してから扱っています。 65535 より大きな UID は、32 ビット以上の整数に対応していないソフトウェアにおいて互換性の問題を引き起こす可能性があるので、 65535 以下の UID を使用することが推奨されています。 + +グループ ID (GID):: +グループ ID (GID) は、 ユーザが属する第一グループを一意に識別するための数値です。 グループは、UID ではなく、 ユーザの GID に基づいて資源へのアクセスを制御する仕組みです。 これは、ある種の設定ファイルのサイズを大幅に小さくします。 ユーザは、複数のグループに所属できます。 65535 より大きな GID は、ソフトウェアに問題を引き起こす可能性があるので、 65535 以下の GID を使うことを推奨します。 + +ログインクラス:: +ログインクラスはグループの仕組みを拡張したもので、 別々のユーザに対してシステムを調整する時に、 さらなる柔軟性を提供します。ログインクラスの詳細については、 <> で説明します。 + +パスワード変更時間:: +デフォルトでは、FreeBSD は定期的にパスワードを変更することをユーザに強制しません。 これを man:pw[8] を使用してユーザごとに設定し、 一部またはすべてのユーザに、 一定の時間がたったらパスワードを強制的に変更させることができます。 + +アカウント失効時間:: +デフォルトでは、FreeBSD はアカウントを失効させません。 たとえば学校で生徒のアカウントがある場合など、 限られた期間だけのアカウントを作成するなら、 そのアカウントがいつ失効するか man:pw[8] を使って指定できます。 有効期間が経過したら、 そのアカウントのディレクトリやファイルは残っていますが、 システムへのログインはできなくなります。 + +ユーザの氏名:: +FreeBSD ではユーザ名でアカウントを一意に識別しますが、 必ずしもユーザの本名を反映したものではありません。 この情報をアカウントに関連付けることもできます。 この情報は、コメントのように、空白、大文字、および 8 字以上で記載できます。 + +ホームディレクトリ:: +ホームディレクトリは、システム中のディレクトリへのフルパスです。 これはユーザがログインした時に作業を開始するディレクトリです。 一般的な慣習は、すべてのユーザのホームディレクトリを [.filename]#/home/username# か [.filename]#/usr/home/username# の下に置くことです。 各ユーザは、個人のファイルやサブディレクトリを、 ユーザのホームディレクトリに保存します。 + +ユーザシェル:: +シェルは、 ユーザがシステムと対話するデフォルトの環境を提供します。 いろいろな種類のシェルがあり、 経験を積んだユーザはそれぞれ好みがあり、 それをアカウントの設定に反映できます。 + +[[users-superuser]] +==== スーパーユーザアカウント + +スーパーユーザアカウントは通常 `root` と呼ばれ、 システム管理を行なうために使われ、権限に制限がありません。 そのため、このアカウントはメールのやりとり、システムの調査、 プログラミングといった日常的な作業を行なうために使われるべきものではありません。 + +その理由は、スーパーユーザが通常のユーザアカウントと異なり、 操作にまったく制限を受けないことによります。 そのためスーパーユーザアカウントで操作を間違えると、 システムに重大な影響を与えてしまう恐れがあるのです。 ユーザアカウントでは、 仮に操作を間違えてもシステムを壊してしまうようなことはできないようになっています。 そのため、ユーザアカウントでログインし、 高い権限が必要なコマンドを実行するときだけスーパーユーザになることが推奨されています。 + +スーパーユーザで実行するコマンドはいつでも、 二回、三回と確認してください。 なぜならスペースが多かったり、文字が欠けていたりするだけで、 取り返しのつかないデータの破壊につながる可能性があるからです。 + +スーパーユーザの権限を得るには、さまざまな方法があります。 `root` ユーザとしてログインする方法もありますが、 これはまったくお勧めできません。 + +スーパーユーザの権限を手に入れるには、かわりに man:su[1] を使って下さい。 `-` オプションをつけて実行すると、 実行したユーザに root ユーザの環境が設定されます。 このコマンドは `wheel` グループに入ってるユーザのみが実行でき、他のユーザは実行出来ません。 また、実行時には `root` ユーザのパスワードを必要とします。 + +以下の例では、`make install` を行うときにスーパーユーザの権限が必要なので、 このコマンドを実行する時だけユーザはスーパーユーザになります。 コマンドを実行したら、ユーザは `exit` を実行してスーパーユーザからログアウトし、 通常のユーザアカウントの権限に戻ります。 + +.スーパーユーザ権限でプログラムをインストールする +[example] +==== + +[source,shell] +.... +% configure +% make +% su - +Password: +# make install +# exit +% +.... + +==== + +1 人の管理者が一台のマシン、 もしくは小規模なネットワークを管理する場合には、 man:su[1] のフレームワークはうまく機能するでしょう。 この代わりとなるのは、 package:security/sudo[] package または port です。これはログ機能や、 スーパーユーザの権限で実行できるユーザやコマンドを設定できます。 + +[[users-modifying]] +=== アカウント情報の管理 + +FreeBSD には、 ユーザアカウントを操作するのにさまざまなコマンドが用意されています。 もっとも一般的なコマンドを以下に示し、 それに続いて詳しい使用例を示します。 + +[.informaltable] +[cols="1,1", frame="none", options="header"] +|=== +| コマンド +| 要約 + +|man:adduser[8] +|コマンドラインからユーザを追加するための推奨アプリケーション + +|man:rmuser[8] +|コマンドラインからユーザを削除するための推奨アプリケーション + +|man:chpass[1] +|ユーザデータベースの情報を変更するための柔軟なツール + +|man:passwd[1] +|ユーザのパスワードを変更する簡単なコマンドラインツール + +|man:pw[8] +|ユーザアカウントのあらゆる箇所を変更する強力で柔軟なツール +|=== + +[[users-adduser]] +==== `adduser` + +man:adduser[8] は、 新しいユーザを登録するためのシンプルなプログラムです。 ユーザを追加すると、 このプログラムは、[.filename]#/etc/passwd# と [.filename]#/etc/group# を自動的に更新します。 また、新規ユーザのホームディレクトリを作成し、 [.filename]#/usr/shared/skel# から、デフォルトで使用される設定ファイルをコピーします。 また、新しく作成されたユーザに対して、 ウェルカムメッセージをメールで送信することも可能です。 + +.FreeBSD におけるユーザの追加 +[example] +==== + +[source,shell] +.... +# adduser +Username: jru +Full name: J. Random User +Uid (Leave empty for default): +Login group [jru]: +Login group is jru. Invite jru into other groups? []: wheel +Login class [default]: +Shell (sh csh tcsh zsh nologin) [sh]: zsh +Home directory [/home/jru]: +Home directory permissions (Leave empty for default): +Use password-based authentication? [yes]: +Use an empty password? (yes/no) [no]: +Use a random password? (yes/no) [no]: +Enter password: +Enter password again: +Lock out the account after creation? [no]: +Username : jru +Password : **** +Full Name : J. Random User +Uid : 1001 +Class : +Groups : jru wheel +Home : /home/jru +Shell : /usr/local/bin/zsh +Locked : no +OK? (yes/no): yes +adduser: INFO: Successfully added (jru) to the user database. +Add another user? (yes/no): no +Goodbye! +# +.... + +==== + +[NOTE] +==== +入力したパスワードは画面に表示されませんので、 ユーザアカウントを作成する際には、 パスワードを間違えて入力してしまわないように注意してください。 +==== + +[[users-rmuser]] +==== `rmuser` + +システムから完全にユーザを削除するには、 man:rmuser[8] を使います。 このコマンドは、次の手順を実行します。 + +[.procedure] +==== +. 指定されたユーザの man:crontab[1] エントリが存在する場合には削除。 +. 指定されたユーザの man:at[1] ジョブをすべて削除。 +. 指定されたユーザが所有するすべてのプロセスを強制終了。 +. ローカルパスワードファイルから、 指定されたユーザのエントリを削除。 +. 指定されたユーザのホームディレクトリを削除 (ディレクトリの所有者が指定されたユーザのものだった場合)。 +. [.filename]#/var/mail# から、指定されたユーザの到着メールファイルを削除。 +. [.filename]#/tmp# のような一時ファイル保存領域から、 指定されたユーザの所有するファイルを削除。 +. そして最後に、 [.filename]#/etc/group# にある すべてのグループから、指定されたユーザを削除します。 ++ +[NOTE] +====== +指定されたユーザと同じ名前のグループで、 そのユーザが削除されると空のグループとなる場合は、 そのグループ自体が削除されます。 これは man:adduser[8] によってユーザごとに作成される、 ユニークなグループに対応するものです。 +====== +==== + +スーパユーザアカウントの削除に man:rmuser[8] を利用することはできません。 スーパユーザアカウントの削除はほとんどすべての場合、 大規模なシステムの破壊を意味するからです。 + +デフォルトでは、以下の例のような対話モードが使われます。 + +.`rmuser` による対話的なアカウントの削除 +[example] +==== + +[source,shell] +.... +# rmuser jru +Matching password entry: +jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh +Is this the entry you wish to remove? y +Remove user's home directory (/home/jru)? y +Updating password file, updating databases, done. +Updating group file: trusted (removing group jru -- personal group is empty) done. +Removing user's incoming mail file /var/mail/jru: done. +Removing files belonging to jru from /tmp: done. +Removing files belonging to jru from /var/tmp: done. +Removing files belonging to jru from /var/tmp/vi.recover: done. +# +.... + +==== + +[[users-chpass]] +==== `chpass` + +man:chpass[1] を用いて、 パスワード、シェル、その他の個人情報といった、 ユーザデータベース情報を変更できます。 + +スーパユーザ権限に限り、 man:chpass[1] を用い、 他のユーザの情報やパスワードを変更できます。 + +ユーザ名の他にオプションを指定しないと、 man:chpass[1] はユーザ情報を編集するエディタを表示します。 ユーザがエディタを終了すると、 ユーザデータベースが新しい情報に更新されます。 + +[NOTE] +==== +スーパユーザでない場合は、 エディタを抜けた後にパスワードを聞かれます。 +==== + +.スーパユーザによる対話的な `chpass` +[example] +==== + +[source,shell] +.... +#Changing user database information for jru. +Login: jru +Password: * +Uid [#]: 1001 +Gid [# or name]: 1001 +Change [month day year]: +Expire [month day year]: +Class: +Home directory: /home/jru +Shell: /usr/local/bin/zsh +Full Name: J. Random User +Office Location: +Office Phone: +Home Phone: +Other information: +.... + +==== + +ユーザは、この情報の限られた部分のみ変更が可能です。 また、変更できるのはそのユーザ自身のアカウント情報のみです。 + +.通常のユーザによる対話的な `chpass` +[example] +==== + +[source,shell] +.... +#Changing user database information for jru. +Shell: /usr/local/bin/zsh +Full Name: J. Random User +Office Location: +Office Phone: +Home Phone: +Other information: +.... + +==== + +[NOTE] +==== +man:chfn[1] および man:chsh[1] はいずれも、 man:chpass[1] へのリンクです。 また、man:ypchpass[1], man:ypchfn[1] および man:ypchsh[1] も同様です。 NIS のサポートは自動的に行なわれますので、 コマンドの先頭に `yp` をつける必要はありません。 NIS の設定については、 で説明されています。 +==== + +[[users-passwd]] +==== `passwd` + +man:passwd[1] は、 ユーザが自分のパスワードを変更する通常の方法です。 スーパユーザ権限では、 他のユーザのパスワードを変更するのに使われます。 + +[NOTE] +==== +誤って、または不正なパスワードの変更を避けるため、 新しいパスワードを設定する前に、 もとのパスワードを入力しなければなりません。 スーパーユーザの権限でユーザのパスワードを変更する際には、 もとのパスワードを入力する必要はありません。 +==== + +.自分のパスワードの変更 +[example] +==== + +[source,shell] +.... +% passwd +Changing local password for jru. +Old password: +New password: +Retype new password: +passwd: updating the database... +passwd: done +.... + +==== + +.スーパーユーザ権限での他のユーザのパスワード変更 +[example] +==== + +[source,shell] +.... +# passwd jru +Changing local password for jru. +New password: +Retype new password: +passwd: updating the database... +passwd: done +.... + +==== + +[NOTE] +==== +man:chpass[1] 同様、man:yppasswd[1] は、 man:passwd[1] へのリンクになっていますので、 NIS はどちらのコマンドでも動作します。 +==== + +[[users-pw]] +==== `pw` + +man:pw[8] は、ユーザやグループの作成、削除、 変更および表示を行なうコマンドラインのユーティリティです。 これは、システムユーザファイルやシステムグループファイルの フロントエンドとして働きます。man:pw[8] はとても強力な一連のコマンドラインオプションを有しており、 シェルスクリプトで使うのに向いていますが、新しいユーザは、 この章で紹介されている他のコマンドに比べて難しいと感じるかもしれません。 + +[[users-limiting]] +=== ユーザへの制限 + +FreeBSD は、 個々のユーザが利用できるシステム資源の量を管理者が制限できる方法をいくつも用意しています。 その種の制限は、ディスククォータ (quota) とその他の資源の制限の 2 つの章で説明します。 + +ディスククォータは、ユーザが利用できるディスク容量を制限し、 その都度計算しなくてもディスク使用量を簡単に確認できる手段も提供しています。 クォータについては、crossref:disks[quotas,「ファイルシステムクォータ」] で解説しています。 + +その他のリソースの制限とは、ユーザが消費できる CPU、メモリなどのリソースを制限する手段のことです。 これはログインクラスを用いて定義されているもので、 この後で解説しています。 + +ログインクラスは [.filename]#/etc/login.conf# で定義します。詳細な説明は man:login.conf[5] に詳しく記載されています。 各ユーザアカウントにはログインクラスが割り当てられていて (デフォルトでは `default` です)、 それぞれのログインクラスにはログインケーパビリティの集合が割り当てられています。 ログインケーパビリティとは、 `名称=値` の組のことで、_名称_ は周知の識別子、_値_ は、_名称_ に応じて処理される任意の文字列です。 ログインクラスとケーパビリティを設定するのはどちらかといえば簡単なことで、 man:login.conf[5] でも説明されています。 + +[NOTE] +==== +FreeBSD は通常、直接 [.filename]#/etc/login.conf# から設定を読み込まず、 より速く検索できる [.filename]#/etc/login.conf.db# データベースから読み込みます。[.filename]#/etc/login.conf# を編集する時には [.filename]#/etc/login.conf.db# を次のコマンドを実行してアップデートする必要があります。 + +[source,shell] +.... +# cap_mkdb /etc/login.conf +.... + +==== + +リソースの制限は、 2 つの点で標準的なログインケーパビリティと異なっています。 第一に、どの制限についても、ソフト (現在の) リミットとハードリミットがあります。 ソフトリミットは、ユーザやアプリケーションが調整できますが、 ハードリミットを超えることはできません。 ユーザはハードリミットを下げることはできますが、 上げることはスーパユーザのみができます。 第二に、ほとんどのリソースの制限は特定のユーザに対してプロセス毎に適用されるもので、 そのユーザが利用するリソースの総量を制限するものではありません。 ただし、この違いは制限を特別扱いすることで実現されるものであり、 ログインケーパビリティフレームワークの実装によるものではありません。 + +以下が最もよく使われるリソースの制限になります。 残りは、他のすべてのログインケーパビリティと並んで man:login.conf[5] に書かれています。 + +`coredumpsize`:: +プログラムが生成する core ファイルのサイズにかかる制限は、 `filesize` やディスククォータなどの、 ほかのディスク使用に関する制限に従属します。 この制限は、ディスク領域の消費を制御するあまり厳しくない手段としてよく使われています。 ユーザは core ファイルを自分で生成するわけではなく、 削除しないことも多いので、 これを設定すれば大きなプログラムが異常終了してもディスクの空きがなくならずに済みます。 + +`cputime`:: +そのユーザのプロセスが消費できる CPU 時間 の上限です。 これを超えたプロセスは、カーネルにより終了されます。 ++ + +[NOTE] +==== +これは、消費される CPU _時間_ についての制限であって、man:top[1] や man:ps[1] のフィールドで表示される CPU の割合に関するものではありません。 +==== + +`filesize`:: +ユーザが所有できるファイルの大きさの上限です。crossref:disks[quotas,ディスククォータ] と違い、 この制限はユーザのファイルをすべてまとめた集合にではなく、 個々のファイルにかかります。 + +`maxproc`:: +ユーザが実行できるプロセス数の上限です。 フォアグラウンドプロセスとバックグラウンドプロセスの両方を扱います。 この上限は、man:sysctl[8] 変数 `kern.maxproc` で指定されたシステムの制限を超えることはできません。 同時に複数ログインすることや、 パイプライン実行することは便利なことが多いので、 この値をあまり小さな値に設定すると、 そのユーザの生産性が悪化する可能性があります。 大きなプログラムをコンパイルする場合のように、 タスクによっては複数のプロセスやプリプロセッサが実行されます。 + +`memorylocked`:: +これは、1 つのプロセスが man:mlock[2] によりメインメモリにロックされることを要求できるメモリの最大容量です。 man:amd[8] のようなシステムで重要なプログラムは、 メインメモリへロックして、システムがスワップする際に、 ディスクのスラッシングを引き起こさないようにします。 + +`memoryuse`:: +これは、どの時点かを問わず、 あるプロセスが消費できる最大のメモリ容量です。 これは、メインメモリとスワップの使用量を合わせたものです。 メモリ消費を抑えるための包括的な制限ではありませんが、 手始めにはよいでしょう。 + +`openfiles`:: +これは、あるプロセスが開いておける最大のファイル数です。 FreeBSD では、ファイルはまた、ソケットや IPC チャンネルを表わすのにも使われています。 ですから、あまり低い値に設定しないよう注意してください。 これに対応するシステム全体の制限は man:sysctl[8] `kern.maxfiles` で定義されています。 + +`sbsize`:: +これは、あるユーザが消費できるネットワークメモリ (つまり mbuf) の上限の量です。ユーザは、 ネットワーク通信を制限するのに使えます。 + +`stacksize`:: +これは、プロセスのスタックサイズの上限です。 あるプログラムが使用しうるメモリの量を制限するには、 これだけでは十分ではありません。 したがって、他の制限と組み合わせて使わなければなりません。 + +リソースの制限を設定するにあたり、 ほかにもいくつか覚えておかなければならないことがあります。 以下は、一般的なこつやお勧め、さまざまなコメントになります。 + +* システム起動時に [.filename]#/etc/rc# から起動されたプロセスは、`daemon` ログインクラスに割り当てられます。 +* システムに付属していた [.filename]#/etc/login.conf# はほとんどの制限について妥当な値になっていますが、 すべてのシステムにおいてふさわしいというわけではありません。 制限をあまり緩くするとシステムを悪用しやすくしてしまいますし、 厳しくしすぎると生産性を悪化させてしまいます。 +* Xorg のユーザには、 他のユーザより多くのリソースを与えるべきかもしれません。 Xorg そのものが多くのリソースを使うだけでなく、 より多くのプログラムを並行して使うことをユーザに促します。 +* 多くの制限は個々のプロセスにかかるもので、 一人のユーザにまとめてかかるものではありません。 例えば、`openfiles` を 50 に設定することは、 ユーザが動かすそれぞれのプロセスが最大 50 個のファイルを開けるということです。 あるユーザが開けるファイルの総数は、 `openfiles` の値に `maxproc` をかけたものになります。 同じことがメモリ消費量にもあてはまります。 + +リソースの制限と、ログインクラス、 ログインケーパビリティ一般についての詳しい情報は、 man:cap.mkdb[1], man:getrlimit[2] および man:login.conf[5] をご覧ください。 + +[[users-groups]] +=== グループの管理 + +グループとは、ユーザを羅列したものです。 グループは、グループ名と GID で識別されます。 FreeBSD では、 あるプロセスが何かするのを許可するかどうかをカーネルが判断する際に、 プロセスの UID とそのユーザが所属するグループの一覧を利用します。 ほとんどの場合、ユーザもしくはプロセスの GID は一覧の最初のグループを指しています。 + +グループ名から GID への写像は [.filename]#/etc/group# にあります。 これは、コロンで区切られた 4 項目からなるテキストファイルです。 1 番目の項目はグループ名、 2 番目は暗号化されたパスワード、 3 番目が GID、 4 番目がカンマで区切られたメンバの一覧です。 文法についての完全な説明は、man:group[5] をご覧ください。 + +スーパーユーザは、[.filename]#/etc/group# をテキストエディタで編集できます。 もしくは、man:pw[8] を使ってグループの追加や編集をできます。 たとえば、`teamtwo` というグループを追加して、その存在を確認するには、 次のように使います。 + +.man:pw[8] によるグループの追加 +[example] +==== + +[source,shell] +.... +# pw groupadd teamtwo +# pw groupshow teamtwo +teamtwo:*:1100: +.... + +==== + +この例では、`1100` という番号は、 `teamtwo` の GID です。 この時点では、`teamtwo` にメンバはいません。 以下のコマンドは、 `jru` を `teamtwo` のメンバに追加します。 + +.man:pw[8] により新しいグループにメンバを追加する +[example] +==== + +[source,shell] +.... +# pw groupmod teamtwo -M jru +# pw groupshow teamtwo +teamtwo:*:1100:jru +.... + +==== + +`-M` の引数は、 カンマで区切られた新しい (空の) グループに追加するもしくは存在するグループのメンバを置き換えるユーザの一覧です。 ユーザにとっては、このグループのメンバーシップはパスワードファイルに記載されているプライマリのグループとは異なります。 man:pw[8] の `groupshow` コマンドを使った時は、 そのユーザはグループの一員として表示されませんが、man:id[1] などのツールを使って情報を問い合わせれば、 その情報を引き出せます。ユーザをグループに追加をする際に、man:pw[8] は [.filename]#/etc/group# しか扱わず、 [.filename]#/etc/passwd# から追加のデータを読んだりはしません。 + +.man:pw[8] によるグループへのユーザ追加 +[example] +==== + +[source,shell] +.... +# pw groupmod teamtwo -m db +# pw groupshow teamtwo +teamtwo:*:1100:jru,db +.... + +==== + +この例では、`-m` の引数は、 カンマで区切られたグループに追加するユーザの一覧です。 前の例と異なり、これらのユーザはグループ一覧に追加され、 グループのユーザ一覧を置き換えることはありません。 + +.グループに所属しているユーザを調べるための man:id[1] の使い方 +[example] +==== + +[source,shell] +.... +% id jru +uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo) +.... + +==== + +この例では、`jru` は `jru` グループと `teamtwo` グループのメンバです。 + +このコマンドや [.filename]#/etc/group# のフォーマットの詳細については、 man:pw[8] および man:group[5] をご覧ください。 + [[permissions]] == 許可属性 @@ -220,9 +699,9 @@ FreeBSD では、すべてのファイルおよびディレクトリは一組の UNIX(R) では、基本の許可属性は 3 つのアクセスタイプ (読み・書き・実行) を使って割り当てられます。 これらのアクセスタイプを使って、ファイルの所有者 (owner)、グループ (group) その他 (others) に対するファイルアクセスを設定します。 -読み、書き、実行に関する許可属性は、それぞれ`r`, `w`, および `x` 文字で表されます。 +読み、書き、実行に関する許可属性は、それぞれ `r`, `w`, および `x` 文字で表されます。 これらの許可属性を表す際に、オンかオフ (`0`) による 2 進数表記も使われます。 -数字で表現する場合には、`r` は `4`、`w` は `2` そして `x` は `1` の値を持つよう、`rwx` の順番で表されます。 +数字で表現する場合には、 `r` は `4`、`w` は `2` そして `x` は `1` の値を持つよう、`rwx` の順番で表されます。 以下は、許可属性を表す際に用いられる数字およびアルファベットをまとめた表です。 "ディレクトリの表示" カラムでは、`-` は許可属性がオフに設定されていることを表します。