Ver Fonte

Fix wrong permission when restoring user backups

Robert Zollner há 6 anos atrás
pai
commit
1f91d7d7e5
2 ficheiros alterados com 24 adições e 4 exclusões
  1. 6 1
      bin/v-restore-user
  2. 18 3
      func/rebuild.sh

+ 6 - 1
bin/v-restore-user

@@ -407,8 +407,11 @@ if [ "$web" != 'no' ] && [ ! -z "$WEB_SYSTEM" ]; then
             rm -rf $HOMEDIR/$user/web/$domain/public_html/*
         fi
         chmod u+w "$HOMEDIR/$user/web/$domain"
+        [[ -d $HOMEDIR/$user/web/$domain/stats ]] && chmod u+w "$HOMEDIR/$user/web/$domain/stats"
         user_exec tar -xzpf $tmpdir/web/$domain/domain_data.tar.gz \
-            -C "$HOMEDIR/$user/web/$domain/" --exclude='./logs/*'
+            -C "$HOMEDIR/$user/web/$domain/" \
+            --anchored \
+            --exclude='logs/*'
         if [ "$?" -ne 0 ]; then
             rm -rf $tmpdir
             error="Can't unpack $domain data tarball"
@@ -771,7 +774,9 @@ if [ "$udir" != 'no' ]; then
                 check_result "$E_PARSING" "$error"
             fi
 
+            chown "$user" "$tmpdir/user_dir"
             chown "$user" "$HOMEDIR/$user"
+            chown "$user" "$HOMEDIR/$user/$user_dir"
             $BIN/v-extract-fs-archive "$user" "$tmpdir/user_dir/$user_dir.tar.gz" "$HOMEDIR/$user"
             cmdstatus="$?"
             chown root:root "$HOMEDIR/$user"

+ 18 - 3
func/rebuild.sh

@@ -50,10 +50,25 @@ rebuild_user_conf() {
     if [ -e "$HOMEDIR/$user/conf" ]; then
         chattr -i $HOMEDIR/$user/conf > /dev/null 2>&1
     fi
-    mkdir -p $HOMEDIR/$user/conf
+
+    # Create default writeable folders
+    mkdir -p \
+        $HOMEDIR/$user/conf \
+        $HOMEDIR/$user/.config \
+        $HOMEDIR/$user/.cache \
+        $HOMEDIR/$user/.local \
+        $HOMEDIR/$user/.composer \
+        $HOMEDIR/$user/.ssh
+
     chmod a+x $HOMEDIR/$user
     chmod a+x $HOMEDIR/$user/conf
-    chown $user:$user $HOMEDIR/$user
+    chown $user:$user \
+        $HOMEDIR/$user \
+        $HOMEDIR/$user/.config \
+        $HOMEDIR/$user/.cache \
+        $HOMEDIR/$user/.local \
+        $HOMEDIR/$user/.composer \
+        $HOMEDIR/$user/.ssh
     chown root:root $HOMEDIR/$user/conf
 
     $BIN/v-add-user-sftp-jail "$user"
@@ -511,7 +526,7 @@ rebuild_mail_domain_conf() {
 
         # Adding mail directiry
         if [ ! -e $HOMEDIR/$user/mail/$domain_idn ]; then
-            $BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/mail/$domain_idn"
+            mkdir "$HOMEDIR/$user/mail/$domain_idn"
         fi
 
         # Adding catchall email