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 13, 2009 33.Os 34.Dt DEVFSCTL 8 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 conjuction 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 183.Xr devfsctl 8 Ap s 184.Fl m 185option), which is usually 186.Pa /dev . 187.Pp 188Note that for 189.Ic link 190rules, the 191.Ar device 192has to be a single device node and specifying a device type or group (unless 193it contains only one node) is not possible. 194.It Ic perm Ar name Ar user:group Ar mode 195A 196.Ic perm 197rule will applies the specified mode (octal, see 198.Xr chmod 1 ) 199and ownership (see 200.Xr chown 2 ) 201to 202.Ar name . 203.It Ic show Ar name 204This will show previously hidden nodes again. 205.El 206.Sh FILES 207.Bl -tag -width ".Pa /etc/devfs" -compact 208.It Pa /etc/devfs/* 209devfs ruleset files 210.El 211.Sh EXAMPLES 212Examples of valid names: 213.Bd -literal -offset indent 214bpf* 215tun0 216D_DISK 217serno/*s3 218@groupA 219.Ed 220.Pp 221Examples of valid rules: 222.Bd -literal -offset indent 223group foo da* ri* 224group foo ad* 225group foo md* 226 227perm da0 uucp:dialer 0644 228link foo bar 229hide @foo 230show D_DISK 231group g1 a b f g 232group g2 c d 233group g3 @g1 h @g2 i j k D_MEM 234jail yes 235hide @g3 236perm @g3 root:wheel 0644 237jail no 238group cdrom cd* acd* 239group disks da* 240group disks ad* 241group drives @disks @cdrom 242 243group test @disks @g2 y 244show @drives 245show @disks 246show @test 247link da0 "my drives/my new da0" 248.Ed 249.Sh SEE ALSO 250.Xr devfs 5 , 251.Xr mount_devfs 8 252.Sh HISTORY 253The 254.Nm 255utility appeared in 256.Dx 2.3 . 257.Sh AUTHORS 258.An Alex Hornung 259