names provide a way to reliably identify devices based on their properties or
current configuration.</para>
- <para>The udev daemon, <citerefentry><refentrytitle>udevd</refentrytitle>
+ <para>The udev daemon, <citerefentry><refentrytitle>systemd-udevd.service</refentrytitle>
<manvolnum>8</manvolnum></citerefentry>, receives device uevents directly from
the kernel whenever a device is added or removed from the system, or it changes its
state. When udev receives a device event, it matches its configured set of rules
The following variables can be set:</para>
<variablelist>
<varlistentry>
- <term><option>udev_log</option></term>
+ <term><varname>udev_log</varname></term>
<listitem>
<para>The logging priority. Valid values are the numerical syslog priorities
or their textual representations: <option>err</option>, <option>info</option>
extensions are ignored.</para>
<para>Every line in the rules file contains at least one key-value pair.
- There are two kind of keys: match and assignment.
+ There are two kinds of keys: match and assignment.
If all match keys are matching against its value, the rule gets applied and the
assignment keys get the specified value assigned.</para>
operators are:</para>
<variablelist>
<varlistentry>
- <term><option>==</option></term>
+ <term><literal>==</literal></term>
<listitem>
<para>Compare for equality.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><option>!=</option></term>
+ <term><literal>!=</literal></term>
<listitem>
<para>Compare for inequality.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><option>=</option></term>
+ <term><literal>=</literal></term>
<listitem>
<para>Assign a value to a key. Keys that represent a list are reset
and only this single value is assigned.</para>
</varlistentry>
<varlistentry>
- <term><option>+=</option></term>
+ <term><literal>+=</literal></term>
<listitem>
<para>Add the value to a key that holds a list of entries.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><option>:=</option></term>
+ <term><literal>:=</literal></term>
<listitem>
<para>Assign a value to a key finally; disallow any later changes.</para>
</listitem>
not only the device that has generated the event. If multiple keys that match
a parent device are specified in a single rule, all these keys must match at
one and the same parent device.</para>
- <variablelist>
+ <variablelist class='udev-directives'>
<varlistentry>
<term><option>ACTION</option></term>
<listitem>
pattern characters are supported:</para>
<variablelist>
<varlistentry>
- <term><option>*</option></term>
+ <term><literal>*</literal></term>
<listitem>
<para>Matches zero or more characters.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><option>?</option></term>
+ <term><literal>?</literal></term>
<listitem>
<para>Matches any single character.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><option>[]</option></term>
+ <term><literal>[]</literal></term>
<listitem>
<para>Matches any single character specified within the brackets. For
example, the pattern string 'tty[SR]' would match either 'ttyS' or 'ttyR'.
</variablelist>
<para>The following keys can get values assigned:</para>
- <variablelist>
+ <variablelist class='udev-directives'>
<varlistentry>
<term><option>NAME</option></term>
<listitem>
<para>The name to use for a network interface. The name of a device node
- can not be changed by udev, only additional symlinks can be created.</para>
+ cannot be changed by udev, only additional symlinks can be created.</para>
</listitem>
</varlistentry>
<term><option>SYMLINK</option></term>
<listitem>
<para>The name of a symlink targeting the node. Every matching rule adds
- this value to the list of symlinks to be created. Multiple symlinks may be
- specified by separating the names by the space character. In case multiple
- devices claim the same name, the link always points to the device with
- the highest link_priority. If the current device goes away, the links are
- re-evaluated and the device with the next highest link_priority becomes the owner of
- the link. If no link_priority is specified, the order of the devices (and
- which one of them owns the link) is undefined. Also, symlink names must
- never conflict with the kernel's default device node names, as that would
- result in unpredictable behavior.
+ this value to the list of symlinks to be created.</para>
+ <para>The set of characters to name a symlink is limited. Allowed
+ characters are [0-9A-Za-z#+-.:=@_/], valid utf8 character sequences,
+ and "\x00" hex encoding. All other characters are replaced by
+ a '_' character.</para>
+ <para>Multiple symlinks may be specified by separating the names by the
+ space character. In case multiple devices claim the same name, the link
+ always points to the device with the highest link_priority. If the current
+ device goes away, the links are re-evaluated and the device with the
+ next highest link_priority becomes the owner of the link. If no
+ link_priority is specified, the order of the devices (and which one of
+ them owns the link) is undefined.</para>
+ <para>Symlink names must never conflict with the kernel's default device
+ node names, as that would result in unpredictable behavior.
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><option>OWNER, GROUP, MODE</option></term>
+ <term><option>OWNER</option>, <option>GROUP</option>, <option>MODE</option></term>
<listitem>
<para>The permissions for the device node. Every specified value overrides
the compiled-in default value.</para>
<term><option>IMPORT{<replaceable>type</replaceable>}</option></term>
<listitem>
<para>Import a set of variables as device properties,
- depending on <replaceable>type</replaceable>:</para>
+ depending on <literal>type</literal>:</para>
<variablelist>
<varlistentry>
- <term><option>program</option></term>
+ <term><literal>program</literal></term>
<listitem>
<para>Execute an external program specified as the assigned value and
import its output, which must be in environment key
</listitem>
</varlistentry>
<varlistentry>
- <term><option>file</option></term>
+ <term><literal>file</literal></term>
<listitem>
<para>Import a text file specified as the assigned value, the content
of which must be in environment key format.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><option>db</option></term>
+ <term><literal>db</literal></term>
<listitem>
<para>Import a single property specified as the assigned value from the
current device database. This works only if the database is already populated
</listitem>
</varlistentry>
<varlistentry>
- <term><option>cmdline</option></term>
+ <term><literal>cmdline</literal></term>
<listitem>
<para>Import a single property from the kernel command line. For simple flags
the value of the property is set to '1'.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><option>parent</option></term>
+ <term><literal>parent</literal></term>
<listitem>
<para>Import the stored keys from the parent device by reading
the database entry of the parent device. The value assigned to
<term><option>OPTIONS</option></term>
<listitem>
<para>Rule and device options:</para>
- <variablelist>
+ <variablelist class='udev-directives'>
<varlistentry>
<term><option>link_priority=<replaceable>value</replaceable></option></term>
<listitem>
<listitem>
<para>Apply the permissions specified in this rule to the static device node with
the specified name. Static device node creation can be requested by kernel modules.
- These nodes might not have a corresponding kernel device at the time udevd is
+ These nodes might not have a corresponding kernel device at the time systemd-udevd is
started; they can trigger automatic kernel module loading.</para>
</listitem>
</varlistentry>
is executed, allowing for the use of device properties set by earlier matching
rules. For all other fields, substitutions are performed while the individual rule is
being processed. The available substitutions are:</para>
- <variablelist>
+ <variablelist class='udev-directives'>
<varlistentry>
<term><option>$kernel</option>, <option>%k</option></term>
<listitem>
</varlistentry>
<varlistentry>
- <term><option>%%</option></term>
+ <term><literal>%%</literal></term>
<listitem>
<para>The '%' character itself.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><option>$$</option></term>
+ <term><literal>$$</literal></term>
<listitem>
<para>The '$' character itself.</para>
</listitem>
<refsect1>
<title>See Also</title>
<para><citerefentry>
- <refentrytitle>udevd</refentrytitle><manvolnum>8</manvolnum>
+ <refentrytitle>systemd-udevd.service</refentrytitle><manvolnum>8</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>udevadm</refentrytitle><manvolnum>8</manvolnum>