Submitted by: Yoshihito Ryuzaki <rieuxjp@yahoo.co.jp> Reviewed by: Akira Ikeuchi <a_ikeuchi@mic.mitsumi.co.jp>
368 lines
10 KiB
Groff
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
|