summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-01-19 19:44:24 -0800
committerGreg KH <gregkh@suse.de>2005-04-26 21:13:17 -0700
commit765cbd97599d943adc73d03f4c91bd7cf7ef7fab (patch)
treeb6ce2967912c4bbcffeefec4e334d65c9abb5da9
parent74c73ef994f3ea8d013c33fe7be73e0c0c86977b (diff)
[PATCH] set default owner/group in db - update
I've edited the man page today, so this is alreay included :) Also a few more trivials: o added the defaults to udev.conf.in o removed class_dev from get_default_mode(), to match with Hanna's o changed size of mode_str to MODE_SIZE o changed a few char compares from from 0x00 to '\0'
-rw-r--r--etc/udev/udev.conf.in10
-rw-r--r--namedev.c4
-rw-r--r--udev-add.c18
-rw-r--r--udev.818
-rw-r--r--udev.h3
-rw-r--r--udev_config.c2
6 files changed, 41 insertions, 14 deletions
diff --git a/etc/udev/udev.conf.in b/etc/udev/udev.conf.in
index d06b0b069..f9a60ab3c 100644
--- a/etc/udev/udev.conf.in
+++ b/etc/udev/udev.conf.in
@@ -17,7 +17,15 @@ udev_rules="/etc/udev/udev.rules"
# udev_permissions - The name and location of the udev permission file
udev_permissions="/etc/udev/udev.permissions"
-# default_mode - set the default mode for all nodes that have no
+# default_mode - set the default mode for all nodes that have no
# explicit match in the permissions file
default_mode="0600"
+# default_owner - set the default owner for all nodes that have no
+# explicit match in the permissions file
+default_owner="root"
+
+# default_group - set the default group for all nodes that have no
+# explicit match in the permissions file
+default_group="root"
+
diff --git a/namedev.c b/namedev.c
index e39207e6a..7fd69f777 100644
--- a/namedev.c
+++ b/namedev.c
@@ -141,7 +141,7 @@ static struct perm_device *find_perm(char *name)
return NULL;
}
-static mode_t get_default_mode(struct sysfs_class_device *class_dev)
+static mode_t get_default_mode(void)
{
mode_t mode = 0600; /* default to owner rw only */
@@ -735,7 +735,7 @@ done:
strfieldcpy(udev->group, perm->group);
} else {
/* no matching perms found :( */
- udev->mode = get_default_mode(class_dev);
+ udev->mode = get_default_mode();
strncpy(udev->owner, get_default_owner(), OWNER_SIZE);
strncpy(udev->group, get_default_group(), GROUP_SIZE);
}
diff --git a/udev-add.c b/udev-add.c
index 9aa8bdb3e..586911acc 100644
--- a/udev-add.c
+++ b/udev-add.c
@@ -155,29 +155,29 @@ static int create_node(struct udevice *dev)
dbg("chmod(%s, %#o) failed with error '%s'",
filename, dev->mode, strerror(errno));
- if (*dev->owner) {
+ if (dev->owner[0]) {
char *endptr;
unsigned long id = strtoul(dev->owner, &endptr, 10);
- if (*endptr == 0x00)
+ if (endptr[0] == '\0')
uid = (uid_t) id;
else {
struct passwd *pw = getpwnam(dev->owner);
- if (!pw)
- dbg("user unknown '%s'", dev->owner);
+ if (pw == NULL)
+ dbg("specified user unknown '%s'", dev->owner);
else
uid = pw->pw_uid;
}
}
- if (*dev->group) {
+ if (dev->group[0]) {
char *endptr;
unsigned long id = strtoul(dev->group, &endptr, 10);
- if (*endptr == 0x00)
+ if (endptr[0] == '\0')
gid = (gid_t) id;
else {
struct group *gr = getgrnam(dev->group);
- if (!gr)
- dbg("group unknown '%s'", dev->group);
+ if (gr == NULL)
+ dbg("specified group unknown '%s'", dev->group);
else
gid = gr->gr_gid;
}
@@ -192,7 +192,7 @@ static int create_node(struct udevice *dev)
}
/* create symlink if requested */
- if (*dev->symlink) {
+ if (dev->symlink[0]) {
symlinks = dev->symlink;
while (1) {
linkname = strsep(&symlinks, " ");
diff --git a/udev.8 b/udev.8
index ff89e435f..9a597276c 100644
--- a/udev.8
+++ b/udev.8
@@ -98,6 +98,16 @@ This is the location of the udev permission file. The default value for this is
This is the default mode for all nodes that have no explicit match in the
permissions file. The default value for this is
.I 0666
+.TP
+.B default_owner
+This is the default owner for all nodes that have no explicit match in the
+permissions file. The default value for this is
+.I root
+.TP
+.B default_group
+This is the default group for all nodes that have no explicit match in the
+permissions file. The default value for this is
+.I root
.br
.P
.RI "A sample " udev.conf " might look like this:
@@ -118,6 +128,14 @@ udev_permissions="/etc/udev/udev.permissions"
# default_mode - set the default mode for all nodes that have no
# explicit match in the permissions file
default_mode="0666"
+
+# default_owner - set the default owner for all nodes that have no
+# explicit match in the permissions file
+default_owner="root"
+
+# default_group - set the default group for all nodes that have no
+# explicit match in the permissions file
+default_group="root"
.fi
.P
The rules for udev to use when naming devices may specified at
diff --git a/udev.h b/udev.h
index 963f8d251..e5c983a21 100644
--- a/udev.h
+++ b/udev.h
@@ -31,6 +31,7 @@
#define NAME_SIZE 100
#define OWNER_SIZE 30
#define GROUP_SIZE 30
+#define MODE_SIZE 8
struct udevice {
char name[NAME_SIZE];
@@ -67,7 +68,7 @@ extern char udev_db_filename[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 char default_mode_str[NAME_MAX];
+extern char default_mode_str[MODE_SIZE];
extern char default_owner_str[OWNER_SIZE];
extern char default_group_str[GROUP_SIZE];
diff --git a/udev_config.c b/udev_config.c
index d262f2af0..e75ee3a34 100644
--- a/udev_config.c
+++ b/udev_config.c
@@ -45,7 +45,7 @@ char udev_db_filename[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];
-char default_mode_str[NAME_MAX];
+char default_mode_str[MODE_SIZE];
char default_owner_str[OWNER_SIZE];
char default_group_str[GROUP_SIZE];