doc/documentation/manual-pages/ja/man8/devfs.8
Sergio Carlavilla Delgado 989d921f5d Migrate doc to Hugo/AsciiDoctor
I'm very pleased to announce the release of
our new website and documentation using
the new toolchain with Hugo and AsciiDoctor.

To get more information about the new toolchain
please read the FreeBSD Documentation Project Primer[1],
Hugo docs[2] and AsciiDoctor docs[3].

Acknowledgment:
Benedict Reuschling <bcr@>
Glen Barber <gjb@>
Hiroki Sato <hrs@>
Li-Wen Hsu <lwhsu@>
Sean Chittenden <seanc@>
The FreeBSD Foundation

[1] https://docs.FreeBSD.org/en/books/fdp-primer/
[2] https://gohugo.io/documentation/
[3] https://docs.asciidoctor.org/home/

Approved by:    doceng, core
2021-01-26 00:31:29 +01:00

368 lines
10 KiB
Groff

.\"
.\" Copyright (c) 2002 Dima Dorfman.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/sbin/devfs/devfs.8,v 1.8 2003/09/14 13:41:57 ru Exp %
.\"
.\" $FreeBSD$
.Dd July 1, 2002
.Dt DEVFS 8
.Os
.Sh 名称
.Nm devfs
.Nd DEVFS 制御コマンド
.Sh 書式
.Nm
.Op Fl m Ar mount-point
.Ar keyword
.Ar argument ...
.Sh 解説
.Nm
ユーティリティは、マウントされた
.Xr devfs 5
のプロパティを操作するためのインタフェースです。
.Pp
.Ar keyword
引数で残りの引数のコンテキストを指定します。
例えば、
ほとんどのルールサブシステム関連のコマンドの前には
.Cm rule
キーワードをつけなければならないことになっています。
次のフラグはすべてのキーワードに共通のものです:
.Bl -tag -offset indent
.It Fl m Ar mount-point
操作する
.Ar mount-point
を指定します。
ここには、
.Xr devfs 5
がマウントされていなければなりません。
このオプションがない時には、
.Nm
.Pa /dev
を操作します。
.El
.Ss ルールサブシステム
.Xr devfs 5
のルールサブシステムは、システム管理者が DEVFS の各ノードの属性を変更できる
ようにするためのものです。
.\" XXX devfs node? entry? what?
DEVFS マウントポイントにはそれぞれに
.Dq ruleset
(ルールセット) というルールのリストが関連づけられています。
デバイスドライバが新しいノードを作成する時には、
そのノードがユーザランドから見えるようになる前に
それぞれのマウントポイントに関連づけられているルールセットの
すべてのルールが適用されます (下記参照) 。
これによって、管理者がノードの可視性を含めた属性を変更することが
できるようになっています。
例えば、
.Xr jail 2
.Pa /dev
にあるすべてのディスクノードを隠すというようなこともできます。
.Ss ルールの操作
ルール操作コマンドは
.Cm rule
キーワードに続けて使用します。
次のフラグは、すべてのルール操作コマンドに共通のものです :
.Bl -tag -offset indent
.It Fl s Ar ruleset
.Ar ruleset
で指定したルールセットを操作します。
このフラグが指定されていない時は、
指定したマウントポイントに現在関連づけられているルールセットを
操作します。
.El
.Pp
次のコマンドが使用できます:
.Bl -tag -offset indent
.It Cm rule add Oo Ar rulenum Oc Ar rulespec
.Ar rulespec
(下記参照)
で、記述されたルールをルールセットに追加します。
ルール番号は、
.Ar rulenum
が明示的に指定されている場合にはその番号に、
指定されていない場合には自動的にカーネルによって決められます。
.It Cm rule apply Ar rulenum | rulespec
ルール番号
.Ar rulenum
または
.Ar rulespec
で、指定されたルールをマウントポイントに適用します。
.Dq 適用される
ルールには条件があって、マウントポイントのすべてのノードに対して
チェックを行い、条件が一致すれば指定のアクションを起こします。
.It Cm rule applyset
ルールセットのすべてのルールをマウントポイントに適用します
(上記
.Dq apply
の説明を参照) 。
.It Cm rule del Ar rulenum
ルールセットからルール番号
.Ar rulenum
のルールを削除します。
.It Cm rule delset
指定したルールセットのすべてのルールを削除します。
.It Cm rule show Op Ar rulenum
.Ar rulenum
で指定したルール番号のルール、
またはルールセットのすべてのルールを表示します。
出力行は (ルール毎に 1 行ずつ) 正しい
.Ar rulespec Ns
になっています。
.It Cm rule showsets
設定されているルールセットの番号を表示します。
.It Cm ruleset Ar ruleset
.Ar ruleset
で指定した番号のルールセットをマウントポイントのカレントルールセットにします。
.El
.Ss ルール仕様
ルールには 2 つのパートがあります: 条件部とアクション部です。
条件部でルールを適用する DEVFS ノードを指定し、
アクション部でルールが当てはまるノードに何をするかを指定します。
例えば、メジャー番号が 53 のすべてのデバイスの GID を
.Dq Li games
に設定するルールを書くこともできます。
ルール指定の最初のトークンがダッシュ文字 1 つ
.Pq Sq Fl
の場合、ルールは標準入力から読み込まれて残りの指定は無視されます。
.Pp
次のような条件が使用できます。
デバイスをチェックする時には、条件は AND されます。
OR 条件を使いたい時には、複数のルールを書いてください。
.Bl -tag -offset indent
.It Cm major Ar majdev
メジャー番号が
.Ar majdev
のすべてのノードに適合します。
.It Cm path Ar pattern
パス名が
.Ar pattern
に合うノードすべてに適合します。
このパターンは
.Xr glob 3
と同じパターンで解析されます。
.It Cm type Ar devtype
タイプが
.Ar devtype
のすべてのノードに適合します。
使用できるタイプは
.Cm disk , mem , tape
および
.Cm tty
です。
.El
.Pp
次のようなアクションが使用できます。
条件部とアクション部の間には特にデリミタはありませんが、
混乱することはないでしょう。
.Bl -tag -offset indent
.It Cm group Ar gid
ノードのグループ ID を
.Ar gid
に設定します。
グループ名
.Pa ( /etc/group
で照会されます)
または、数値で指定します。
.It Cm hide
ノードを隠します。
隠されたノードは、マニュアルで
.Xr mknod 8
を使用するか、
.Cm unhide
アクションを使用するとまた見えるようになります。
.It Cm include Ar ruleset
ルールセット番号が
.Ar ruleset
のルールセットのすべてのルールをノードに適用します。
これによってノードが変更されるとは限りません
(例えば、ルールセットに一致するルールがない場合など)。
.It Cm mode Ar filemode
ファイルのモードを
.Ar filemode
に設定します。
8 進数として解釈されます。
.It Cm user Ar uid
ユーザ ID を
.Ar uid
に設定します。ユーザ名
.Pa ( /etc/passwd
で照会されます) または数値で指定します。
.It Cm unhide
ノードを見えるようにします。
.El
.Sh 実装に関する注
ルールセットは、最初に参照される時にカーネルによって作成され、
最後の参照がなくなる時に削除されます。
すなわち、ルールセットはルールが追加される時かどこかのマウントポイントの
カレントルールセットに設定された時に作成されます。
また、セットの中の最後のルールが削除される時でもう他からの参照もない
(つまり、他のルールにインクルードされてもなく、
どのマウントポイントのカレントルールセットにもなっていない)
時に削除されます。
.Pp
ルールセット 0 番は
すべての新しいマウントポイントのデフォルトルールセットです。
このルールセットは常に空で、変更や削除はできず、
.Cm showsets
コマンドの出力にも表示されません。
.Pp
ルールやルールセットは特定のマウントポイント毎ではなく、
システム全体で一意です。
つまり、
.Cm showsets
は、
.Fl m
で指定したマウントポイントにかかわらず、常に同じ情報を表示します。
マウントポイントが有効なのは、
カレントルールセットを変更する時や apply コマンドを使用する時だけです。
.Sh 実行例
システム起動時には、
ルールセット 0 番のみが存在しますが、
このルールセットは後から変更することができないので、
ルールを追加する前に別のルールセットを作成しなければなりません。
以下の例ではほとんど
.Fl m
オプションを指定していませんので、
操作は
.Pa /dev
に対して実行されることに注意してください
(これは、ノードのプロパティを変更するものだけが問題だからです) 。
.Pp
.Dl "devfs ruleset 10"
.Pp
ルールセット 10 番を
.Pa /dev
のカレントルールセットに指定しています
(もし、存在していなければ作成されます)。
.Pp
.Dl "devfs rule add path speaker mode 666"
.Pp
パス名が
.Dq Li speaker
にマッチするすべてのノード
(これは
.Pa /dev/speaker
だけですが)
をファイルモード 666
(すべてのユーザが読み書き可能) にするルールを追加しています。
気をつけて欲しいのは、そのようなノードが既に存在する場合には、
このルール (やルールセット) が明示的に適用される (下記参照) まで
そのノードは変更されないということです。
モードが変更
.Em される
のはルールが追加された
.Em 後に
ノードが作成された場合です
(つまり、上記のルールが追加された後に
.Pa atspeaker
モジュールがロードされた場合)。
.Pp
.Dl "devfs rule applyset"
.Pp
カレントルールセットのすべてのルールを、
存在するすべてのノードに適用しています。
つまり、上記のルールが
.Pa /dev/speaker
を作成した後に追加された場合に、
このコマンドを使用してルール通りにファイルモードを 666 にすることができます。
.Pp
.Dl devfs rule add path "snp*" mode 660 group snoopers
.Pp
(引数を引用符で囲うのは
.Cm パス名
がシェルのファイルグロブ機能で展開されるのを防ぐ必要があるからです。)
パス名が
.Dq Li snp* ,
にマッチするすべてのデバイスのファイルモードを 660 に、GID を
.Dq Li snoopers
に設定します。
このようにすると、
.Dq Li snoopers
グループのユーザが
.Xr snp 4
デバイスを使えるようになります。
.Pp
.Dl "devfs rule -s 20 add major 53 group games"
.Pp
ルールセット 20 番にルールを追加します。
このルールセットは
どこのマウントポイントのカレントルールセットにもなっていないので、
このルールが自動的に適用されることはありません
(後でルールセット 20 番がどこかのマウントポイントの
カレントルールセットになるまでは)。
それでも以下のようにして、明示的にルールを適用することができます:
.Pp
.Dl "devfs -m /my/jail/dev rule -s 20 applyset"
.Pp
このコマンドではルールセット 20 番のすべてのルールを
.Pa /my/jail/dev
の DEVFS マウントに適用しています。
このときには、ルールセット 20 番がそのマウントポイントの
カレントルールセットであるかどうかにかかわりなくルールが適用されます。
.Pp
.Dl "devfs rule apply hide"
.Pp
このルールには条件部がありませんので、
.Pq Cm hide
アクションがすべてのノードに適用されます。
すべてのノードを非表示にするのはあまり便利ではありませんので、
下のようにして取り消すことができます:
.Pp
.Dl "devfs rule apply unhide"
.Pp
このコマンドは
.Cm unhide
をすべてのノードに適用して、
再び表示されるようにしています。
.Pp
.Dl "cat my_rules | devfs rule -s 10 add -"
.Pp
.Pa my_rules
ファイルに書いてあるルールをすべてルールセット 10 番に追加します。
.Pp
.Dl "devfs rule -s 20 show | devfs rule -s 10 add -"
.Pp
.Cm show
コマンドの出力が有効なルールになっているので、
この機能を利用してルールセットをコピーすることができます。
上のコマンドでは、ルールセット 20 番のルールをすべて
ルールセット 10 番にコピーしています。
ルール番号は予約されていますが、
ルールセット 10 番にはすでに
衝突しない番号のルールが入っています (その番号も予約されます)。
.Sh 関連項目
.Xr chmod 1 ,
.Xr jail 2 ,
.Xr glob 3 ,
.Xr devfs 5 ,
.Xr chown 8 ,
.Xr jail 8 ,
.Xr mknod 8
.Sh 作者
.An Dima Dorfman