aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-12-18 11:34:17 +0100
committerGreg KH <gregkh@suse.de>2005-04-26 23:17:47 -0700
commit8b36cc0f179ee35176016ab67ae53078df4110fa (patch)
treec61be5ec5a18ee0f9050c2f0b2917e0ed06f1853
parent3ac0326962c93f381bec325583e26f47fb7d4833 (diff)
downloadudev-8b36cc0f179ee35176016ab67ae53078df4110fa.tar.gz
[PATCH] complete removal of explicit udev permissions config file
-rw-r--r--FAQ4
-rw-r--r--Makefile8
-rw-r--r--docs/rh_udev_for_dev.txt16
-rw-r--r--etc/udev/udev.conf.in9
-rw-r--r--namedev.c47
-rw-r--r--namedev.h15
-rw-r--r--namedev_parse.c170
-rw-r--r--test/devd_test1
-rw-r--r--test/net_test1
-rw-r--r--test/replace_test1
-rw-r--r--test/udev-test.pl183
-rw-r--r--test/udev.permissions22
-rw-r--r--udev.8.in38
-rw-r--r--udev.c2
-rw-r--r--udev.h1
-rw-r--r--udev.spec3
-rw-r--r--udev_config.c10
17 files changed, 38 insertions, 493 deletions
diff --git a/FAQ b/FAQ
index 45337bf6..bd9d63a4 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 4fc6ce72..52c1d47b 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 1a21c0e5..0b66868d 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 bbbb1a93..295e39ff 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 9cfc4283..be7ae12c 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 e2927924..8a3569ec 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 5b8c5ab2..7190cdd1 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 6e4c2063..269c2b11 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 ec0dea46..9686f992 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 9445b726..19260765 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 3f9a8484..8ee8ba54 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 => <<EOF
-BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000", MODE="0444"
-EOF
- },
- {
- desc => "permissions ttyUSB0:root:uucp:0660",
- subsys => "tty",
- devpath => "/class/tty/ttyUSB0",
- exp_name => "ttyUSB0",
- exp_perms => "0:14:0660",
- conf => <<EOF
-KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n"
-EOF
- },
- {
- desc => "permissions tty0::root:0444",
- subsys => "tty",
- devpath => "/class/tty/tty0",
- exp_name => "tty0",
- exp_perms => "0:0:0444",
- conf => <<EOF
-KERNEL="tty0", NAME="tty0"
-EOF
- },
- {
- desc => "permissions tty1:root::0555",
- subsys => "tty",
- devpath => "/class/tty/tty1",
- exp_name => "tty1",
- exp_perms => "0:0:0555",
- conf => <<EOF
-KERNEL="tty1", NAME="tty1"
-EOF
- },
- {
- desc => "permissions tty2:::0777",
- subsys => "tty",
- devpath => "/class/tty/tty2",
- exp_name => "tty2",
- exp_perms => "0:0:0777",
- conf => <<EOF
-KERNEL="tty2", NAME="tty2"
-EOF
- },
- {
- desc => "permissions tty3::: (default mode applied)",
- subsys => "tty",
- devpath => "/class/tty/tty3",
- exp_name => "tty3",
- exp_perms => "0:0:600",
- conf => <<EOF
-KERNEL="tty3", NAME="tty3"
-EOF
- },
- {
- desc => "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 => <<EOF
-KERNEL="i2c-300", NAME="i2c-300"
-EOF
- },
- {
- desc => "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 => <<EOF
-KERNEL="i2c-fake1", NAME="i2c-fake1"
-EOF
- },
- {
- desc => "permissions ttyS[01]:0:5:0700",
- subsys => "tty",
- devpath => "/class/tty/ttyS1",
- exp_name => "ttyS1",
- exp_perms => "0:5:0700",
- conf => <<EOF
-KERNEL="ttyS1", NAME="ttyS1"
-EOF
- },
- {
- desc => "permissions ttyS[4-9]:tty:5:0060",
- subsys => "tty",
- devpath => "/class/tty/ttyS7",
- exp_name => "ttyS7",
- exp_perms => "0:5:0060",
- conf => <<EOF
-KERNEL="ttyS7", NAME="ttyS7"
-EOF
- },
- {
- desc => "permissions tty4:0:5:0707",
- subsys => "ttyS4",
- devpath => "/class/tty/tty4",
- exp_name => "tty4",
- exp_perms => "0:5:0707",
- conf => <<EOF
-KERNEL="tty4", NAME="tty4"
-EOF
- },
- {
- desc => "permissions tty4?:0:5:0007",
- subsys => "tty",
- devpath => "/class/tty/tty44",
- exp_name => "tty44",
- exp_perms => "0:5:0007",
- conf => <<EOF
-KERNEL="tty44", NAME="tty44"
-EOF
- },
- {
- desc => "permissions tty3[!3]:::0467",
- subsys => "tty",
- devpath => "/class/tty/tty35",
- exp_name => "tty35",
- exp_perms => "0:0:0467",
- conf => <<EOF
-KERNEL="tty35", NAME="tty35"
-EOF
- },
- {
- desc => "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 => <<EOF
-KERNEL="tty33", NAME="tty33"
-EOF
- },
- {
- desc => "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 => <<EOF
-KERNEL="rtc", NAME="misc/rtc"
+KERNEL="tty33", NAME="tty33", OWNER="bad", GROUP="name"
EOF
},
{
- desc => "permissions misc:0:users:0600",
- subsys => "misc",
- devpath => "/class/misc/psaux",
- exp_name => "misc/psaux",
- exp_perms => "0:100:0600",
- conf => <<EOF
-KERNEL="psaux", NAME="misc/psaux"
-EOF
- },
- {
- desc => "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 => <<EOF
KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", OWNER="5000"
EOF
},
{
- desc => "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 => <<EOF
KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", GROUP="100"
EOF
},
{
- desc => "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 => <<EOF
KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", MODE="0060"
EOF
},
{
- desc => "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 b7baeea7..00000000
--- 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 328f602e..90b7d833 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 0895e437..e5d7800e 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 7038376b..0111644e 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 c0aacc95..46eaf698 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 62eb728e..a5f64677 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);
}