[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'
This commit is contained in:
kay.sievers@vrfy.org 2004-01-19 19:44:24 -08:00 committed by Greg KH
parent 74c73ef994
commit 765cbd9759
6 changed files with 41 additions and 14 deletions

View File

@ -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"

View File

@ -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);
}

View File

@ -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, " ");

18
udev.8
View File

@ -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

3
udev.h
View File

@ -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];

View File

@ -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];