]> code.ossystems Code Review - openembedded-core.git/commitdiff
xserver-nodm-init: add rootless-x support
authorYu Ke <ke.yu@intel.com>
Tue, 22 Feb 2011 12:41:19 +0000 (20:41 +0800)
committerRichard Purdie <rpurdie@linux.intel.com>
Tue, 1 Mar 2011 11:46:01 +0000 (11:46 +0000)
most rootless X work are already done in the kernel, xserver and
graphics driver, this patches add the the remaining userspace setting:

- create /etc/X11/Xusername to set rootless X user
- add rootless X user to group video, tty to access /dev/tty[0-4]
  and /dev/dri/card0
- grant rootless X user access right to /dev/input/*, /var/log

Signed-off-by: Yu Ke <ke.yu@intel.com>
meta/recipes-graphics/x11-common/xserver-nodm-init.bb
meta/recipes-graphics/x11-common/xserver-nodm-init/Xusername [new file with mode: 0644]
meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm

index 03a6ca3b56815f0c0a7f0adb8714919de91605ef..a93acc9ee34d2bf772cf930b744ff25a3f8fcf03 100644 (file)
@@ -3,10 +3,11 @@ LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 SECTION = "x11"
 PRIORITY = "optional"
-PR = "r23"
+PR = "r24"
 RDEPENDS_${PN} = "dbus-wait sudo"
 
 SRC_URI = "file://xserver-nodm \
+           file://Xusername \
            file://gplv2-license.patch"
 
 S = ${WORKDIR}
@@ -17,6 +18,25 @@ do_install() {
     install -d ${D}/etc
     install -d ${D}/etc/init.d
     install xserver-nodm ${D}/etc/init.d
+    if [ "${ROOTLESS_X}" = "1" ] ; then
+        install -d ${D}/etc/X11
+        install Xusername ${D}/etc/X11
+    fi
+}
+
+pkg_postinst_${PN} () {
+    if [ "x$D" != "x" ] ; then
+        exit 1
+    fi
+
+    if [ -f /etc/X11/Xusername ]; then
+        # create the rootless X user, and add user to group tty, video
+        username=`cat /etc/X11/Xusername`
+        adduser --disabled-password $username
+        # FIXME: use addgroup if busybox addgroup is ready
+        sed -i -e "s/^video:.*/&${username}/g" /etc/group
+        sed -i -e "s/^tty:.*/&${username}/g" /etc/group
+    fi
 }
 
 inherit update-rc.d
diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/Xusername b/meta/recipes-graphics/x11-common/xserver-nodm-init/Xusername
new file mode 100644 (file)
index 0000000..7060e5e
--- /dev/null
@@ -0,0 +1 @@
+xuser
index 69ea94972412f5d11a7bae9478ae17e70bde4ce1..d8c4ba0d11113b587ba0dceafd70995fa22c8c50 100755 (executable)
@@ -30,6 +30,10 @@ case "$1" in
        echo "Starting Xserver"
        if [ -f /etc/X11/Xusername ]; then
            username=`cat /etc/X11/Xusername`
+           # setting for rootless X
+           chmod o+w /var/log
+           chmod g+r /dev/tty[0-3]
+           chmod o+rw /dev/input/*
        fi
        # Using sudo -i here has the nice side effect of making sire
        # HOME, USER and other previously problematic variables