From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kay Sievers Date: Sat, 17 Jan 2004 15:12:42 +0000 Subject: Re: [PATCH] set default owner/group in db. Message-Id: <20040117151242.GB20465@vrfy.org> MIME-Version: 1 Content-Type: multipart/mixed; boundary="hQiwHBbRI9kgIhsi" List-Id: References: <32230000.1074291692@w-hlinder> In-Reply-To: <32230000.1074291692@w-hlinder> To: linux-hotplug@vger.kernel.org --hQiwHBbRI9kgIhsi Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Fri, Jan 16, 2004 at 05:33:23PM -0800, Hanna Linder wrote: > --On Friday, January 16, 2004 05:10:15 PM -0800 Hanna Linder wrote: > > > Good idea. This patch will now allow the admin to either set the default > > owner and group in /etc/udev/udev.conf or it will default to root/root. > > Greg, you can change udev.conf to set default_owner and default_group now. > Oops. Here is a patch that will apply cleanly. Updated Documentation patch > will do on Monday. Hanna, 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' thanks, Kay --hQiwHBbRI9kgIhsi Content-Type: text/plain; charset=us-ascii Content-Disposition: inline; filename="01-default-owner.patch" diff -Nru a/etc/udev/udev.conf.in b/etc/udev/udev.conf.in --- a/etc/udev/udev.conf.in Sat Jan 17 15:39:00 2004 +++ b/etc/udev/udev.conf.in Sat Jan 17 15:39:00 2004 @@ -17,7 +17,15 @@ # 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 -Nru a/namedev.c b/namedev.c --- a/namedev.c Sat Jan 17 15:39:00 2004 +++ b/namedev.c Sat Jan 17 15:39:00 2004 @@ -141,7 +141,7 @@ 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 @@ 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 -Nru a/udev-add.c b/udev-add.c --- a/udev-add.c Sat Jan 17 15:39:00 2004 +++ b/udev-add.c Sat Jan 17 15:39:00 2004 @@ -155,29 +155,29 @@ 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 @@ } /* create symlink if requested */ - if (*dev->symlink) { + if (dev->symlink[0]) { symlinks = dev->symlink; while (1) { linkname = strsep(&symlinks, " "); diff -Nru a/udev.8 b/udev.8 --- a/udev.8 Sat Jan 17 15:39:00 2004 +++ b/udev.8 Sat Jan 17 15:39:00 2004 @@ -98,6 +98,16 @@ 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 @@ # 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 -Nru a/udev.h b/udev.h --- a/udev.h Sat Jan 17 15:39:00 2004 +++ b/udev.h Sat Jan 17 15:39:00 2004 @@ -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_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 -Nru a/udev_config.c b/udev_config.c --- a/udev_config.c Sat Jan 17 15:39:00 2004 +++ b/udev_config.c Sat Jan 17 15:39:00 2004 @@ -45,7 +45,7 @@ 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]; --hQiwHBbRI9kgIhsi-- ------------------------------------------------------- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel