From: Kay Sievers <kay@vrfy.org>
To: linux-hotplug@vger.kernel.org
Subject: Re: [ANNOUNCE] udev 004 release
Date: Wed, 22 Oct 2003 03:24:24 +0000 [thread overview]
Message-ID: <marc-linux-hotplug-106681728327497@msgid-missing> (raw)
In-Reply-To: <marc-linux-hotplug-106675444401980@msgid-missing>
[-- Attachment #1: Type: text/plain, Size: 1253 bytes --]
On Tue, Oct 21, 2003 at 01:50:46PM -0700, Greg KH wrote:
> On Tue, Oct 21, 2003 at 10:34:04PM +0200, Kay Sievers wrote:
>
> > I was looking how to set permissions on the created node.
> > What is the future of struct device_attr?
> > Same values are in struct udevice now?
>
> device_attr will go away. I was leaving the namedev.c file alone when I
> did the udevice cleanups so that merging with Dan's changes would be
> easier. Now I'm about to go clean that up.
Hi,
attached is a patch for udev-add.c to set file permissions.
The problem is that the resolving of owner/group name to its numeric id
needs shared libc libs. What does this mean for klibc?
gcc --static -o udev udev.o udev-add.o udev-remove.o udevdb.o logging.o namedev.o tdb/tdb.o tdb/spinlock.o -lsysfs -lc -Llibsysfs
udev-add.o(.text+0x3bf): In function `create_node':
udev-add.o(.text+0x2f6):/usr/src/udev/udev-add.c:122: warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
udev-add.o(.text+0x32d):/usr/src/udev/udev-add.c:128: warning: Using 'endpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
thanks,
Kay
[-- Attachment #2: udev-add.c-permissions.diff --]
[-- Type: text/plain, Size: 1916 bytes --]
--- udev-add.c.orig 2003-10-22 03:03:34.000000000 +0200
+++ udev-add.c 2003-10-22 05:02:02.000000000 +0200
@@ -27,6 +27,8 @@
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
+#include <pwd.h>
+#include <grp.h>
#include "udev.h"
#include "udev_version.h"
@@ -98,7 +100,63 @@
dbg("mknod(%s, %#o, %u, %u) failed with error '%s'",
filename, dev->mode, dev->major, dev->minor, strerror(errno));
- // FIXME set the ownership of the node
+ /* set the ownership of the node if requested */
+ if ((*dev->owner == 0x00) && (*dev->group == 0x00))
+ return retval;
+
+ uid_t uid;
+ gid_t gid;
+
+ /* get current ownership */
+ struct stat file_stat;
+ lstat (filename, &file_stat);
+ uid = file_stat.st_uid;
+ gid = file_stat.st_gid;
+
+ if (*dev->owner != 0x00) {
+ char *endptr;
+ unsigned long id = strtoul(dev->owner, &endptr, 10);
+ /* if id is not numeric, ask system */
+ if (*endptr) {
+ dbg("got ascii owner: %s", dev->owner);
+ struct passwd *pwd = getpwnam (dev->owner);
+ if (pwd)
+ uid = pwd->pw_uid;
+ else
+ dbg("unable to resolve uid from string: %s",
+ dev->owner);
+ endpwent();
+ } else {
+ uid = (uid_t) id;
+ dbg("got numeric owner: %u", uid);
+ }
+ }
+
+ if (*dev->group != 0x00) {
+ char *endptr;
+ unsigned long id = strtoul(dev->group, &endptr, 10);
+ /* if id is not numeric, ask system */
+ if (*endptr) {
+ dbg("got ascii group: %s", dev->group);
+ struct group *grp = getgrnam (dev->group);
+ if (grp)
+ gid = grp->gr_gid;
+ else
+ dbg("unable to resolve gid from string: %s",
+ dev->group);
+ endgrent();
+ } else {
+ gid = (gid_t) id;
+ dbg("got numeric group: %u", gid);
+ }
+ }
+
+ dbg("chown(%s, %u, %u)", filename, uid, gid);
+ retval = chown(filename, uid, gid);
+ if (retval)
+ dbg("chown(%s, %u, %u) failed with error '%s'", filename,
+ uid, gid, strerror(errno));
+
return retval;
}
next prev parent reply other threads:[~2003-10-22 3:24 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-10-21 16:28 [ANNOUNCE] udev 004 release Greg KH
2003-10-21 20:34 ` Kay Sievers
2003-10-21 20:50 ` Greg KH
2003-10-21 21:45 ` Jesse Barnes
2003-10-21 22:13 ` Greg KH
2003-10-22 1:46 ` Greg KH
2003-10-22 3:24 ` Kay Sievers [this message]
2003-10-22 7:09 ` Daniel Stekloff
2003-10-22 8:52 ` Ananth N Mavinakayanahalli
2003-10-22 23:52 ` Greg KH
2003-10-24 13:42 ` Kay Sievers
2003-10-25 10:40 ` Erik van Konijnenburg
2003-10-25 10:40 ` Erik van Konijnenburg
2003-11-14 1:36 ` Greg KH
2003-11-23 21:32 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=marc-linux-hotplug-106681728327497@msgid-missing \
--to=kay@vrfy.org \
--cc=linux-hotplug@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).