git: a188b8e7a3 - main - ja/handbook: Upadate basic chapter

From: Ryusuke SUZUKI <ryusuke_at_FreeBSD.org>
Date: Tue, 07 Jun 2022 09:11:38 UTC
The branch main has been updated by ryusuke:

URL: https://cgit.FreeBSD.org/doc/commit/?id=a188b8e7a3d19ad61223e8fddc8def3aa4360f95

commit a188b8e7a3d19ad61223e8fddc8def3aa4360f95
Author:     Ryusuke SUZUKI <ryusuke@FreeBSD.org>
AuthorDate: 2022-06-07 09:10:46 +0000
Commit:     Ryusuke SUZUKI <ryusuke@FreeBSD.org>
CommitDate: 2022-06-07 09:10:46 +0000

    ja/handbook: Upadate basic chapter
    
    23d4c14e46 -> 9c243757ef
---
 .../content/ja/books/handbook/basics/_index.adoc   | 134 +++++++++++++++++++--
 1 file changed, 126 insertions(+), 8 deletions(-)

diff --git a/documentation/content/ja/books/handbook/basics/_index.adoc b/documentation/content/ja/books/handbook/basics/_index.adoc
index f33c609a53..9ddc5919d3 100644
--- a/documentation/content/ja/books/handbook/basics/_index.adoc
+++ b/documentation/content/ja/books/handbook/basics/_index.adoc
@@ -385,7 +385,7 @@ total 530
 # chflags sunlink file1
 ....
 
-また、消去不可のフラグを削除するには、 以下のように先ほどのコマンドの `sunlink` の前に "no" をつけるだけです。
+また、消去不可のフラグを削除するには、以下のように先ほどのコマンドの `sunlink` の前に "no" をつけて実行してください。
 
 [source,shell]
 ....
@@ -408,6 +408,118 @@ total 530
 
 いくつかのフラグの追加、削除は `root` ユーザしかできません。 他のフラグは、ファイルの所有者が変更できます。 システム管理者は man:chflags[1] と man:chflags[2] から、 より詳細な情報を得ることをおすすめします。
 
+=== `setuid`, `setgid` および `sticky` 許可属性
+
+これまでに説明した許可属性のほかに、
+すべての管理者が知っておくべき特別な設定が 3 つあります。
+それは `setuid`, `setgid` および `sticky` 許可属性です。
+
+これらの設定は、通常のユーザには許可されていない機能を提供するので、UNIX(R) の操作において重要となることがあります。
+これらの許可属性を理解するためには、実ユーザ ID と実効ユーザ ID の違いに注意してください。
+
+実ユーザ ID は、所有したりプロセスを開始する UID です。
+実効 UID は、プロセスを実行するユーザ ID です。
+たとえば、ユーザがパスワードを変更するときに利用する man:passwd[1] は、実ユーザ ID で起動します。
+しかしながら、パスワードデータベースのアップデートの際は、実効 ID の `root` ユーザの権限で実行されます。
+この仕組みにより、`Permission Denied` エラーが表示されることなく、パスワードを変更できます。
+
+setuid 許可属性は、以下の例で示されているように、指定する許可属性に数字の 4 をつけて設定します。
+
+[source,shell]
+....
+# chmod 4755 suidexample.sh
+....
+
+これで [.filename]#suidexample.sh# の許可属性は以下のように設定されます。
+
+[.programlisting]
+....
+-rwsr-xr-x   1 trhodes  trhodes    63 Aug 29 06:36 suidexample.sh
+....
+
+`s` は、許可属性のファイル所有者の実行可能ビットに置き換わって反映されます。
+この設定により、man:passwd[1] といったユーティリティが権限を昇格することができます。
+
+[NOTE]
+====
+`nosuid` man:mount[8] オプションを使うと、このようなバイナリがユーザへの警告なしに権限を昇格できないように設定できます。
+ただし `nosuid` ラッパにより回避できるため、このオプションを完全には信頼できません。
+====
+
+リアルタイムに確認するために、2 つのターミナルを開いてください。
+1 つのターミナル上で、通常のユーザ権限で `passwd` を実行してください。
+パスワードの入力を待つ間に、もう一つのターミナル上で、プロセステーブルおよび man:passwd[1] のユーザ情報を確認してください。
+
+ターミナル A:
+
+[source,shell]
+....
+Changing local password for trhodes
+Old Password:
+....
+
+ターミナル B:
+
+[source,shell]
+....
+# ps aux | grep passwd
+....
+
+[source,shell]
+....
+trhodes  5232  0.0  0.2  3420  1608   0  R+    2:10AM   0:00.00 grep passwd
+root     5211  0.0  0.2  3620  1724   2  I+    2:09AM   0:00.01 passwd
+....
+
+通常のユーザ権限で man:passwd[1] を実行したにもかかわらず、実効 UID の `root` が使われています。
+
+`setgid` 許可属性は `setuid` 許可属性と同様の機能を提供しますが、この許可属性はグループの設定を変更します。
+アプリケーションまたはユーティリティに対してこの設定を行うと、プロセスを開始するユーザではなく、ファイルを所有するグループに対してこの許可属性を与えます。
+
+ファイルに `setgid` 許可属性を設定するには、man:chmod[1] で設定する許可属性の先頭に 2 をつけて実行してください。
+
+[source,shell]
+....
+# chmod 2755 sgidexample.sh
+....
+
+以下に示されるように、`s` がグループの許可属性に指定されています。
+
+[source,shell]
+....
+-rwxr-sr-x   1 trhodes  trhodes    44 Aug 31 01:49 sgidexample.sh
+....
+
+[NOTE]
+====
+上記の例において、対象としているシェルスクリプトが実行可能なファイルであっても、シェルスクリプトは man:setuid[2] システムコールにアクセスできないため、実効ユーザ ID では実行されません。
+
+====
+
+`setuid` および `setgid` 許可属性ビットは、権限の昇格を許可するので、システムのセキュリティレベルを下げます。
+一方 3 番目の特殊な許可属性 `sticky bit` は、システムのセキュリティを強化します。
+
+ディレクトリに `sticky bit` を設定すると、ファイルの所有者のみがファイルを削除できるようになります。
+[.filename]#/tmp# といった共有のディレクトリにおいて、ファイルの所有者以外のユーザがファイルを削除できなくなるので有用です、
+この許可属性を有効にするには、許可属性に 1 をつけて設定してください。
+
+[source,shell]
+....
+# chmod 1777 /tmp
+....
+
+`sticky bit` が設定されていると、許可属性の最後に `t` が表示されます。
+
+[source,shell]
+....
+# ls -al / | grep tmp
+....
+
+[source,shell]
+....
+drwxrwxrwt  10 root  wheel         512 Aug 31 01:49 tmp
+....
+
 [[dirstructure]]
 == ディレクトリ構造
 
@@ -498,7 +610,7 @@ FreeBSD のディレクトリ構造は、 システム全体を理解するに
 |[.filename]#/usr/obj/#
 |[.filename]#/usr/src# ツリーのビルドで作られる アーキテクチャ依存のターゲットツリー
 
-|[.filename]#/usr/ports#
+|[.filename]#/usr/ports/#
 |FreeBSD Ports Collection (インストールしなくてもよい)。
 
 |[.filename]#/usr/sbin/#
@@ -528,7 +640,7 @@ FreeBSD のディレクトリ構造は、 システム全体を理解するに
 |[.filename]#/var/tmp/#
 |一時的なファイル。 [.filename]#/var# がメモリファイルシステムでなければ、 ここにあるファイルはシステムが再起動しても失われません。
 
-|[.filename]#/var/yp#
+|[.filename]#/var/yp/#
 |NIS のマップ
 |===
 
@@ -752,7 +864,8 @@ man:mount[8] マニュアルページにはたくさんのオプションが書
 クリーンでないファイルシステムを強制的にマウントします (危険です)。もしくは、ファイルシステムのマウント状態を 読み書き可能から読み込みのみに変更するとき、 書き込みアクセスを強制的に取り消します。
 
 `-r`::
-ファイルシステムを読み込み専用でマウントします。 これは `ro` (5.2 より前の FreeBSD では `rdonly` です) 引数を `-o` オプションに使うのと同じです。
+ファイルシステムを読み込み専用でマウントします。
+これは `ro` 引数を `-o` オプションに使うのと同じです。
 
 `-t` _fstype_::
 ファイルシステムを指定のファイルシステムタイプでマウントします。 または、`-a` を使った場合、 指定したタイプのファイルシステムのみマウントします。
@@ -1023,6 +1136,9 @@ Bourne シェルでは次のようになります。
 
 FreeBSD には、基本システムの一部として vi、 一方 Emacs や vim といった他のエディタは Ports Collection の一部として、 より強力なテキストエディタが用意されています ([.filename]#editors/emacs#, [.filename]#editors/vim#)。 これらのエディタはやや学習が複雑ですが、より強力で高い機能性を提供します。 しかし、あなたが多量のテキストを編集することを考えているなら、 vim や Emacs といった強力なエディタを習得することは、 より多くの時間を節約することでしょう。
 
+ファイルを編集したり、文字入力を必要とするようなアプリケーションの多くは、自動的にテキストエディタを起動します。
+<<shells>> の節で説明したように、デフォルトのエディタを変更するには `EDITOR` 環境変数に希望するエディタを設定してください。
+
 [[basics-devices]]
 == デバイスとデバイスノード
 
@@ -1083,7 +1199,9 @@ FreeBSD についてのもっとも包括的な文書は、 マニュアルペ
 
 上のようにすれば、 ユーザコマンド `chmod` のマニュアルページが表示されます。 オンラインマニュアルの特定セクションへの参照は、 慣習的に書かれている文書で括弧の中に示されます。 すなわち、man:chmod[1] は `chmod` ユーザコマンドを、man:chmod[2] はシステムコールの方を示しています。
 
-コマンドの名前を知っていて、 単純にその使い方を知りたい場合はここまでの説明で十分でしょう。 しかし、 もしコマンドの名前を思い出せない場合にはどうしたら良いのでしょうか? `man` に `-k` スイッチをつければ、 コマンド解説 (description) の文章から、 指定したキーワードを検索することができます。
+コマンドの名前を知っていて、その使い方を知りたいだけの場合はここまでの説明で十分でしょう。
+しかし、 もしコマンドの名前を思い出せない場合にはどうしたら良いのでしょうか?
+`man` に `-k` スイッチをつければ、コマンド解説 (description) の文章から、指定したキーワードを検索することができます。
 
 [source,shell]
 ....
@@ -1092,7 +1210,7 @@ FreeBSD についてのもっとも包括的な文書は、 マニュアルペ
 
 このコマンドにより、 "mail" というキーワードをコマンド解説に含むコマンドの一覧が表示されます。 実際には、これは `apropos` コマンドを使う場合と同等の機能です。
 
-それでは、[.filename]#/usr/bin# にあるさまざまなコマンドすべてを見ていて、 それらが実際にどう働くのかが、まったく見当もつかないときには どうしたら良いでしょう? そのときは単純に、
+それでは、[.filename]#/usr/bin# にあるさまざまなコマンドすべてを見ていて、それらが実際にどう働くのかが、まったく見当もつかないときにはどうしたら良いでしょう? そのときは、
 
 [source,shell]
 ....
@@ -1100,7 +1218,7 @@ FreeBSD についてのもっとも包括的な文書は、 マニュアルペ
 % man -f *
 ....
 
-とするか、あるいは同じ働きをする
+と入力するか、あるいは同じ働きをする
 
 [source,shell]
 ....
@@ -1115,7 +1233,7 @@ FreeBSD についてのもっとも包括的な文書は、 マニュアルペ
 
 FreeBSD には Free Software Foundation (FSF) によるアプリケーションや ユーティリティがたくさん含まれています。 これらのプログラムには、マニュアルページに加えて `info` ファイルと呼ばれる ハイパーテキスト形式の文書が付属しています。 この文書は `info` コマンド、 あるいは emacs をインストールしているなら emacs の info モードで読むことができます。
 
-man:info[1] コマンドを使うには、単に次のように入力します。
+man:info[1] コマンドを使うには、次のように入力してください。
 
 [source,shell]
 ....