chiark / gitweb /
[PATCH] $local user
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>
Tue, 19 Oct 2004 03:51:13 +0000 (20:51 -0700)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 05:02:46 +0000 (22:02 -0700)
We once implemented the devfsd feature to set the owner of a device node
to the "local" user. This was before we had the dev.d/ scripts. We discussed
a similar issue with D-BUS recently and this should be better handled depending
on the distributions way to do such a thing.

I'm for removing this here as this can be easily covered by a dev.d/
script.

Here is the patch if nobody objects :)

klibc_fixups.c
klibc_fixups.h
udev.8.in
udev_add.c

index d1a452a44981bc948bfb9659db9f0a773d5d3a34..e68ce22b506fe62da91e689bebd1e6dbc4fbd938 100644 (file)
@@ -125,38 +125,4 @@ struct group *getgrnam(const char *name)
                return &gr;
 }
 
-
-int ufd = -1;
-
-void setutent()
-{
-       if (ufd < 0)
-               ufd = open(UTMP_FILE, O_RDONLY);
-       fcntl(ufd, F_SETFD, FD_CLOEXEC);
-       lseek(ufd, 0, SEEK_SET);
-}
-
-void endutent() {
-       if (ufd < 0)
-               return;
-       close(ufd);
-       ufd = -1;
-}
-
-struct utmp *getutent(void)
-{
-       static struct utmp utmp;
-       int retval;
-
-       if (ufd < 0) {
-               setutent();
-               if (ufd < 0)
-                       return NULL;
-       }
-       retval = read(ufd, &utmp, sizeof(struct utmp));
-       if (retval < 1)
-               return NULL;
-       return &utmp;
-}
-
 #endif
index f6c91cdd9444fb61e11055a19417c85fd191b409..082105eb8e4c6a974ffc6c01fdbe73936c104169 100644 (file)
@@ -62,10 +62,5 @@ struct utmp
        char __unused[20];              /* reserved for future use */
 };
 
-struct utmp *getutent(void);
-void setutent(void);
-void endutent(void);
-
-
 #endif /* KLIBC_FIXUPS_H */
 #endif /* __KLIBC__ */
index c842e7befbcd05ebff2904392493e170c4aa1269..a7f0bf03929993baabbdc946d3f0c99ad4be2070 100644 (file)
--- a/udev.8.in
+++ b/udev.8.in
@@ -335,17 +335,6 @@ video*:root:video:0660
 dsp1:::0666
 .fi
 .P
-The value
-.I $local
-can be used instead of a specific username.  In that case, udev will determine
-the current local user at the time of device node creation and substitute
-that username as the owner of the new device node.  This is useful, for
-example, to let hot-plugged devices, such as cameras, be owned by the user at
-the current console.  Note that if no user is currently logged in, or if udev
-otherwise fails to determine a current user, the
-.I default_owner
-value is used in lieu.
-.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
index 809a33cedb664f7f4dafab1dde562982e85ccdef..0e7d575d58fb735702b015e9309edeed4dc81d68 100644 (file)
@@ -48,8 +48,6 @@
 #include "udevdb.h"
 #include "klibc_fixups.h"
 
-#define LOCAL_USER "$local"
-
 #include "selinux.h"
 
 /*
@@ -155,37 +153,6 @@ exit:
        return retval;
 }
 
-/* get the local logged in user */
-static void set_to_local_user(char *user)
-{
-       struct utmp *u;
-       time_t recent = 0;
-
-       strfieldcpymax(user, default_owner_str, OWNER_SIZE);
-       setutent();
-       while (1) {
-               u = getutent();
-               if (u == NULL)
-                       break;
-
-               /* is this a user login ? */
-               if (u->ut_type != USER_PROCESS)
-                       continue;
-
-               /* is this a local login ? */
-               if (strcmp(u->ut_host, ""))
-                       continue;
-
-               if (u->ut_time > recent) {
-                       recent = u->ut_time;
-                       strfieldcpymax(user, u->ut_user, OWNER_SIZE);
-                       dbg("local user is '%s'", user);
-                       break;
-               }
-       }
-       endutent();
-}
-
 static int create_node(struct udevice *udev)
 {
        char filename[NAME_SIZE];
@@ -229,8 +196,6 @@ static int create_node(struct udevice *udev)
                        uid = (uid_t) id;
                else {
                        struct passwd *pw;
-                       if (strncmp(udev->owner, LOCAL_USER, sizeof(LOCAL_USER)) == 0)
-                               set_to_local_user(udev->owner);
 
                        pw = getpwnam(udev->owner);
                        if (pw == NULL)