-
-
Notifications
You must be signed in to change notification settings - Fork 87
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Improve permission fixing on render & dvb devices
- Loading branch information
Showing
3 changed files
with
22 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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)" | ||
This comment has been minimized.
Sorry, something went wrong. |
||
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 |
I think this needs to be changed to:
VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-za-z0-9' | head -c8)"
I'm pretty sure that's the allowed pattern for group names: [_a-z][-0-9_a-z]