diff options
-rw-r--r-- | NEWS | 6 | ||||
-rw-r--r-- | src/libudev.c | 10 | ||||
-rw-r--r-- | src/udev-rules.c | 2 | ||||
-rw-r--r-- | src/udev.xml | 14 |
4 files changed, 19 insertions, 13 deletions
@@ -4,6 +4,12 @@ The udev-acl tool is no longer provided, it will be part of a future ConsoleKit release. On systemd systems, advanced ConsoleKit and udev-acl functionality are provided by systemd. +Rules files in /etc/udev/rules.s/ with the same name as rules files in +/run/udev/rules.d/ now always have precedence. The stack of files is now: +/usr/lib (package), /run (runtime, auto-generated), /etc (admin), while +the later ones override the earlier ones. In other words: the admin has +always the last say. + udev 181 ======== diff --git a/src/libudev.c b/src/libudev.c index be24329adc..d954daef68 100644 --- a/src/libudev.c +++ b/src/libudev.c @@ -236,7 +236,7 @@ UDEV_EXPORT struct udev *udev_new(void) fclose(f); } - /* environment overwrites config */ + /* environment overrides config */ env = getenv("UDEV_LOG"); if (env != NULL) udev_set_log_priority(udev, util_log_priority(env)); @@ -260,15 +260,15 @@ UDEV_EXPORT struct udev *udev_new(void) if (!udev->rules_path[0]) goto err; + /* /run/udev -- runtime rules */ + if (asprintf(&udev->rules_path[2], "%s/rules.d", udev->run_path) < 0) + goto err; + /* /etc/udev -- local administration rules */ udev->rules_path[1] = strdup(SYSCONFDIR "/udev/rules.d"); if (!udev->rules_path[1]) goto err; - /* /run/udev -- runtime rules */ - if (asprintf(&udev->rules_path[2], "%s/rules.d", udev->run_path) < 0) - goto err; - udev->rules_path_count = 3; } diff --git a/src/udev-rules.c b/src/udev-rules.c index a5b4b7306a..8a85eae717 100644 --- a/src/udev-rules.c +++ b/src/udev-rules.c @@ -1737,7 +1737,7 @@ static int add_matching_files(struct udev *udev, struct udev_list *file_list, co dbg(udev, "put file '%s' into list\n", filename); /* * the basename is the key, the filename the value - * identical basenames from different directories overwrite each other + * identical basenames from different directories override each other * entries are sorted after basename */ udev_list_entry_add(file_list, dent->d_name, filename); diff --git a/src/udev.xml b/src/udev.xml index 4de434ee51..8eb583a823 100644 --- a/src/udev.xml +++ b/src/udev.xml @@ -72,15 +72,15 @@ <refsect2><title>Rules files</title> <para>The udev rules are read from the files located in the system rules directory <filename>/usr/lib/udev/rules.d</filename>, - the local administration directory <filename>/etc/udev/rules.d</filename> - and the volatile runtime directory <filename>/run/udev/rules.d</filename>. + the volatile runtime directory <filename>/run/udev/rules.d</filename> + and the local administration directory <filename>/etc/udev/rules.d</filename>. All rules files are collectively sorted and processed in lexical order, regardless of the directories in which they live. However, files with - identical file names replace each other. Files in <filename>/run</filename> - have the highest priority, files in <filename>/etc</filename> take precedence + identical file names replace each other. Files in <filename>/etc</filename> + have the highest priority, files in <filename>/run</filename> take precedence over files with the same name in <filename>/lib</filename>. This can be - used to overwrite a system rules file if needed; a symlink in - <filename>/etc</filename> with the same name as a rules file in + used to override a system-supplied rules file with a local file if needed; + a symlink in <filename>/etc</filename> with the same name as a rules file in <filename>/lib</filename>, pointing to <filename>/dev/null</filename>, disables the rules file entirely.</para> @@ -343,7 +343,7 @@ <varlistentry> <term><option>OWNER, GROUP, MODE</option></term> <listitem> - <para>The permissions for the device node. Every specified value overwrites + <para>The permissions for the device node. Every specified value overrides the compiled-in default value.</para> </listitem> </varlistentry> |