36 lines
956 B
Bash
Executable File
36 lines
956 B
Bash
Executable File
#!/bin/bash
|
|
# set permissions on a directory
|
|
# after any installation, if a directory needs to be (human) user-writable,
|
|
# run this script on it.
|
|
# It will make everything in the directory owned by the group ${NB_GID}
|
|
# and writable by that group.
|
|
# Deployments that want to set a specific user id can preserve permissions
|
|
# by adding the `--group-add users` line to `docker run`.
|
|
|
|
# uses find to avoid touching files that already have the right permissions,
|
|
# which would cause massive image explosion
|
|
|
|
# right permissions are:
|
|
# group=${NB_GID}
|
|
# AND permissions include group rwX (directory-execute)
|
|
# AND directories have setuid,setgid bits set
|
|
|
|
set -e
|
|
|
|
for d in "$@"; do
|
|
find "${d}" \
|
|
! \( \
|
|
-group "${NB_GID}" \
|
|
-a -perm -g+rwX \
|
|
\) \
|
|
-exec chgrp "${NB_GID}" -- {} \+ \
|
|
-exec chmod g+rwX -- {} \+
|
|
# setuid, setgid *on directories only*
|
|
find "${d}" \
|
|
\( \
|
|
-type d \
|
|
-a ! -perm -6000 \
|
|
\) \
|
|
-exec chmod +6000 -- {} \+
|
|
done
|