|
1 | 1 | #!/usr/bin/with-contenv bash
|
2 | 2 | # shellcheck shell=bash
|
3 | 3 |
|
4 |
| -FILES=$(find /dev/dri /dev/dvb -type c -print 2>/dev/null) |
| 4 | +if [[ -z ${LSIO_NON_ROOT_USER} ]]; then |
| 5 | + FILES=$(find /dev/dri /dev/dvb -type c -print 2>/dev/null) |
5 | 6 |
|
6 |
| -for i in ${FILES}; do |
7 |
| - VIDEO_GID=$(stat -c '%g' "${i}") |
8 |
| - VIDEO_UID=$(stat -c '%u' "${i}") |
9 |
| - # check if user matches device |
10 |
| - if id -u abc | grep -qw "${VIDEO_UID}"; then |
11 |
| - echo "**** permissions for ${i} are good ****" |
12 |
| - else |
13 |
| - # check if group matches and that device has group rw |
14 |
| - if id -G abc | grep -qw "${VIDEO_GID}" && [[ $(stat -c '%A' "${i}" | cut -b 5,6) == "rw" ]]; then |
| 7 | + for i in ${FILES}; do |
| 8 | + VIDEO_GID=$(stat -c '%g' "${i}") |
| 9 | + VIDEO_UID=$(stat -c '%u' "${i}") |
| 10 | + # check if user matches device |
| 11 | + if id -u abc | grep -qw "${VIDEO_UID}"; then |
15 | 12 | echo "**** permissions for ${i} are good ****"
|
16 |
| - # check if device needs to be added to video group |
17 |
| - elif ! id -G abc | grep -qw "${VIDEO_GID}"; then |
18 |
| - # check if video group needs to be created |
19 |
| - VIDEO_NAME=$(getent group "${VIDEO_GID}" | awk -F: '{print $1}') |
20 |
| - if [[ -z "${VIDEO_NAME}" ]]; then |
21 |
| - VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-z0-9' | head -c4)" |
22 |
| - groupadd "${VIDEO_NAME}" |
23 |
| - groupmod -g "${VIDEO_GID}" "${VIDEO_NAME}" |
24 |
| - echo "**** creating video group ${VIDEO_NAME} with id ${VIDEO_GID} ****" |
| 13 | + else |
| 14 | + # check if group matches and that device has group rw |
| 15 | + if id -G abc | grep -qw "${VIDEO_GID}" && [[ $(stat -c '%A' "${i}" | cut -b 5,6) == "rw" ]]; then |
| 16 | + echo "**** permissions for ${i} are good ****" |
| 17 | + # check if device needs to be added to video group |
| 18 | + elif ! id -G abc | grep -qw "${VIDEO_GID}"; then |
| 19 | + # check if video group needs to be created |
| 20 | + VIDEO_NAME=$(getent group "${VIDEO_GID}" | awk -F: '{print $1}') |
| 21 | + if [[ -z "${VIDEO_NAME}" ]]; then |
| 22 | + VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-z0-9' | head -c4)" |
| 23 | + groupadd "${VIDEO_NAME}" |
| 24 | + groupmod -g "${VIDEO_GID}" "${VIDEO_NAME}" |
| 25 | + echo "**** creating video group ${VIDEO_NAME} with id ${VIDEO_GID} ****" |
| 26 | + fi |
| 27 | + echo "**** adding ${i} to video group ${VIDEO_NAME} with id ${VIDEO_GID} ****" |
| 28 | + usermod -a -G "${VIDEO_NAME}" abc |
| 29 | + fi |
| 30 | + # check if device has group rw |
| 31 | + if [[ $(stat -c '%A' "${i}" | cut -b 5,6) != "rw" ]]; then |
| 32 | + echo -e "**** The device ${i} does not have group read/write permissions, attempting to fix inside the container. ****" |
| 33 | + chmod g+rw "${i}" |
25 | 34 | fi
|
26 |
| - echo "**** adding ${i} to video group ${VIDEO_NAME} with id ${VIDEO_GID} ****" |
27 |
| - usermod -a -G "${VIDEO_NAME}" abc |
28 |
| - fi |
29 |
| - # check if device has group rw |
30 |
| - if [[ $(stat -c '%A' "${i}" | cut -b 5,6) != "rw" ]]; then |
31 |
| - echo -e "**** The device ${i} does not have group read/write permissions, attempting to fix inside the container. ****" |
32 |
| - chmod g+rw "${i}" |
33 | 35 | fi
|
34 |
| - fi |
35 |
| -done |
| 36 | + done |
| 37 | +fi |
0 commit comments