83 lines
3.7 KiB
Bash
83 lines
3.7 KiB
Bash
############################
|
|
# THE PERMISSIONS FUNCTION #
|
|
############################
|
|
|
|
function permissions() {
|
|
|
|
DESTDIR="$1"; DESTDIR=${DESTDIR:-`pwd`}
|
|
[ -d $DESTDIR ] || echo "Directory $DESTDIR does not exist."
|
|
[ -d $DESTDIR ] || exit 1
|
|
|
|
[ -f $DESTDIR/wp-config.php ] || echo "This isn't a wordpress installation"
|
|
[ -f $DESTDIR/wp-config.php ] || exit 1
|
|
|
|
local $DATETIME=`date +%Y%m%d.%H%M`
|
|
|
|
if [ `which getfacl` ]; then
|
|
getfacl -R $DESTDIR > .permissions_backup.${DATETIME}
|
|
echo "To rollback: setfacl --restore=${DESTDIR}/.permissions_backup.${DATETIME}"
|
|
fi
|
|
|
|
echo "==WPM PERMISSIONS CALLED ON $DATETIME WITH VERSION $WPMVERSION==" | tee -a $LOGFILE
|
|
echo "==UNIQUE IDENTIFIER $INSTANCEID==" | tee -a $LOGFILE
|
|
echo "==$INSTANCEID==Executing permissions on $DESTDIR" | tee -a $LOGFILE
|
|
|
|
echo "==$INSTANCEID==Ensuring the uploads directory exists" | tee -a $LOGFILE
|
|
[ -d "$DESTDIR/wp-content/uploads" ] || mkdir -p $DESTDIR/wp-content/uploads
|
|
|
|
echo "==$INSTANCEID==Setting file and directory permissions" | tee -a $LOGFILE
|
|
try find $DESTDIR -type d -exec chmod 750 '{}' \;
|
|
try find $DESTDIR -type f -exec chmod 640 '{}' \;
|
|
|
|
echo "==$INSTANCEID==Setting ownership" | tee -a $LOGFILE
|
|
|
|
[ -z $SELECTED_USER ] && UID="9001" || UID=`id -u -n $SELECTED_USER`
|
|
|
|
# THE UIDS WE KNOW WE SHOULDNT BE USING
|
|
local BADNESS=("0" "2" "3" "4" "5" "6" "7" "8" "9" "10" "13" "34" "38" "39" "41" "65534" "100")
|
|
for BADDY in ${BADNESS[*]}; do
|
|
if [ "$UID" == "$BADDY" ]; then
|
|
echo "UID of $BADDY is not allowed setting to over nine thousand"
|
|
UID="9001"
|
|
fi
|
|
done # END BADNESS CHECK
|
|
|
|
echo "==$INSTANCEID==User: `id -u -n $UID`, Group: `getent group $SELECTED_GROUP | cut -d: -f1`" | tee -a $LOGFILE
|
|
try chown -R `id -u -n $UID`:`getent group $SELECTED_GROUP | cut -d: -f1` $DESTDIR
|
|
|
|
local FPMCHECK=`ps -ef | grep fpm | grep -v grep`
|
|
local APACHECHECK=`ps -ef | egrep 'apache|httpd|apache2' | grep -v egrep | grep -v grep`
|
|
|
|
if [ ${#FPMCHECK} -eq 0 ]; then
|
|
if [ ${#APACHECHECK} -gt 0 ]; then
|
|
echo "php_flag engine off" > $DESTDIR/wp-content/uploads/.htaccess
|
|
echo "==$INSTANCEID==Wrote htaccess file to uploads (mod_php style)" | tee -a $LOGFILE
|
|
try find $DESTDIR/wp-content/uploads/ -type d -exec chmod 770 '{}' \;
|
|
echo "==$INSTANCEID==Uploads directory set 770" | tee -a $LOGFILE
|
|
fi
|
|
elif [ ${#FPMCHECK} -gt 0 ]; then
|
|
if [ ${#APACHECHECK} -gt 0 ]; then
|
|
echo "Options -ExecCGI" > $DESTDIR/wp-content/uploads/.htaccess
|
|
echo "==$INSTANCEID==Wrote htaccess file to uploads (fpm style)" | tee -a $LOGFILE
|
|
try find $DESTDIR/wp-content/uploads/ -type d -exec chmod 770 '{}' \;
|
|
echo "==$INSTANCEID==Uploads directory set 770" | tee -a $LOGFILE
|
|
fi
|
|
else
|
|
echo "==$INSTANCEID==Apache not running, no htaccess written." | tee -a $LOGFILE
|
|
fi
|
|
|
|
echo "==$INSTANCEID==Checking special directories." | tee -a $LOGFILE
|
|
|
|
[ -d "$DESTDIR/wp-content/cache" ] && find $DESTDIR/wp-content/cache -type d -exec chmod 770 '{}' \;
|
|
[ -d "$DESTDIR/wp-content/w3tc-config" ] && find $DESTDIR/wp-content/w3tc-config -type d -exec chmod 770 '{}' \;
|
|
[ -d "$DESTDIR/cache" ] && find $DESTDIR/cache -type d -exec chmod 770 '{}' \;
|
|
[ -d "$DESTDIR/w3tc-config" ] && find $DESTDIR/w3tc-config -type d -exec chmod 770 '{}' \;
|
|
[ -d "$DESTDIR/stats" ] && chown -R stats $DESTDIR/stats
|
|
[ -d "$DESTDIR/wp-content/wflogs" ] && find $DESTDIR/wp-content/wflogs -type d -exec chmod 770 '{}' \;
|
|
[ -d "$DESTDIR/wp-content/wfcache" ] && find $DESTDIR/wp-content/wfcache -type d -exec chmod 770 '{}' \;
|
|
[ -d "$DESTDIR/wp-content/wflogs" ] && find $DESTDIR/wp-content/wflogs -type f -exec chmod 660 '{}' \;
|
|
|
|
echo "==$INSTANCEID==Permissions set complete." | tee -a $LOGFILE
|
|
|
|
} # END PERMISSIONS
|