Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Zugriffsrechte auf Dateisystemebene

    Scheduled Pinned Locked Moved Betrieb
    3 Posts 3 Posters 508 Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Y Offline
      yaa9k47
      last edited by

      Hallo,

      ich habe eine Frage zu den Zugriffsrechten auf Dateisystemebene für Installationen auf Linux. Im idoit-rights.sh-script werden, abweichend von den Empfehlungen in der Knowledgebase, zusätzl. rekursiv 777-Rechte für eine ganze Reihe von Ordnern und Dateien vergeben. Das sollte doch nicht nötig sein, wenn als Datei-Eigentümer der Apache-User gesetzt ist, oder? Mindestens die src/config.inc.php enthält bei uns das DB-Passwort im Klartext.

      Übersehe ich etwas, oder sollte das Skript nicht lieber gefixed werden, um nicht configs world-readable zu haben?

      Als Standard-Rechte sieht das skript 644 für Dateien und 775 für Ordner vor; gibt es bekannte Probleme, wenn ich restriktiver 600 für dateien und 700 für Ordner setze (mit Apache-user als Eigentümer)?

      Auszug aus idoit-rights.sh:

      
        echo "[*] Setting up temp rights"
        $SU_CMD chmod -R 777	temp \
                              src/themes/default/smarty/templates_c \
                              src/themes/default/smarty/cache \
                              src/ \
                              updates/versions \
                              src/config.inc.php \
                              imports/ \
                              upload/files \
                              upload/images
      
      Danke!
      
      1 Reply Last reply Reply Quote 0
      • F Offline
        franknagel
        last edited by

        Bei uns hat dieses Vorgehen bislang noch nicht zu Problemen geführt. Anstelle von idoit-rights.sh setzen wir unter Debian das folgende Skript ein:

        #!/bin/bash
        
        set -euo pipefail
        
        PATH=/bin:/usr/bin
        OWNER=www-data
        
        function pre_update {
          find "$BASEDIR" -not -user "$OWNER" -print0 | xargs -0 -r chown "$OWNER:$OWNER"
          find "$BASEDIR" -type d -print0 | xargs -0 -r chmod 775
          find "$BASEDIR" -type f -print0 | xargs -0 -r chmod 660
        }
        
        function post_update {
          find "$BASEDIR" -not -user "$OWNER" -print0 | xargs -0 -r chown "$OWNER:$OWNER"
          chmod +x "$BASEDIR/controller" "$BASEDIR/import" "$BASEDIR/tenants" "$BASEDIR/updatecheck"
          chmod +x "$BASEDIR"/imports/scripts/*.sh
          for WDIR in "$BASEDIR/temp" "$BASEDIR/src/themes/default/smarty/templates_c" ; do
            if [ -d "$WDIR" ] ; then
              find "$WDIR" -type f -print0 | xargs -0 -r rm
            fi
          done
        }
        
        function usage {
          cat << EOF
        Set file and directory rights and ownership before and after updates.
        
        Usage:
            update_actions.sh pre_update DIR
        
            update_actions.sh post_update DIR
        
        EOF
        }
        
        function check_base_dir {
          BASEDIR=$1
          if [ -z "$((head -1 "$BASEDIR/VERSION" | fgrep i-doit) 2> /dev/null)" ] ; then
            echo -e "Error checking base directory: Expecting to find VERSION file containing \n'i-doit' in the first line.\n"
            usage
            exit 1
          fi
        }
        
        #main
        if [ "$EUID" != 0 ] ; then
          echo "This script is supposed to be run with root privileges"
          exit 1
        fi
        if [ -z "$1" ]; then
          usage
          exit 1
        fi
        
        if [ "$1" = "pre_update" ]; then
          check_base_dir "$2"
          pre_update
        elif [ "$1" = "post_update" ] ; then
          check_base_dir "$2"
          post_update
        else 
          echo 'Unknown command' $1
          usage
          exit 1
        fi
        
        

        Debian erzeugt per default für jeden User eine eigene Gruppe (user private group), dort macht es keinen Unterschied ob man  660 oder 600 verwendet.

        1 Reply Last reply Reply Quote 0
        • dkirstenD Offline
          dkirsten administrators
          last edited by

          Das i-doit rights Script ist sicherlich etwas großzügig mit den Rechten. Grundsätzlich theoretisch können die Rechte auch alle mit der Ownership des Apache Users auf rwx–---- und ähnliche Kombinationen (nicht überall sind Schreibrechte erforderlich) gesetzt werden. Anderweitige Zugriffsrechte benötigen höchstens externe Cronjobs.

          Viele Grüße,

          Daniel

          1 Reply Last reply Reply Quote 0
          • First post
            Last post