DEVFS
Section: Maintenance Commands (8)
索引
jman
BSD mandoc
索引
名称
devfs
- DEVFS 制御コマンド
索引
書式
[-m mount-point
]
keyword
argument ...
索引
解説
ユーティリティは、マウントされた
devfs(5)
のプロパティを操作するためのインタフェースです。
keyword
引数で残りの引数のコンテキストを指定します。
例えば、
ほとんどのルールサブシステム関連のコマンドの前には
rule
キーワードをつけなければならないことになっています。
次のフラグはすべてのキーワードに共通のものです:
- -m mount-point
-
操作する
mount-point
を指定します。
ここには、
devfs(5)
がマウントされていなければなりません。
このオプションがない時には、
は
/dev
を操作します。
ルールサブシステム
devfs(5)
のルールサブシステムは、システム管理者が DEVFS の各ノードの属性を変更できる
ようにするためのものです。
DEVFS マウントポイントにはそれぞれに
``ruleset''
(ルールセット) というルールのリストが関連づけられています。
デバイスドライバが新しいノードを作成する時には、
そのノードがユーザランドから見えるようになる前に
それぞれのマウントポイントに関連づけられているルールセットの
すべてのルールが適用されます (下記参照) 。
これによって、管理者がノードの可視性を含めた属性を変更することが
できるようになっています。
例えば、
jail(2)
の
/dev
にあるすべてのディスクノードを隠すというようなこともできます。
ルールの操作
ルール操作コマンドは
rule
キーワードに続けて使用します。
次のフラグは、すべてのルール操作コマンドに共通のものです :
- -s ruleset
-
ruleset
で指定したルールセットを操作します。
このフラグが指定されていない時は、
指定したマウントポイントに現在関連づけられているルールセットを
操作します。
次のコマンドが使用できます:
- rule add [rulenum rulespec
]
-
rulespec
(下記参照)
で、記述されたルールをルールセットに追加します。
ルール番号は、
rulenum
が明示的に指定されている場合にはその番号に、
指定されていない場合には自動的にカーネルによって決められます。
- rule apply rulenum | rulespec
-
ルール番号
rulenum
または
rulespec
で、指定されたルールをマウントポイントに適用します。
``適用される''
ルールには条件があって、マウントポイントのすべてのノードに対して
チェックを行い、条件が一致すれば指定のアクションを起こします。
- rule applyset
-
ルールセットのすべてのルールをマウントポイントに適用します
(上記
``apply''
の説明を参照) 。
- rule del rulenum
-
ルールセットからルール番号
rulenum
のルールを削除します。
- rule delset
-
指定したルールセットのすべてのルールを削除します。
- rule show [rulenum
]
-
rulenum
で指定したルール番号のルール、
またはルールセットのすべてのルールを表示します。
出力行は (ルール毎に 1 行ずつ) 正しい
rulespec になっています。
- rule showsets
-
設定されているルールセットの番号を表示します。
- ruleset ruleset
-
ruleset
で指定した番号のルールセットをマウントポイントのカレントルールセットにします。
ルール仕様
ルールには 2 つのパートがあります: 条件部とアクション部です。
条件部でルールを適用する DEVFS ノードを指定し、
アクション部でルールが当てはまるノードに何をするかを指定します。
例えば、メジャー番号が 53 のすべてのデバイスの GID を
``games
''
に設定するルールを書くこともできます。
ルール指定の最初のトークンがダッシュ文字 1 つ
(`-
'
)
の場合、ルールは標準入力から読み込まれて残りの指定は無視されます。
次のような条件が使用できます。
デバイスをチェックする時には、条件は AND されます。
OR 条件を使いたい時には、複数のルールを書いてください。
- major majdev
-
メジャー番号が
majdev
のすべてのノードに適合します。
- path pattern
-
パス名が
pattern
に合うノードすべてに適合します。
このパターンは
glob(3)
と同じパターンで解析されます。
- type devtype
-
タイプが
devtype
のすべてのノードに適合します。
使用できるタイプは
disk , mem , tape
および
tty
です。
次のようなアクションが使用できます。
条件部とアクション部の間には特にデリミタはありませんが、
混乱することはないでしょう。
- group gid
-
ノードのグループ ID を
gid
に設定します。
グループ名
( /etc/group
で照会されます)
または、数値で指定します。
- hide
-
ノードを隠します。
隠されたノードは、マニュアルで
mknod(8)
を使用するか、
unhide
アクションを使用するとまた見えるようになります。
- include ruleset
-
ルールセット番号が
ruleset
のルールセットのすべてのルールをノードに適用します。
これによってノードが変更されるとは限りません
(例えば、ルールセットに一致するルールがない場合など)。
- mode filemode
-
ファイルのモードを
filemode
に設定します。
8 進数として解釈されます。
- user uid
-
ユーザ ID を
uid
に設定します。ユーザ名
( /etc/passwd
で照会されます) または数値で指定します。
- unhide
-
ノードを見えるようにします。
索引
実装に関する注
ルールセットは、最初に参照される時にカーネルによって作成され、
最後の参照がなくなる時に削除されます。
すなわち、ルールセットはルールが追加される時かどこかのマウントポイントの
カレントルールセットに設定された時に作成されます。
また、セットの中の最後のルールが削除される時でもう他からの参照もない
(つまり、他のルールにインクルードされてもなく、
どのマウントポイントのカレントルールセットにもなっていない)
時に削除されます。
ルールセット 0 番は
すべての新しいマウントポイントのデフォルトルールセットです。
このルールセットは常に空で、変更や削除はできず、
showsets
コマンドの出力にも表示されません。
ルールやルールセットは特定のマウントポイント毎ではなく、
システム全体で一意です。
つまり、
showsets
は、
-m
で指定したマウントポイントにかかわらず、常に同じ情報を表示します。
マウントポイントが有効なのは、
カレントルールセットを変更する時や apply コマンドを使用する時だけです。
索引
実行例
システム起動時には、
ルールセット 0 番のみが存在しますが、
このルールセットは後から変更することができないので、
ルールを追加する前に別のルールセットを作成しなければなりません。
以下の例ではほとんど
-m
オプションを指定していませんので、
操作は
/dev
に対して実行されることに注意してください
(これは、ノードのプロパティを変更するものだけが問題だからです) 。
"devfs ruleset 10"
ルールセット 10 番を
/dev
のカレントルールセットに指定しています
(もし、存在していなければ作成されます)。
"devfs rule add path speaker mode 666"
パス名が
``speaker
''
にマッチするすべてのノード
(これは
/dev/speaker
だけですが)
をファイルモード 666
(すべてのユーザが読み書き可能) にするルールを追加しています。
気をつけて欲しいのは、そのようなノードが既に存在する場合には、
このルール (やルールセット) が明示的に適用される (下記参照) まで
そのノードは変更されないということです。
モードが変更
される
のはルールが追加された
後に
ノードが作成された場合です
(つまり、上記のルールが追加された後に
atspeaker
モジュールがロードされた場合)。
"devfs rule applyset"
カレントルールセットのすべてのルールを、
存在するすべてのノードに適用しています。
つまり、上記のルールが
/dev/speaker
を作成した後に追加された場合に、
このコマンドを使用してルール通りにファイルモードを 666 にすることができます。
devfs rule add path "snp*" mode 660 group snoopers
(引数を引用符で囲うのは
パス名
がシェルのファイルグロブ機能で展開されるのを防ぐ必要があるからです。)
パス名が
``snp*
''
にマッチするすべてのデバイスのファイルモードを 660 に、GID を
``snoopers
''
に設定します。
このようにすると、
``snoopers
''
グループのユーザが
snp(4)
デバイスを使えるようになります。
"devfs rule -s 20 add major 53 group games"
ルールセット 20 番にルールを追加します。
このルールセットは
どこのマウントポイントのカレントルールセットにもなっていないので、
このルールが自動的に適用されることはありません
(後でルールセット 20 番がどこかのマウントポイントの
カレントルールセットになるまでは)。
それでも以下のようにして、明示的にルールを適用することができます:
"devfs -m /my/jail/dev rule -s 20 applyset"
このコマンドではルールセット 20 番のすべてのルールを
/my/jail/dev
の DEVFS マウントに適用しています。
このときには、ルールセット 20 番がそのマウントポイントの
カレントルールセットであるかどうかにかかわりなくルールが適用されます。
"devfs rule apply hide"
このルールには条件部がありませんので、
(hide
)
アクションがすべてのノードに適用されます。
すべてのノードを非表示にするのはあまり便利ではありませんので、
下のようにして取り消すことができます:
"devfs rule apply unhide"
このコマンドは
unhide
をすべてのノードに適用して、
再び表示されるようにしています。
"cat my_rules | devfs rule -s 10 add -"
my_rules
ファイルに書いてあるルールをすべてルールセット 10 番に追加します。
"devfs rule -s 20 show | devfs rule -s 10 add -"
show
コマンドの出力が有効なルールになっているので、
この機能を利用してルールセットをコピーすることができます。
上のコマンドでは、ルールセット 20 番のルールをすべて
ルールセット 10 番にコピーしています。
ルール番号は予約されていますが、
ルールセット 10 番にはすでに
衝突しない番号のルールが入っています (その番号も予約されます)。
索引
関連項目
chmod(1),
jail(2),
glob(3),
devfs(5),
chown(8),
jail(8),
mknod(8)
索引
作者
An Dima Dorfman
索引
Index
- 名称
-
- 書式
-
- 解説
-
- ルールサブシステム
-
- ルールの操作
-
- ルール仕様
-
- 実装に関する注
-
- 実行例
-
- 関連項目
-
- 作者
-
Time: 07:07:36 GMT, January 12, 2009