chiark / gitweb /
update README
[elogind.git] / etc / dev.d / default / pam_console.dev
index 324c4fd8046c171d1cfe91da611e362085dfeee6..4c69ea3576d828c64ba17b6e49a684deaaea930d 100644 (file)
@@ -1,14 +1,52 @@
 #!/bin/sh
 
-if [ -f /etc/sysconfig/udev ]; then
-        . /etc/sysconfig/udev
-fi
+# Fedora solution to set the ownership/permissions of s device to the local
+# logged in user. Uses the program pam_console_setowner to match the names of
+# the device node and the symlinks against a device list and applies the
+# configured ownership and permission to the node.
+
+[ "$ACTION" != "add" ] && exit 0
+
+# we do not have console users in rc.sysinit
+[ -n "$IN_INITLOG" ] && exit 0
+
+if [ -x /sbin/pam_console_setowner -a -f /var/run/console/console.lock \
+       -a -e "$DEVNAME" ]; then
 
-[ "$UDEV_CONSOLE" != "yes" ] && exit 0
+       if [ -x /usr/bin/logger ]; then
+           LOGGER=/usr/bin/logger
+       elif [ -x /bin/logger ]; then
+           LOGGER=/bin/logger
+       else
+           unset LOGGER
+       fi
+       #
+       # for diagnostics
+       #
+       if [ -t 1 -o -z "$LOGGER" ]; then
+           mesg () {
+               echo "$@"
+           }
+       else
+           mesg () {
+               $LOGGER -t $(basename $0)"[$$]" "$@"
+           }
+       fi
 
-if [ -x /sbin/pam_console_setowner ]; then
-       if [ "$UDEV_LOG" = "yes" -a -x /usr/bin/logger ]; then 
-               /usr/bin/logger -p auth.debug "Restoring console permissions for $DEVNAME"
+       debug_mesg () {
+           test "$udev_log" = "" -o "$udev_log" = "no" && return
+           mesg "$@"
+       }
+
+       if [ -f /etc/udev/udev.conf ]; then
+               . /etc/udev/udev.conf
        fi
-       exec /sbin/pam_console_setowner $DEVNAME
+
+       SYMLINKS=""
+       for i in $(/usr/bin/udevinfo -q symlink -p "$DEVPATH"); do
+               [ $? -gt 0 ] && break
+               SYMLINKS="$SYMLINKS ${udev_root%%/}/$i"
+       done
+       debug_mesg "Restoring console permissions for $DEVNAME $SYMLINKS"
+       /sbin/pam_console_setowner "$DEVNAME" $SYMLINKS
 fi