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.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 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 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/defaults/devfs.conf 209Global devfs ruleset file 210.It Pa /etc/devfs.conf 211Local devfs ruleset file 212.El 213.Sh EXAMPLES 214Examples of valid names: 215.Bd -literal -offset indent 216bpf* 217tun0 218D_DISK 219serno/*s3 220@groupA 221.Ed 222.Pp 223Examples of valid rules: 224.Bd -literal -offset indent 225group foo da* ri* 226group foo ad* 227group foo md* 228 229perm da0 uucp:dialer 0644 230link foo bar 231hide @foo 232show D_DISK 233group g1 a b f g 234group g2 c d 235group g3 @g1 h @g2 i j k D_MEM 236jail yes 237hide @g3 238perm @g3 root:wheel 0644 239jail no 240group cdrom cd* acd* 241group disks da* 242group disks ad* 243group drives @disks @cdrom 244 245group test @disks @g2 y 246show @drives 247show @disks 248show @test 249link da0 "my drives/my new da0" 250.Ed 251.Sh SEE ALSO 252.Xr devfs 5 , 253.Xr mount_devfs 8 254.Sh HISTORY 255The 256.Nm 257utility appeared in 258.Dx 2.3 . 259.Sh AUTHORS 260.An Alex Hornung 261