diff --git a/root/etc/cont-init.d/50-gid-video b/root/etc/cont-init.d/50-gid-video index b643dc2..8e0dec3 100755 --- a/root/etc/cont-init.d/50-gid-video +++ b/root/etc/cont-init.d/50-gid-video @@ -1,34 +1,26 @@ #!/usr/bin/with-contenv bash -# check for the existence of a video and/or tuner device -if [ -e /dev/dri ] || [ -e /dev/dvb ]; then - if [ -e /dev/dri ]; then - VIDEO_GID=$(stat -c '%g' /dev/dri/* | grep -v '^0$' | head -n 1) +FILES=$(find /dev/dri /dev/dvb -type c -print 2>/dev/null) + +for i in $FILES +do + VIDEO_GID=$(stat -c '%g' "$i") + if id -G abc | grep -qw "$VIDEO_GID"; then + touch /groupadd else - VIDEO_GID=$(stat -c '%g' /dev/dvb/* | grep -v '^0$' | head -n 1) - fi - # just add abc to root if stuff in dri/dvb is root owned - if [ -z "${VIDEO_GID}" ]; then - usermod -a -G root abc - exit 0 + if [ ! "${VIDEO_GID}" == '0' ]; then + VIDEO_NAME=$(getent group "${VIDEO_GID}" | awk -F: '{print $1}') + if [ -z "${VIDEO_NAME}" ]; then + VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c8)" + groupadd "$VIDEO_NAME" + groupmod -g "$VIDEO_GID" "$VIDEO_NAME" + fi + usermod -a -G "$VIDEO_NAME" abc + touch /groupadd + fi fi -else - exit 0 -fi - -# Check if this GID matches the current abc user -ABCGID=$(getent group abc | awk -F: '{print $3}') -if [ "${ABCGID}" == "${VIDEO_GID}" ]; then - exit 0 -fi +done -# Check if the GID is taken and swap to 65533 -CURRENT=$(getent group ${VIDEO_GID} | awk -F: '{print $1}') -if [ -z "${CURRENT}" ] || [ "${CURRENT}" == 'video' ]; then - groupmod -g ${VIDEO_GID} video - usermod -a -G video abc -else - groupmod -g 65533 ${CURRENT} - groupmod -g ${VIDEO_GID} video - usermod -a -G video abc +if [ -n "${FILES}" ] && [ ! -f "/groupadd" ]; then + usermod -a -G root abc fi