]> git.ipfire.org Git - thirdparty/systemd.git/blame - udev.8.in
[PATCH] Try to provide a bit of security for hardlinks to /dev entries.
[thirdparty/systemd.git] / udev.8.in
CommitLineData
d3db5e5e 1.TH UDEV 8 "October 2003" "" "Linux Administrator's Manual"
04db8c9e 2.SH NAME
d3db5e5e 3udev \- Linux configurable dynamic device naming support
04db8c9e 4.SH SYNOPSIS
eb13ff87 5.BI udev " hotplug-subsystem"
bef370d6
KS
6.P
7The environment must provide the following variables:
8.TP
9.B ACTION
10.IR add " or " remove
11signifies the connection or disconnection of a device.
12.TP
13.B DEVPATH
14The sysfs devpath of the device without the mountpoint but a leading slash.
15.P
b86f56ff 16Additional optional environment variables:
bef370d6
KS
17.TP
18.B UDEV_CONFIG_FILE
19Overrides the default location of the
20.B udev
21config file.
22.TP
23.B UDEV_NO_SLEEP
24The default behavior of
25.B udev
fc238cff 26is to wait until all the sysfs files of the device chain are populated. If set,
bef370d6 27.B udev
a3fa7908 28will continue, regardless of the state of the device representation.
fc238cff
KS
29.TP
30.B UDEV_NO_DEVD
31The default behavior of
32.B udev
33is to execute programs in the
34.I /etc/dev.d/
35directory after device handling. If set,
36.B udev
37will skip this step.
04db8c9e
GKH
38.SH "DESCRIPTION"
39.B udev
fc238cff
KS
40provides a dynamic device directory containing only the files for actually
41present devices. It creates or removes device node files usually located in
42the /dev directory, or it renames network interfaces.
43.br
44
eb13ff87 45.P
d3db5e5e 46As part of the
47.B hotplug
48subsystem,
49.B udev
eb13ff87 50is executed if a kernel device is added or removed from the system.
d3db5e5e 51On device creation,
52.B udev
eb13ff87 53reads the sysfs directory of the given device to collect device attributes
d3db5e5e 54like label, serial number or bus device number.
b86f56ff 55These attributes may be used as keys to determine a
fc238cff 56unique name for the device.
da86c7f0
KS
57.B udev
58maintains a database for devices present on the system.
eb13ff87 59.br
d3db5e5e 60On device removal,
61.B udev
4bd46ac7 62queries its database for the name of the device file to be deleted.
eb13ff87 63.SH "CONFIGURATION"
83fa40fc
KS
64All
65.B udev
66configuration files consist of a set of lines of text. All empty
b86f56ff 67lines and lines beginning with a '#' will be ignored.
4865de44
GKH
68.P
69
da86c7f0 70.B udev
4865de44 71expects its main configuration file at
167a27e7 72.IR /etc/udev/udev.conf .
b86f56ff
KS
73The file consists of a set of variables and values allowing the user to
74override default udev values. The following variables can be overridden
75in this file:
4865de44
GKH
76.TP
77.B udev_root
b86f56ff
KS
78Indicates where to place the device nodes in the filesystem. The default
79value is
aef6bb13 80.IR @udevdir@/ .
4865de44
GKH
81.TP
82.B udev_db
b86f56ff 83The name and location of the udev database. The default value is
326e0876 84.IR @udevdir@/.udev.tdb .
4865de44
GKH
85.TP
86.B udev_rules
a5327755
KS
87The name of the udev rules file or directory to look for files with the suffix
88.IR .rules .
89All rule files are read in lexical order. The default value is
aef6bb13 90.IR /etc/udev/rules.d/ .
4865de44
GKH
91.TP
92.B udev_permissions
a5327755
KS
93The name of the udev permission file or directory to look for files with the
94suffix
95.IR .permissions .
96All permission files are read in lexical order. The default value is
aef6bb13 97.IR /etc/udev/permissions.d/ .
4865de44 98.TP
0c040e8d 99.B udev_log
a5327755 100The switch, if udev logs some information for every device handled.
fc238cff 101The default value is
167a27e7 102.IR yes .
0c040e8d 103.TP
4865de44 104.B default_mode
a5327755
KS
105The default mode for all nodes not explicitely matching in the permissions
106file. The default value is
167a27e7 107.IR 0666 .
765cbd97
KS
108.TP
109.B default_owner
a5327755
KS
110The default owner for all nodes not explicitely matching in the permissions
111file. The default value is
167a27e7 112.IR root .
765cbd97
KS
113.TP
114.B default_group
a5327755
KS
115The default group for all nodes not explicitely matching in the permissions
116file. The default value is
167a27e7 117.IR root .
d3db5e5e 118.br
4865de44 119.P
c6c13c31 120.RI "A sample " udev.conf " might look like this:
4865de44
GKH
121.sp
122.nf
b86f56ff 123# udev_root - where to place the device nodes in the filesystem
aef6bb13 124udev_root="/udev"
4865de44 125
b86f56ff 126# udev_db - The name and location of the udev database
aef6bb13 127udev_db="/udev/.udev.tdb"
4865de44 128
a5327755
KS
129# udev_rules - The name of the udev rules file or directory to look
130 for files with the suffix .rules
131udev_rules="/etc/udev/rules.d/"
4865de44 132
aef6bb13
KS
133# udev_permissions - The name of the udev permission file or directory
134 to look for files with the suffix .permissions
4865de44
GKH
135udev_permissions="/etc/udev/udev.permissions"
136
0c040e8d
GKH
137# udev_log - set to "yes" if you want logging, else "no"
138udev_log="yes"
139
b86f56ff
KS
140# default_mode - set the default mode for all nodes not
141# explicitely matching in the permissions file
4865de44 142default_mode="0666"
765cbd97 143
b86f56ff
KS
144# default_owner - set the default owner for all nodes not
145# explicitely matching in the permissions file
765cbd97
KS
146default_owner="root"
147
b86f56ff
KS
148# default_group - set the default group for all nodes not
149# explicitely matching in the permissions file
765cbd97 150default_group="root"
4865de44
GKH
151.fi
152.P
aef6bb13
KS
153The rules for device naming, are read from the files located in the
154.I /etc/udev/rules.d/
155directory, or at the location specified by the
4865de44 156.I udev_rules
d94df232 157value in the
4865de44
GKH
158.I /etc/udev/udev.conf
159file.
aef6bb13 160.br
4bd46ac7 161Every line in the rules file defines the mapping between device attributes
fc238cff
KS
162and the device name. One or more keys are specified to match a rule with
163the current device. If all keys are matching, the rule will be applied and
164the name is used to name the device file or the network interface.
c6c13c31 165.br
4bd46ac7 166If no matching rule is found, the default kernel device name is used.
3370fb21 167.P
c5828665 168Every rule consists of a list of comma separated fields:
eb13ff87 169.sp
311e9ae6 170.IR "key " ,[ "key " ,...] " name " [, " symlink" ]
eb13ff87 171.sp
b86f56ff 172where fields are:
d3db5e5e 173.TP
e15b5ed5 174.B BUS
4bd46ac7
KS
175Match the bus type of the device.
176(The sysfs device bus must be able to be determined by a "device" symlink.)
177.TP
178.B KERNEL
179Match the kernel device name.
180.TP
181.B ID
182Match the device number on the bus, like PCI bus id.
183.TP
184.B PLACE
185Match the topological position on bus, like physical port of USB device
186.TP
16378373 187.BI SYSFS{ filename }
4bd46ac7
KS
188Match sysfs device attribute like label, vendor, USB serial number, SCSI UUID
189or file system label. Up to 5 different sysfs files can be checked, with
b86f56ff 190all of the values being required to match the rule.
d5f91372
KS
191.br
192Trailing whitespace characters in the sysfs attribute value are ignored, if
193the key doesn't have any trailing whitespace characters by itself.
4bd46ac7
KS
194.TP
195.B PROGRAM
196Call external program. This key is valid if the program returns successful.
dde05ccb 197The environment variables of
bef370d6
KS
198.B udev
199are also available for the program.
200.br
b86f56ff 201The string returned by the program may be additionally matched with the
4bd46ac7
KS
202.B RESULT
203key.
204.TP
205.B RESULT
206Match the returned string of the last
207.B PROGRAM
b86f56ff 208call. This key may be used in any following rule after a
4bd46ac7
KS
209.B PROGRAM
210call.
311e9ae6 211.TP
16378373 212.B NAME
fc238cff
KS
213The name of the node to be created, or the name, the network interface
214should be renamed to.
311e9ae6
KS
215.br
216If given with the attribute
16378373 217.BR NAME{ all_partitions }
311e9ae6 218it will create all 15 partitions of a blockdevice.
16378373 219This may be useful for removable media devices.
311e9ae6
KS
220.TP
221.B SYMLINK
222The name of a symlink targeting the node. Multiple symlinks may be
223specified by separating the names by the space character.
2bd07cf2
KS
224.br
225If both the name and the symlink fields are omitted or its
226values empty, the device will be ignored and no node will be created.
227.br
228If only the symlink field is given and the name field is omitted,
229the rule will not be applied immediatly, but the symlink field is added
230to the symlink list of the rule which will create the node.
231This makes it possible to specify additional symlinks in a possibly
232separate rules file, while the device nodes are maintained by the
233distribution provided rules file.
e41016d3
KS
234.TP
235.B OWNER, GROUP, MODE
236The permissions for this device. Every specified value overwrites the value
237given in the permissions file.
16378373 238.P
c6c13c31 239.RB "The " NAME " ," SYMLINK " and " PROGRAM
83fa40fc 240fields support simple printf-like string substitution:
4b710f03
KS
241.TP
242.B %n
c6c13c31 243The "kernel number" of the device.
63ead27c 244For example, 'sda3' has a "kernel number" of '3'.
4b710f03 245.TP
170ae44e
GKH
246.B %k
247The "kernel name" for the device.
248.TP
4b710f03 249.B %M
c6c13c31 250The kernel major number for the device.
4b710f03
KS
251.TP
252.B %m
c6c13c31 253The kernel minor number for the device.
4b710f03
KS
254.TP
255.B %b
c6c13c31 256The bus id for the device.
67922099
GKH
257.TP
258.B %c
b86f56ff 259The string returned from the execution of
e68faf51 260.B PROGRAM
e68faf51
KS
261(This does not work within the
262.B PROGRAM
263field for the obvious reason.)
ad63031e 264.br
b86f56ff 265A single part of the string, separated by a space character
c5828665 266may be selected by specifying the part number as an attribute:
558f80ba
KS
267.BI %c{ N }
268If the number is followed by the + char this part plus
269all remaining parts of the result string are substituted:
270.BI %c{ N+ }
ad63031e
KS
271.TP
272.BI %s{ filename }
273The content of a sysfs attribute.
36043f84 274.TP
b6864b4b 275.B %%
63ead27c
KS
276The '%' character itself.
277.P
278The count of charcters to insert may be limited by specifying
279the format length value. For example, '%3s{file}' will only insert
280the first three characters of the sysfs attribute.
4b710f03 281.P
c6c13c31 282.RI "A sample " udev.rules " might look like this:"
eb13ff87 283.sp
d3db5e5e 284.nf
67922099 285# if /sbin/scsi_id returns "OEM 0815" device will be called disk1
4bd46ac7 286BUS="scsi", PROGRAM="/sbin/scsi_id", RESULT="OEM 0815", NAME="disk1"
67922099 287
d3db5e5e 288# USB printer to be called lp_color
16378373 289BUS="usb", SYSFS{serial}="W09090207101241330", NAME="lp_color"
d3db5e5e 290
b86f56ff 291# SCSI disk with a specific vendor and model number will be called boot
16378373 292BUS="scsi", SYSFS{vendor}="IBM", SYSFS{model}="ST336", NAME="boot%n"
aa9c2a1e 293
d3db5e5e 294# sound card with PCI bus id 00:0b.0 to be called dsp
4bd46ac7 295BUS="pci", ID="00:0b.0", NAME="dsp"
d3db5e5e 296
297# USB mouse at third port of the second hub to be called mouse1
4bd46ac7 298BUS="usb", PLACE="2.3", NAME="mouse1"
d3db5e5e 299
26004fcc 300# ttyUSB1 should always be called pda with two additional symlinks
4bd46ac7 301KERNEL="ttyUSB1", NAME="pda", SYMLINK="palmtop handheld"
3370fb21 302
26004fcc 303# multiple USB webcams with symlinks to be called webcam0, webcam1, ...
16378373 304BUS="usb", SYSFS{model}="XV3", NAME="video%n", SYMLINK="webcam%n"
d3db5e5e 305.fi
eb13ff87 306.P
aef6bb13
KS
307The permissions and ownership of the created device file is read from
308the files located in the
309.I /etc/udev/permissions.d/
310directory, or at the location specified by the
4865de44 311.I udev_permission
c6c13c31 312value in the
4865de44
GKH
313.I /etc/udev/udev.conf
314file.
eb13ff87 315.br
5b8ba50a 316Every line lists a device name followed by owner, group and permission
07d7cfd1 317mode. All values are separated by colons. The name field may contain a
83fa40fc 318pattern to apply the values to a whole class of devices.
eb13ff87 319.sp
c6c13c31 320.RI "A sample " udev.permissions " might look like this:"
eb13ff87
KS
321.sp
322.nf
323#name:user:group:mode
5b8ba50a 324input/*:root:root:644
d0a4a110 325ttyUSB1:0:8:0660
5b8ba50a 326video*:root:video:0660
eb13ff87
KS
327dsp1:::0666
328.fi
07d7cfd1 329.P
a6f01502 330The value
331.I $local
b86f56ff 332can be used instead of a specific username. In that case, udev will determine
a6f01502 333the current local user at the time of device node creation and substitute
334that username as the owner of the new device node. This is useful, for
335example, to let hot-plugged devices, such as cameras, be owned by the user at
336the current console. Note that if no user is currently logged in, or if udev
337otherwise fails to determine a current user, the
338.I default_owner
339value is used in lieu.
340.P
07d7cfd1 341A number of different fields in the above configuration files support a simple
83fa40fc 342form of shell style pattern matching. It supports the following pattern characters:
07d7cfd1
GKH
343.TP
344.B *
345Matches zero, one, or more characters.
346.TP
347.B ?
348Matches any single character, but does not match zero characters.
349.TP
350.B [ ]
351Matches any single character specified within the brackets. For example, the
352pattern string "tty[SR]" would match either "ttyS" or "ttyR". Ranges are also
758f236f
MI
353supported within this match with the '\-' character. For example, to match on
354the range of all digits, the pattern [0\-9] would be used. If the first character
b86f56ff 355following the '[' is a '!', any character not enclosed is matched.
fc238cff
KS
356.P
357After device node creation, removal, or network device renaming,
358.B udev
359executes the programs in the directory tree under
360.IR /etc/dev.d/ .
361The name of a program must end with
362.I .dev
363suffix, to be recognized.
364.br
365In addition to the hotplug environment variables,
366.B DEVNAME
367is exported to make the name of the created node, or the name the network
368device is renamed to, available to the executed program. The programs in every
369directory are sorted in lexical order, while the directories are searched in
370the following order:
371.sp
372.nf
373/etc/dev.d/$(DEVNAME)/*.dev
374/etc/dev.d/$(SUBSYSTEM)/*.dev
375/etc/dev.d/default/*.dev
376.fi
04db8c9e
GKH
377.SH "FILES"
378.nf
04db8c9e 379/sbin/udev udev program
4865de44 380/etc/udev/* udev config files
04db8c9e 381/etc/hotplug.d/default/udev.hotplug hotplug symlink to udev program
fc238cff 382/etc/dev.d/* programs invoked by udev
04db8c9e
GKH
383.fi
384.LP
385.SH "SEE ALSO"
05c0c9da 386.BR udevinfo (8),
bef370d6 387.BR udevd (8),
eb13ff87 388.BR hotplug (8)
04db8c9e
GKH
389.PP
390The
758f236f 391.I http://linux\-hotplug.sourceforge.net/
04db8c9e
GKH
392web site.
393.SH AUTHORS
da86c7f0
KS
394.B udev
395was developed by Greg Kroah-Hartman <greg@kroah.com> with much help from
fc1f0d43
GKH
396Dan Stekloff <dsteklof@us.ibm.com>, Kay Sievers <kay.sievers@vrfy.org>, and
397many others.