xref: /dragonfly/sbin/devfsctl/devfsctl.8 (revision ed183f8c)
1.\"
2.\" Copyright (c) 2009
3.\"	The DragonFly Project.  All rights reserved.
4.\"
5.\" Redistribution and use in source and binary forms, with or without
6.\" modification, are permitted provided that the following conditions
7.\" are met:
8.\"
9.\" 1. Redistributions of source code must retain the above copyright
10.\"    notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice, this list of conditions and the following disclaimer in
13.\"    the documentation and/or other materials provided with the
14.\"    distribution.
15.\" 3. Neither the name of The DragonFly Project nor the names of its
16.\"    contributors may be used to endorse or promote products derived
17.\"    from this software without specific, prior written permission.
18.\"
19.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
23.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
25.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
29.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.Dd August 25, 2009
33.Dt DEVFSCTL 8
34.Os
35.Sh NAME
36.Nm devfsctl
37.Nd manipulate devfs rules
38.Sh SYNOPSIS
39.Nm
40.Fl a
41.Fl f Ar file
42.Op Fl m Ar mount_point
43.Nm
44.Fl d
45.Fl f Ar file
46.Nm
47.Fl c
48.Op Fl m Ar mount_point
49.Nm
50.Fl r
51.Op Fl m Ar mount_point
52.Nm
53.Fl h
54.Sh DESCRIPTION
55The
56.Nm
57provides an interface to manipulate the in-kernel
58.Xr devfs 5
59ruleset.
60.Pp
61The options are as follows:
62.Bl -tag -width indent
63.It Fl a
64Load the ruleset specified by
65.Fl f
66and apply it.
67It will not overwrite currently applied rules,
68but just append the new ones.
69.It Fl c
70Clear the current ruleset.
71This does not reset the device nodes, but only clear out all stored rules
72so that they are not applied to new nodes.
73It is therefore recommended to use this command in conjunction with
74.Fl r .
75.It Fl d
76Reads ruleset specified by
77.Fl f
78and then dumps its contents to stdout.
79The rules will not be applied.
80This option cannot be used in conjunction with any other option.
81It is useful for checking the correct syntax and order of the specified ruleset
82and will show the final interpretation as it would be applied.
83.It Fl f Ar file
84Specifies the file containing the ruleset to be loaded.
85This option is a requirement for
86.Fl a
87and
88.Fl d .
89.It Fl h
90Shows a usage message with a short description of
91.Nm Ap s
92options.
93.It Fl m Ar mount_point
94Specifies the mount point to which the loaded rules shall apply.
95If this option is not specified, the rules will apply to all
96.Xr devfs 5
97mountpoints.
98The
99.Ar mount_point
100argument does not accept wildcards and must be an absolute path.
101.It Fl r
102Reset all
103.Xr devfs 5
104nodes to their original status.
105This does not clear the current ruleset and it is hence recommended
106to use this command together with
107.Fl c .
108.El
109.Sh RULE SYNTAX
110Rules are specified one rule per line, with whitespace separated values.
111Empty lines and lines beginning with a
112.Dq #
113are ignored.
114Once applied, the rules are in effect for existing device nodes as well
115as future ones.
116Rules are applied in the order specified, thus later rules will override
117prior ones.
118.Pp
119Names used in
120.Xr devfs 5
121rules can be either device names (? and * wildcards are allowed), device
122types or existing groups.
123Groups are referenced in rules by prefixing them with
124.Sq @ .
125A device type is one of the following list of special names:
126.Pp
127.Bl -tag -offset indent -width ".Li D_DISK" -compact
128.It Li D_DISK
129disk devices/slices/partitions
130.It Li D_TAPE
131tape devices
132.It Li D_MEM
133(kernel) memory devices
134.It Li D_TTY
135tty devices
136.El
137.Pp
138Rule lines are of the following format:
139.Bd -literal -offset indent
140.Ic action Cm argument ...
141.Ed
142.Pp
143Valid actions are
144.Ic group ,
145.Ic include ,
146.Ic hide ,
147.Ic jail ,
148.Ic link ,
149.Ic perm
150and
151.Ic show :
152.Bl -tag -width indent -offset indent
153.It Ic group Ar group_name Ar name ...
154This will group the specified names into a group of the specified
155.Ar group_name .
156.It Ic include Ar file
157Includes the specified rule file and processes its rules.
158.It Ic hide Ar name
159This will hide the device node(s) specified by
160.Ar name .
161A hidden node will not appear in directory listings and all operations on
162it will fail, except if it is open already.
163By default, everything except
164.Xr pty 4
165nodes is shown.
166.It Ic jail Ar yes|no
167A
168.Sq Ar yes
169argument will cause all following rules to only apply to mounts of
170.Xr devfs 5
171inside a
172.Xr jail 8 ,
173until a
174.Dq Ic jail Ar no
175is reached.
176.It Ic link Ar device Ar path
177.Ic link
178rules will create a link node at the specified
179.Ar link_path
180to the given
181.Ar device .
182The path is relative to the mountpoint being operated on (see the
183.Fl m
184option), which is usually
185.Pa /dev .
186.Pp
187Note that for
188.Ic link
189rules, the
190.Ar device
191has to be a single device node and specifying a device type or group (unless
192it contains only one node) is not possible.
193.It Ic perm Ar name Ar user:group Ar mode
194A
195.Ic perm
196rule will applies the specified mode (octal, see
197.Xr chmod 1 )
198and ownership (see
199.Xr chown 2 )
200to
201.Ar name .
202.It Ic show Ar name
203This will show previously hidden nodes again.
204.El
205.Sh FILES
206.Bl -tag -width ".Pa /etc/devfs" -compact
207.It Pa /etc/defaults/devfs.conf
208Global devfs ruleset file
209.It Pa /etc/devfs.conf
210Local devfs ruleset file
211.El
212.Sh EXAMPLES
213Examples of valid names:
214.Bd -literal -offset indent
215bpf*
216tun0
217D_DISK
218serno/*s3
219@groupA
220.Ed
221.Pp
222Examples of valid rules:
223.Bd -literal -offset indent
224group   foo     da*     ri*
225group   foo     ad*
226group   foo     md*
227
228perm    da0     uucp:dialer 0644
229link    foo     bar
230hide    @foo
231show    D_DISK
232group   g1      a b f g
233group   g2      c d
234group   g3      @g1 h @g2 i j k D_MEM
235jail    yes
236hide    @g3
237perm    @g3     root:wheel 0644
238jail    no
239group   cdrom   cd*     acd*
240group   disks   da*
241group   disks   ad*
242group   drives  @disks  @cdrom
243
244group   test    @disks  @g2     y
245show    @drives
246show    @disks
247show    @test
248link    da0     "my drives/my new da0"
249.Ed
250.Sh SEE ALSO
251.Xr devfs 5 ,
252.Xr mount_devfs 8
253.Sh HISTORY
254The
255.Nm
256utility appeared in
257.Dx 2.3 .
258.Sh AUTHORS
259.An Alex Hornung
260