|
1 | 1 | #!/usr/bin/with-contenv bash
|
2 | 2 |
|
3 |
| -# check for the existence of a video and/or tuner device |
4 |
| -if [ -e /dev/dri ] || [ -e /dev/dvb ]; then |
5 |
| - if [ -e /dev/dri ]; then |
6 |
| - VIDEO_GID=$(stat -c '%g' /dev/dri/* | grep -v '^0$' | head -n 1) |
| 3 | +FILES=$(find /dev/dri /dev/dvb -type c -print 2>/dev/null) |
| 4 | + |
| 5 | +for i in $FILES |
| 6 | +do |
| 7 | + VIDEO_GID=$(stat -c '%g' "$i") |
| 8 | + if id -G abc | grep -qw "$VIDEO_GID"; then |
| 9 | + touch /groupadd |
7 | 10 | else
|
8 |
| - VIDEO_GID=$(stat -c '%g' /dev/dvb/* | grep -v '^0$' | head -n 1) |
9 |
| - fi |
10 |
| - # just add abc to root if stuff in dri/dvb is root owned |
11 |
| - if [ -z "${VIDEO_GID}" ]; then |
12 |
| - usermod -a -G root abc |
13 |
| - exit 0 |
| 11 | + if [ ! "${VIDEO_GID}" == '0' ]; then |
| 12 | + VIDEO_NAME=$(getent group "${VIDEO_GID}" | awk -F: '{print $1}') |
| 13 | + if [ -z "${VIDEO_NAME}" ]; then |
| 14 | + VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c8)" |
| 15 | + groupadd "$VIDEO_NAME" |
| 16 | + groupmod -g "$VIDEO_GID" "$VIDEO_NAME" |
| 17 | + fi |
| 18 | + usermod -a -G "$VIDEO_NAME" abc |
| 19 | + touch /groupadd |
| 20 | + fi |
14 | 21 | fi
|
15 |
| -else |
16 |
| - exit 0 |
17 |
| -fi |
18 |
| - |
19 |
| -# Check if this GID matches the current abc user |
20 |
| -ABCGID=$(getent group abc | awk -F: '{print $3}') |
21 |
| -if [ "${ABCGID}" == "${VIDEO_GID}" ]; then |
22 |
| - exit 0 |
23 |
| -fi |
| 22 | +done |
24 | 23 |
|
25 |
| -# Check if the GID is taken and swap to 65533 |
26 |
| -CURRENT=$(getent group ${VIDEO_GID} | awk -F: '{print $1}') |
27 |
| -if [ -z "${CURRENT}" ] || [ "${CURRENT}" == 'video' ]; then |
28 |
| - groupmod -g ${VIDEO_GID} video |
29 |
| - usermod -a -G video abc |
30 |
| -else |
31 |
| - groupmod -g 65533 ${CURRENT} |
32 |
| - groupmod -g ${VIDEO_GID} video |
33 |
| - usermod -a -G video abc |
| 24 | +if [ -n "${FILES}" ] && [ ! -f "/groupadd" ]; then |
| 25 | + usermod -a -G root abc |
34 | 26 | fi
|
0 commit comments