|
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