From 8b36cc0f179ee35176016ab67ae53078df4110fa Mon Sep 17 00:00:00 2001 From: "kay.sievers@vrfy.org" Date: Sat, 18 Dec 2004 11:34:17 +0100 Subject: [PATCH] [PATCH] complete removal of explicit udev permissions config file --- FAQ | 4 - Makefile | 8 -- docs/rh_udev_for_dev.txt | 16 ++-- etc/udev/udev.conf.in | 9 +- namedev.c | 47 +--------- namedev.h | 15 ---- namedev_parse.c | 170 ++---------------------------------- test/devd_test | 1 - test/net_test | 1 - test/replace_test | 1 - test/udev-test.pl | 183 ++++----------------------------------- test/udev.permissions | 22 ----- udev.8.in | 38 +------- udev.c | 2 +- udev.h | 1 - udev.spec | 3 - udev_config.c | 10 --- 17 files changed, 38 insertions(+), 493 deletions(-) delete mode 100644 test/udev.permissions diff --git a/FAQ b/FAQ index 45337bf63..bd9d63a4d 100644 --- a/FAQ +++ b/FAQ @@ -72,10 +72,6 @@ A: udev is entirely in userspace. If the kernel supports a greater number Q: Will udev support symlinks? A: Yes, It now does. Multiple symlinks per device node too. -Q: How will udev support changes to device permissions? -A: On shutdown, udev will save the state of existing device permissions to - its database, and then used the on the next boot time. - Q: How will udev handle the /dev filesystem? A: /dev can be a ramfs, or a backing filesystem. udev does not care what kind of filesystem it runs on. diff --git a/Makefile b/Makefile index 4fc6ce72e..52c1d47b2 100644 --- a/Makefile +++ b/Makefile @@ -284,7 +284,6 @@ udev_version.h: @echo \#define UDEV_CONFIG_DIR \"$(configdir)\" >> $@ @echo \#define UDEV_CONFIG_FILE \"$(configdir)/udev.conf\" >> $@ @echo \#define UDEV_RULES_FILE \"$(configdir)/rules.d\" >> $@ - @echo \#define UDEV_PERMISSION_FILE \"$(configdir)/permissions.d\" >> $@ @echo \#define UDEV_LOG_DEFAULT \"yes\" >> $@ @echo \#define UDEV_BIN \"$(DESTDIR)$(sbindir)/udev\" >> $@ @echo \#define UDEVD_BIN \"$(DESTDIR)$(sbindir)/udevd\" >> $@ @@ -381,7 +380,6 @@ small_release: $(DISTFILES) spotless install-config: $(INSTALL) -d $(DESTDIR)$(configdir)/rules.d - $(INSTALL) -d $(DESTDIR)$(configdir)/permissions.d @if [ ! -r $(DESTDIR)$(configdir)/udev.conf ]; then \ echo $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.conf $(DESTDIR)$(configdir); \ $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.conf $(DESTDIR)$(configdir); \ @@ -390,10 +388,6 @@ install-config: echo $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.rules $(DESTDIR)$(configdir)/rules.d/50-udev.rules; \ $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.rules $(DESTDIR)$(configdir)/rules.d/50-udev.rules; \ fi - @if [ ! -r $(DESTDIR)$(configdir)/permissions.d/50-udev.permissions ]; then \ - echo $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.permissions $(DESTDIR)$(configdir)/permissions.d/50-udev.permissions; \ - $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.permissions $(DESTDIR)$(configdir)/permissions.d/50-udev.permissions; \ - fi install-dev.d: $(INSTALL) -d $(DESTDIR)$(dev_ddir)/default @@ -444,10 +438,8 @@ endif uninstall: uninstall-man uninstall-dev.d - rm $(hotplugdir)/10-udev.hotplug - rm $(configdir)/rules.d/50-udev.rules - - rm $(configdir)/permissions.d/50-udev.permissions - rm $(configdir)/udev.conf - rmdir $(configdir)/rules.d - - rmdir $(configdir)/permissions.d - rmdir $(configdir) - rm $(sbindir)/$(ROOT) - rm $(sbindir)/$(DAEMON) diff --git a/docs/rh_udev_for_dev.txt b/docs/rh_udev_for_dev.txt index 1a21c0e59..0b66868d7 100644 --- a/docs/rh_udev_for_dev.txt +++ b/docs/rh_udev_for_dev.txt @@ -12,19 +12,13 @@ Q. I login as my normal self from the login screen and RH just hangs on an empty blue screen. What's wrong? A. You have some wrong permissions. I'm guessing you can probably log in as root - but not as your normal user. Basically you need to edit the - /etc/udev/udev.permissions file to set the correct permissions to the nodes - in /dev. I added the following: - - null:root:users:0666 - urandom:root:users:0644 - - setting the correct permissions to null and urandom allowed me to login - as myself and not at root. + but not as your normal user. Basically you need to set the right + permissions with a rule. Setting the correct permissions to null and urandom + allowed me to login as myself and not at root. While you are there you might want to set the permissions to ptmx as well - or you may have trouble getting a bash prompt in an xterm. i.e. - ptmx:root:users:0666 Also refer to the next question. + or you may have trouble getting a bash prompt in an xterm. Also refer to the + next question. Q. I'm having trouble getting a bash prompt from my xterm. i.e. I bring up a terminal and all I have is a blank screen with a blinking cursor. diff --git a/etc/udev/udev.conf.in b/etc/udev/udev.conf.in index bbbb1a93a..295e39ffd 100644 --- a/etc/udev/udev.conf.in +++ b/etc/udev/udev.conf.in @@ -14,19 +14,16 @@ udev_db="@udevdir@/.udevdb" # udev_rules - The name and location of the udev rules file udev_rules="@configdir@/rules.d" -# udev_permissions - The name and location of the udev permission file -udev_permissions="@configdir@/permissions.d" - # default_mode - set the default mode for all nodes that have no -# explicit match in the permissions file +# permissions specified default_mode="0600" # default_owner - set the default owner for all nodes that have no -# explicit match in the permissions file + # permissions specified default_owner="root" # default_group - set the default group for all nodes that have no -# explicit match in the permissions file + # permissions specified default_group="root" # udev_log - set to "yes" if you want logging, else "no" diff --git a/namedev.c b/namedev.c index 9cfc4283b..be7ae12cd 100644 --- a/namedev.c +++ b/namedev.c @@ -43,10 +43,6 @@ static struct sysfs_attribute *find_sysfs_attribute(struct sysfs_class_device *class_dev, struct sysfs_device *sysfs_device, char *attr); -LIST_HEAD(config_device_list); -LIST_HEAD(perm_device_list); - - /* compare string with pattern (supports * ? [0-9] [!A-Z]) */ static int strcmp_pattern(const char *p, const char *s) { @@ -100,18 +96,6 @@ static int strcmp_pattern(const char *p, const char *s) return 1; } -static struct perm_device *find_perm_entry(const char *name) -{ - struct perm_device *perm; - - list_for_each_entry(perm, &perm_device_list, node) { - if (strcmp_pattern(perm->name, name)) - continue; - return perm; - } - return NULL; -} - /* extract possible {attr} and move str behind it */ static char *get_format_attribute(char **str) { @@ -694,7 +678,6 @@ int namedev_name_device(struct udevice *udev, struct sysfs_class_device *class_d struct sysfs_class_device *class_dev_parent; struct sysfs_device *sysfs_device = NULL; struct config_device *dev; - struct perm_device *perm; char *pos; udev->mode = 0; @@ -792,18 +775,7 @@ int namedev_name_device(struct udevice *udev, struct sysfs_class_device *class_d goto exit; perms: - /* apply permissions from permissions file to empty fields */ - perm = find_perm_entry(udev->name); - if (perm != NULL) { - if (udev->mode == 0000) - udev->mode = perm->mode; - if (udev->owner[0] == '\0') - strfieldcpy(udev->owner, perm->owner); - if (udev->group[0] == '\0') - strfieldcpy(udev->group, perm->group); - } - - /* apply permissions from config to empty fields */ + /* apply default permissions to empty fields */ if (udev->mode == 0000) udev->mode = default_mode; if (udev->owner[0] == '\0') @@ -817,20 +789,3 @@ perms: exit: return 0; } - -int namedev_init(void) -{ - int retval; - - retval = namedev_init_rules(); - if (retval) - return retval; - - retval = namedev_init_permissions(); - if (retval) - return retval; - - dump_config_dev_list(); - dump_perm_dev_list(); - return retval; -} diff --git a/namedev.h b/namedev.h index e29279243..8a3569ec7 100644 --- a/namedev.h +++ b/namedev.h @@ -58,7 +58,6 @@ struct sysfs_class_device; #define MAX_SYSFS_PAIRS 5 #define RULEFILE_SUFFIX ".rules" -#define PERMFILE_SUFFIX ".permissions" struct sysfs_pair { char file[FILE_SIZE]; @@ -88,26 +87,12 @@ struct config_device { int config_line; }; -struct perm_device { - struct list_head node; - - char name[NAME_SIZE]; - char owner[USER_SIZE]; - char group[USER_SIZE]; - unsigned int mode; -}; - extern struct list_head config_device_list; -extern struct list_head perm_device_list; extern int namedev_init(void); extern int namedev_name_device(struct udevice *udev, struct sysfs_class_device *class_dev); -extern int namedev_init_permissions(void); -extern int namedev_init_rules(void); extern void dump_config_dev(struct config_device *dev); extern void dump_config_dev_list(void); -extern void dump_perm_dev(struct perm_device *dev); -extern void dump_perm_dev_list(void); #endif diff --git a/namedev_parse.c b/namedev_parse.c index 5b8c5ab2d..7190cdd1a 100644 --- a/namedev_parse.c +++ b/namedev_parse.c @@ -40,6 +40,7 @@ #include "logging.h" #include "namedev.h" +LIST_HEAD(config_device_list); static int add_config_dev(struct config_device *new_dev) { @@ -74,53 +75,6 @@ void dump_config_dev_list(void) dump_config_dev(dev); } -static int add_perm_dev(struct perm_device *new_dev) -{ - struct perm_device *dev; - struct perm_device *tmp_dev; - - /* if we already have that entry, just update the values */ - list_for_each_entry(dev, &perm_device_list, node) { - if (strcmp(new_dev->name, dev->name) != 0) - continue; - - /* don't overwrite values from earlier entries */ - if (dev->mode == 0000) - dev->mode = new_dev->mode; - if (dev->owner[0] == '\0') - strfieldcpy(dev->owner, new_dev->owner); - if (dev->owner[0] == '\0') - strfieldcpy(dev->group, new_dev->group); - - return 0; - } - - /* not found, add new structure to the perm list */ - tmp_dev = malloc(sizeof(*tmp_dev)); - if (!tmp_dev) - return -ENOMEM; - - memcpy(tmp_dev, new_dev, sizeof(*tmp_dev)); - list_add_tail(&tmp_dev->node, &perm_device_list); - /* dump_perm_dev(tmp_dev); */ - - return 0; -} - -void dump_perm_dev(struct perm_device *dev) -{ - dbg_parse("name='%s', owner='%s', group='%s', mode=%#o", - dev->name, dev->owner, dev->group, dev->mode); -} - -void dump_perm_dev_list(void) -{ - struct perm_device *dev; - - list_for_each_entry(dev, &perm_device_list, node) - dump_perm_dev(dev); -} - /* extract possible KEY{attr} */ static char *get_key_attribute(char *str) { @@ -143,7 +97,7 @@ static char *get_key_attribute(char *str) return NULL; } -static int namedev_parse_rules(const char *filename, void *data) +static int namedev_parse(const char *filename, void *data) { char line[LINE_SIZE]; char *bufline; @@ -362,124 +316,18 @@ error: return retval; } -static int namedev_parse_permissions(const char *filename, void *data) +int namedev_init(void) { - char line[LINE_SIZE]; - char *bufline; - char *temp; - char *temp2; - char *buf; - size_t bufsize; - size_t cur; - size_t count; - int retval = 0; - struct perm_device dev; - int lineno; + struct stat stats; + int retval; - if (file_map(filename, &buf, &bufsize) == 0) { - dbg("reading '%s' as permissions file", filename); - } else { - dbg("can't open '%s' as permissions file", filename); + if (stat(udev_rules_filename, &stats) != 0) return -1; - } - - /* loop through the whole file */ - cur = 0; - lineno = 0; - while (cur < bufsize) { - count = buf_get_line(buf, bufsize, cur); - bufline = &buf[cur]; - cur += count+1; - lineno++; - - if (count >= LINE_SIZE) { - info("line too long, rule skipped %s, line %d", - filename, lineno); - continue; - } - - /* eat the whitespace */ - while ((count > 0) && isspace(bufline[0])) { - bufline++; - count--; - } - if (count == 0) - continue; - - /* see if this is a comment */ - if (bufline[0] == COMMENT_CHARACTER) - continue; - - strncpy(line, bufline, count); - line[count] = '\0'; - dbg_parse("read '%s'", line); - - /* parse the line */ - memset(&dev, 0x00, sizeof(struct perm_device)); - temp = line; - - temp2 = strsep(&temp, ":"); - if (!temp2) { - dbg("cannot parse line '%s'", line); - continue; - } - strfieldcpy(dev.name, temp2); - - temp2 = strsep(&temp, ":"); - if (!temp2) { - dbg("cannot parse line '%s'", line); - continue; - } - strfieldcpy(dev.owner, temp2); - temp2 = strsep(&temp, ":"); - if (!temp2) { - dbg("cannot parse line '%s'", line); - continue; - } - strfieldcpy(dev.group, temp2); - - if (!temp) { - dbg("cannot parse line '%s'", line); - continue; - } - dev.mode = strtol(temp, NULL, 8); - - dbg_parse("name='%s', owner='%s', group='%s', mode=%#o", - dev.name, dev.owner, dev.group, dev.mode); - - retval = add_perm_dev(&dev); - if (retval) { - dbg("add_perm_dev returned with error %d", retval); - goto exit; - } - } - -exit: - file_unmap(buf, bufsize); - return retval; -} - -int namedev_init_rules(void) -{ - struct stat stats; - - stat(udev_rules_filename, &stats); if ((stats.st_mode & S_IFMT) != S_IFDIR) - return namedev_parse_rules(udev_rules_filename, NULL); + retval = namedev_parse(udev_rules_filename, NULL); else - return call_foreach_file(namedev_parse_rules, udev_rules_filename, - RULEFILE_SUFFIX, NULL); -} + retval = call_foreach_file(namedev_parse, udev_rules_filename, RULEFILE_SUFFIX, NULL); -int namedev_init_permissions(void) -{ - struct stat stats; - - stat(udev_permissions_filename, &stats); - if ((stats.st_mode & S_IFMT) != S_IFDIR) - return namedev_parse_permissions(udev_permissions_filename, NULL); - else - return call_foreach_file(namedev_parse_permissions, udev_permissions_filename, - PERMFILE_SUFFIX, NULL); + return retval; } diff --git a/test/devd_test b/test/devd_test index 6e4c20635..269c2b11d 100644 --- a/test/devd_test +++ b/test/devd_test @@ -16,7 +16,6 @@ cat > $CONFIG << EOF udev_root="$PWD/udev/" udev_db="$PWD/udev/.udevdb" udev_rules="$PWD/$RULES" -udev_permissions="$PWD/udev.permissions" EOF mkdir udev diff --git a/test/net_test b/test/net_test index ec0dea464..9686f9925 100644 --- a/test/net_test +++ b/test/net_test @@ -15,7 +15,6 @@ cat > $CONFIG << EOF udev_root="$PWD/udev/" udev_db="$PWD/udev/.udevdb" udev_rules="$PWD/$RULES" -udev_permissions="$PWD/udev.permissions" EOF mkdir udev diff --git a/test/replace_test b/test/replace_test index 9445b7262..19260765b 100644 --- a/test/replace_test +++ b/test/replace_test @@ -15,7 +15,6 @@ cat > $CONFIG << EOF udev_root="$PWD/udev/" udev_db="$PWD/udev/.udevdb" udev_rules="$PWD/$RULES" -udev_permissions="$PWD/udev.permissions" EOF mkdir udev diff --git a/test/udev-test.pl b/test/udev-test.pl index 3f9a84849..8ee8ba541 100644 --- a/test/udev-test.pl +++ b/test/udev-test.pl @@ -31,7 +31,6 @@ my $sysfs = "sys/"; my $udev_bin = "../udev"; my $udev_root = "udev-root/"; # !!! directory will be removed !!! my $udev_db = ".udevdb"; -my $perm = "udev.permissions"; my $main_conf = "udev-test.conf"; my $conf_tmp = "udev-test.rules"; @@ -503,167 +502,17 @@ BUS="scsi", SYSFS{whitespace_test}="WHITE SPACE ", NAME="matched-with-space" EOF }, { - desc => "permissions test", - subsys => "block", - devpath => "/block/sda", - exp_name => "node", - exp_perms => "5000::0444", - conf => < "permissions ttyUSB0:root:uucp:0660", - subsys => "tty", - devpath => "/class/tty/ttyUSB0", - exp_name => "ttyUSB0", - exp_perms => "0:14:0660", - conf => < "permissions tty0::root:0444", - subsys => "tty", - devpath => "/class/tty/tty0", - exp_name => "tty0", - exp_perms => "0:0:0444", - conf => < "permissions tty1:root::0555", - subsys => "tty", - devpath => "/class/tty/tty1", - exp_name => "tty1", - exp_perms => "0:0:0555", - conf => < "permissions tty2:::0777", - subsys => "tty", - devpath => "/class/tty/tty2", - exp_name => "tty2", - exp_perms => "0:0:0777", - conf => < "permissions tty3::: (default mode applied)", - subsys => "tty", - devpath => "/class/tty/tty3", - exp_name => "tty3", - exp_perms => "0:0:600", - conf => < "permissions i2c-300:root:sys:0744", - subsys => "i2c-dev", - devpath => "/class/i2c-dev/i2c-300", - exp_name => "i2c-300", - exp_perms => "0:3:0744", - conf => < "permissions i2c-fake1:root:7:0007", - subsys => "i2c-dev", - devpath => "/class/i2c-dev/i2c-fake1", - exp_name => "i2c-fake1", - exp_perms => "0:7:0007", - conf => < "permissions ttyS[01]:0:5:0700", - subsys => "tty", - devpath => "/class/tty/ttyS1", - exp_name => "ttyS1", - exp_perms => "0:5:0700", - conf => < "permissions ttyS[4-9]:tty:5:0060", - subsys => "tty", - devpath => "/class/tty/ttyS7", - exp_name => "ttyS7", - exp_perms => "0:5:0060", - conf => < "permissions tty4:0:5:0707", - subsys => "ttyS4", - devpath => "/class/tty/tty4", - exp_name => "tty4", - exp_perms => "0:5:0707", - conf => < "permissions tty4?:0:5:0007", - subsys => "tty", - devpath => "/class/tty/tty44", - exp_name => "tty44", - exp_perms => "0:5:0007", - conf => < "permissions tty3[!3]:::0467", - subsys => "tty", - devpath => "/class/tty/tty35", - exp_name => "tty35", - exp_perms => "0:0:0467", - conf => < "permissions tty33:bad:name:0500", + desc => "permissions USER=bad GROUP=name", subsys => "tty", devpath => "/class/tty/tty33", exp_name => "tty33", - exp_perms => "0:0:0500", - conf => < "permissions rtc:0:users:0600", - subsys => "misc", - devpath => "/class/misc/rtc", - exp_name => "misc/rtc", - exp_perms => "0:100:0600", + exp_perms => "0:0:0600", conf => < "permissions misc:0:users:0600", - subsys => "misc", - devpath => "/class/misc/psaux", - exp_name => "misc/psaux", - exp_perms => "0:100:0600", - conf => < "permissions set OWNER=5000", + desc => "permissions OWNER=5000", subsys => "block", devpath => "/block/sda", exp_name => "node", @@ -673,7 +522,7 @@ BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000" EOF }, { - desc => "permissions set GROUP=100", + desc => "permissions GROUP=100", subsys => "block", devpath => "/block/sda", exp_name => "node", @@ -683,7 +532,7 @@ BUS="scsi", KERNEL="sda", NAME="node", GROUP="100" EOF }, { - desc => "permissions set mode=0777", + desc => "permissions MODE=0777", subsys => "block", devpath => "/block/sda", exp_name => "node", @@ -693,7 +542,7 @@ BUS="scsi", KERNEL="sda", NAME="node", MODE="0777" EOF }, { - desc => "permissions set OWNER=5000 GROUP=100 MODE=0777", + desc => "permissions OWNER=5000 GROUP=100 MODE=0777", subsys => "block", devpath => "/block/sda", exp_name => "node", @@ -703,37 +552,37 @@ BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000", GROUP="100", MODE="0777" EOF }, { - desc => "permissions override OWNER to 5000", + desc => "permissions OWNER to 5000", subsys => "tty", devpath => "/class/tty/ttyUSB0", exp_name => "ttyUSB0", - exp_perms => "5000:14:0660", + exp_perms => "5000::", conf => < "permissions override GROUP to 100", + desc => "permissions GROUP to 100", subsys => "tty", devpath => "/class/tty/ttyUSB0", exp_name => "ttyUSB0", - exp_perms => ":100:0660", + exp_perms => ":100:0600", conf => < "permissions override MODE to 0060", + desc => "permissions MODE to 0060", subsys => "tty", devpath => "/class/tty/ttyUSB0", exp_name => "ttyUSB0", - exp_perms => ":14:0060", + exp_perms => "::0060", conf => < "permissions override OWNER, GROUP, MODE", + desc => "permissions OWNER, GROUP, MODE", subsys => "tty", devpath => "/class/tty/ttyUSB0", exp_name => "ttyUSB0", @@ -1336,7 +1185,9 @@ open CONF, ">$main_conf" || die "unable to create config file: $main_conf"; print CONF "udev_root=\"$udev_root\"\n"; print CONF "udev_db=\"$udev_db\"\n"; print CONF "udev_rules=\"$conf_tmp\"\n"; -print CONF "udev_permissions=\"$perm\"\n"; +print CONF "default_mode=\"0600\"\n"; +print CONF "default_owner=\"root\"\n"; +print CONF "default_group=\"root\"\n"; close CONF; my $test_num = 1; diff --git a/test/udev.permissions b/test/udev.permissions deleted file mode 100644 index b7baeea7b..000000000 --- a/test/udev.permissions +++ /dev/null @@ -1,22 +0,0 @@ -#name:user:group:mode -ttyUSB0:root:uucp:0660 -ttyUSB1:root:uucp:0666 -visor:500:500:0666 -dsp1:::0666 -boot_disk?:::0666 - -#used for permissions tests in udev-test.pl -tty0::root:0444 -tty1:root::0555 -tty2:::0777 -tty3::: -rtc:0:6:0770 -misc/*:0:users:0600 -i2c-fake1:root:7:0007 -i2c*:root:sys:0744 -ttyS[01]:0:5:0700 -ttyS[5-9]:root:5:0060 -tty4::tty:0707 -tty4?::tty:0007 -tty3[!3]:::0467 -tty33:bad:name:0500 diff --git a/udev.8.in b/udev.8.in index 328f602e0..90b7d8330 100644 --- a/udev.8.in +++ b/udev.8.in @@ -55,13 +55,6 @@ The name of the udev rules file or directory to look for files with the suffix All rule files are read in lexical order. The default value is .IR /etc/udev/rules.d/ . .TP -.B udev_permissions -The name of the udev permission file or directory to look for files with the -suffix -.IR .permissions . -All permission files are read in lexical order. The default value is -.IR /etc/udev/permissions.d/ . -.TP .B udev_log The switch to enable/disable logging of udev information The default value is @@ -96,10 +89,6 @@ udev_db="/udev/.udevdb" for files with the suffix .rules udev_rules="/etc/udev/rules.d/" -# udev_permissions - The name of the udev permission file or directory - to look for files with the suffix .permissions -udev_permissions="/etc/udev/udev.permissions" - # udev_log - set to "yes" if you want logging, else "no" udev_log="yes" @@ -214,8 +203,8 @@ separate rules file, while the device nodes are maintained by the distribution provided rules file. .TP .B OWNER, GROUP, MODE -The permissions for this device. Every specified value overwrites the value -given in the permissions file. +The permissions for this device. Every specified value overwrites the default +value specified in the config file. .P .RB "The " NAME " ," SYMLINK " and " PROGRAM fields support simple printf-like string substitutions: @@ -299,29 +288,6 @@ KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom", NAME="%k", SYMLINK="cdrom%e" .fi .P -The permissions and ownership of the created device file are read from -the files located in the -.I /etc/udev/permissions.d/ -directory, or at the location specified by the -.I udev_permission -value in the -.I /etc/udev/udev.conf -file. -.br -Every line lists a device name followed by owner, group and permission -mode. All values are separated by colons. The name field may contain a -pattern to apply the values to a whole class of devices. -.sp -.RI "A sample " udev.permissions " file might look like this:" -.sp -.nf -#name:user:group:mode -input/*:root:root:644 -ttyUSB1:0:8:0660 -video*:root:video:0660 -dsp1:::0666 -.fi -.P A number of different fields in the above configuration files support a simple form of shell style pattern matching. It supports the following pattern characters: .TP diff --git a/udev.c b/udev.c index 0895e437b..e5d7800ec 100644 --- a/udev.c +++ b/udev.c @@ -187,7 +187,7 @@ int main(int argc, char *argv[], char *envp[]) wait_for_class_device(class_dev, &error); - /* init rules, permissions */ + /* init rules */ namedev_init(); /* name, create node, store in db */ diff --git a/udev.h b/udev.h index 7038376b3..0111644ef 100644 --- a/udev.h +++ b/udev.h @@ -80,7 +80,6 @@ extern void udev_multiplex_directory(struct udevice *udev, const char *basedir, extern char sysfs_path[SYSFS_PATH_MAX]; extern char udev_root[PATH_MAX]; extern char udev_db_path[PATH_MAX+NAME_MAX]; -extern char udev_permissions_filename[PATH_MAX+NAME_MAX]; extern char udev_config_filename[PATH_MAX+NAME_MAX]; extern char udev_rules_filename[PATH_MAX+NAME_MAX]; extern mode_t default_mode; diff --git a/udev.spec b/udev.spec index c0aacc954..46eaf698f 100644 --- a/udev.spec +++ b/udev.spec @@ -98,7 +98,6 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root) %doc COPYING README TODO ChangeLog HOWTO* docs/* %doc etc/udev/udev.rules.{examples,gentoo,redhat} -%doc etc/udev/udev.permissions.{gentoo,redhat} %attr(755,root,root) /sbin/udev %attr(755,root,root) /usr/bin/udevinfo %attr(755,root,root) /sbin/udevsend @@ -109,9 +108,7 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) %dir /etc/udev/ %config(noreplace) %attr(0644,root,root) /etc/udev/udev.conf %attr(755,root,root) %dir /etc/udev/rules.d/ -%attr(755,root,root) %dir /etc/udev/permissions.d/ %config(noreplace) %attr(0644,root,root) /etc/udev/rules.d/50-udev.rules -%config(noreplace) %attr(0644,root,root) /etc/udev/permissions.d/50-udev.permissions %attr(-,root,root) /etc/hotplug.d/default/udev.hotplug %attr(755,root,root) /etc/init.d/udev %attr(0644,root,root) %{_mandir}/man8/udev*.8* diff --git a/udev_config.c b/udev_config.c index 62eb728ea..a5f646774 100644 --- a/udev_config.c +++ b/udev_config.c @@ -43,7 +43,6 @@ char sysfs_path[SYSFS_PATH_MAX]; char udev_root[PATH_MAX]; char udev_db_path[PATH_MAX+NAME_MAX]; -char udev_permissions_filename[PATH_MAX+NAME_MAX]; char udev_rules_filename[PATH_MAX+NAME_MAX]; char udev_config_filename[PATH_MAX+NAME_MAX]; mode_t default_mode; @@ -74,7 +73,6 @@ static void init_variables(void) strcpy(udev_db_path, UDEV_DB); strcpy(udev_config_filename, UDEV_CONFIG_FILE); strcpy(udev_rules_filename, UDEV_RULES_FILE); - strcpy(udev_permissions_filename, UDEV_PERMISSION_FILE); strcpy(default_owner, "root"); strcpy(default_group, "root"); @@ -206,12 +204,6 @@ static int parse_config_file(void) continue; } - if (strcasecmp(variable, "udev_permissions") == 0) { - strfieldcpy(udev_permissions_filename, value); - no_trailing_slash(udev_permissions_filename); - continue; - } - if (strcasecmp(variable, "default_mode") == 0) { default_mode = strtol(value, NULL, 8); continue; @@ -267,7 +259,6 @@ static void get_dirs(void) dbg_parse("udev_config_filename = %s", udev_config_filename); dbg_parse("udev_db_path = %s", udev_db_path); dbg_parse("udev_rules_filename = %s", udev_rules_filename); - dbg_parse("udev_permissions_filename = %s", udev_permissions_filename); dbg_parse("udev_log = %d", udev_log); parse_config_file(); @@ -276,7 +267,6 @@ static void get_dirs(void) dbg("udev_config_filename = %s", udev_config_filename); dbg("udev_db_path = %s", udev_db_path); dbg("udev_rules_filename = %s", udev_rules_filename); - dbg("udev_permissions_filename = %s", udev_permissions_filename); dbg("udev_log = %d", udev_log); } -- 2.30.2