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