diff --git a/repos/jekyll/copy/all/usr/jekyll/bin/bundle b/repos/jekyll/copy/all/usr/jekyll/bin/bundle
index f53b3f01e236991233ab9c4ec41aa881d538e64a..fdfc098fafe9cb3897551a687a0abb9023a5648f 100755
--- a/repos/jekyll/copy/all/usr/jekyll/bin/bundle
+++ b/repos/jekyll/copy/all/usr/jekyll/bin/bundle
@@ -1,6 +1,7 @@
 #!/bin/bash
 [ "$DEBUG" = "true" ] && set -x
 exe=/usr/local/bin/bundle
+default-gem-permissions
 set -e
 
 #
@@ -12,17 +13,6 @@ if [[ ! -f "Gemfile" ]] || [ "$(id -u)" != "0" ]; then
    exec $exe "$@"
 fi
 
-#
-# Make sure we have permissions.
-#
-
-if [ "$1" = "install" ] || [ "$1" = "clean" ] || [ "$1" = "update" ]; then
-  if [ "$(stat -c '%U' "$BUNDLE_HOME")" != "jekyll" ]; then
-    chown -R jekyll:jekyll "$BUNDLE_HOME"
-    chown -R jekyll:jekyll /usr/gem
-  fi
-fi
-
 if [ "$1" = "install" ] || [ "$1" = "update" ]; then
   # There is no need to report that we are using check.
   if [ "$1" = "update" ] || ! su-exec jekyll $exe check 1>/dev/null 2>&1; then
diff --git a/repos/jekyll/copy/all/usr/jekyll/bin/default-gem-permissions b/repos/jekyll/copy/all/usr/jekyll/bin/default-gem-permissions
new file mode 100755
index 0000000000000000000000000000000000000000..33e09bd74c392ab0bbe02bfb27c99fb638a1b11c
--- /dev/null
+++ b/repos/jekyll/copy/all/usr/jekyll/bin/default-gem-permissions
@@ -0,0 +1,8 @@
+#!/bin/bash
+[ "$DEBUG" = "true" ] && set -x
+set -e
+
+if [ "$(id -u)" = "0" ]; then
+  chown -R jekyll:jekyll "$BUNDLE_HOME"
+  chown -R jekyll:jekyll /usr/gem
+fi
diff --git a/repos/jekyll/copy/all/usr/jekyll/bin/gem b/repos/jekyll/copy/all/usr/jekyll/bin/gem
new file mode 100644
index 0000000000000000000000000000000000000000..62d68682c1c8f099d5df851fe5a2d248f7cec74f
--- /dev/null
+++ b/repos/jekyll/copy/all/usr/jekyll/bin/gem
@@ -0,0 +1,7 @@
+#!/bin/bash
+[ "$DEBUG" = "true" ] && set -x
+default-gem-permissions
+exe=/usr/local/bin/gem
+set -e
+
+exec $exe "$@"