]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fixes the custom scripts not running as root
authorTrenton Holmes <797416+stumpylog@users.noreply.github.com>
Wed, 30 Nov 2022 04:05:08 +0000 (20:05 -0800)
committerTrenton H <797416+stumpylog@users.noreply.github.com>
Thu, 1 Dec 2022 15:21:25 +0000 (07:21 -0800)
docker/docker-entrypoint.sh
docker/docker-prepare.sh

index f227e18d824186a4b7aebc2e2fb9d97edbefc909..74e0806712486625e8e38cf31abc3ba4860329db 100755 (executable)
@@ -77,6 +77,46 @@ nltk_data () {
 
 }
 
+custom_container_init() {
+       # Mostly borrowed from the LinuxServer.io base image
+       # https://github.com/linuxserver/docker-baseimage-ubuntu/tree/bionic/root/etc/cont-init.d
+       local -r custom_script_dir="/custom-cont-init.d"
+       # Tamper checking.
+       # Don't run files which are owned by anyone except root
+       # Don't run files which are writeable by others
+       if [ -d "${custom_script_dir}" ]; then
+               if [ -n "$(/usr/bin/find "${custom_script_dir}" -maxdepth 1 ! -user root)" ]; then
+                       echo "**** Potential tampering with custom scripts detected ****"
+                       echo "**** The folder '${custom_script_dir}' must be owned by root ****"
+                       return 0
+               fi
+               if [ -n "$(/usr/bin/find "${custom_script_dir}" -maxdepth 1 -perm -o+w)" ]; then
+                       echo "**** The folder '${custom_script_dir}' or some of contents have write permissions for others, which is a security risk. ****"
+                       echo "**** Please review the permissions and their contents to make sure they are owned by root, and can only be modified by root. ****"
+                       return 0
+               fi
+
+               # Make sure custom init directory has files in it
+               if [ -n "$(/bin/ls -A "${custom_script_dir}" 2>/dev/null)" ]; then
+                       echo "[custom-init] files found in ${custom_script_dir} executing"
+                       # Loop over files in the directory
+                       for SCRIPT in "${custom_script_dir}"/*; do
+                               NAME="$(basename "${SCRIPT}")"
+                               if [ -f "${SCRIPT}" ]; then
+                                       echo "[custom-init] ${NAME}: executing..."
+                                       /bin/bash "${SCRIPT}"
+                                       echo "[custom-init] ${NAME}: exited $?"
+                               elif [ ! -f "${SCRIPT}" ]; then
+                                       echo "[custom-init] ${NAME}: is not a file"
+                               fi
+                       done
+               else
+                       echo "[custom-init] no custom files found exiting..."
+               fi
+
+       fi
+}
+
 initialize() {
 
        # Setup environment from secrets before anything else
@@ -132,6 +172,10 @@ initialize() {
        set -e
 
        "${gosu_cmd[@]}" /sbin/docker-prepare.sh
+
+       # Leave this last thing
+       custom_container_init
+
 }
 
 install_languages() {
index a73b5aad90853e531842e9744a74f4c34514389c..c3a01ec8d2715cfd51415c97aaf20bfb0020088b 100755 (executable)
@@ -89,46 +89,6 @@ superuser() {
        fi
 }
 
-custom_container_init() {
-       # Mostly borrowed from the LinuxServer.io base image
-       # https://github.com/linuxserver/docker-baseimage-ubuntu/tree/bionic/root/etc/cont-init.d
-       local -r custom_script_dir="/custom-cont-init.d"
-       # Tamper checking.
-       # Don't run files which are owned by anyone except root
-       # Don't run files which are writeable by others
-       if [ -d "${custom_script_dir}" ]; then
-               if [ -n "$(/usr/bin/find "${custom_script_dir}" -maxdepth 1 ! -user root)" ]; then
-                       echo "**** Potential tampering with custom scripts detected ****"
-                       echo "**** The folder '${custom_script_dir}' must be owned by root ****"
-                       return 0
-               fi
-               if [ -n "$(/usr/bin/find "${custom_script_dir}" -maxdepth 1 -perm -o+w)" ]; then
-                       echo "**** The folder '${custom_script_dir}' or some of contents have write permissions for others, which is a security risk. ****"
-                       echo "**** Please review the permissions and their contents to make sure they are owned by root, and can only be modified by root. ****"
-                       return 0
-               fi
-
-               # Make sure custom init directory has files in it
-               if [ -n "$(/bin/ls -A "${custom_script_dir}" 2>/dev/null)" ]; then
-                       echo "[custom-init] files found in ${custom_script_dir} executing"
-                       # Loop over files in the directory
-                       for SCRIPT in "${custom_script_dir}"/*; do
-                               NAME="$(basename "${SCRIPT}")"
-                               if [ -f "${SCRIPT}" ]; then
-                                       echo "[custom-init] ${NAME}: executing..."
-                                       /bin/bash "${SCRIPT}"
-                                       echo "[custom-init] ${NAME}: exited $?"
-                               elif [ ! -f "${SCRIPT}" ]; then
-                                       echo "[custom-init] ${NAME}: is not a file"
-                               fi
-                       done
-               else
-                       echo "[custom-init] no custom files found exiting..."
-               fi
-
-       fi
-}
-
 do_work() {
        if [[ "${PAPERLESS_DBENGINE}" == "mariadb" ]]; then
                wait_for_mariadb
@@ -144,9 +104,6 @@ do_work() {
 
        superuser
 
-       # Leave this last thing
-       custom_container_init
-
 }
 
 do_work