diff --git a/package/base/devfsd/cdrom_register.sh b/package/base/devfsd/cdrom_register.sh
new file mode 100644
index 000000000..627d8624c
--- /dev/null
+++ b/package/base/devfsd/cdrom_register.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# this script is to be called by devfsd on REGISTER for cd and generic devs.
+#
+# corresponding devfsd.conf line should look this way:
+# REGISTER ^((ide|scsi)/.*)/(cd|generic)$ EXECUTE /usr/lib/devfsd/cdrom_register.sh $mntpnt \1 \3
+#
+# [M] Tobias Hintze
+#
+if [ "$#" != "3" ]
+then
+ logger "$0 called with invalid arguments."
+ exit
+fi
+
+# secure default
+MODE=600
+OWNER=root.root
+
+# possible convenience to override MODE and OWNER
+[ -r /etc/conf/devfs.cdrom ] && . /etc/conf/devfs.cdrom
+
+if [ -b "$1/$2/cd" ]
+then
+ # this is a cdrom
+ chown $OWNER "$1/$2/$3"
+ chmod $MODE "$1/$2/$3"
+ logger "permissions for $1/$2/$3 set."
+fi
+
diff --git a/package/base/devfsd/devfsd.conf b/package/base/devfsd/devfsd.conf
index f0c047a69..82552f90d 100644
--- a/package/base/devfsd/devfsd.conf
+++ b/package/base/devfsd/devfsd.conf
@@ -27,6 +27,10 @@ devfsd_postmake()
cp -vf $confdir/devfsd.conf.data $root/etc/devfsd.conf
mkdir -p $root/etc/devfsd.d
+ mkdir -p $root/usr/lib/devfsd
+ cp -vf $confdir/cdrom_register.sh $root/usr/lib/devfsd/
+ chmod 755 $root/usr/lib/devfsd/cdrom_register.sh
+
for x in $( cd $confdir ; echo devfsd_*.txt ) ; do
y="${x%.txt}"
file=/etc/devfsd.d/${y/devfsd_/}
diff --git a/package/base/devfsd/devfsd_hardware.txt b/package/base/devfsd/devfsd_hardware.txt
index 8424c579f..2c12d01a4 100644
--- a/package/base/devfsd/devfsd_hardware.txt
+++ b/package/base/devfsd/devfsd_hardware.txt
@@ -2,7 +2,7 @@
# cd-rom
# user/group and persmission for the cd and the corespondig generic device
-REGISTER ^(ide|scsi)/host[0-9]+/bus[0-9]+/target[0-9]+/lun[0-9]+/(cd|generic) PERMISSIONS root.users 0664
+REGISTER ^((ide|scsi)/.*)/(cd|generic)$ EXECUTE /usr/lib/devfsd/cdrom_register.sh $mntpnt \1 \3
# handle the historic /dev/cdrom device always pointing to the first CD-ROM
REGISTER ^(cdroms/cdrom0)$ EXECUTE ln -s /dev/\1 /dev/cdrom
|