#!/bin/bash # fixes the cakelampvm permissions according to the way. ############## if [[ $EUID != 0 ]]; then echo "This script must be run as root or sudo." exit 1 fi if [[ ! $(hostname) == *cakelampvm* ]]; then echo "This script is only designed to be run on the cakelampvm host." exit 1 fi ############## export THISDIR="$( \cd "$(\dirname "$0")" && \pwd )" # obtain the script's working directory. export FEISTY_MEOW_APEX="$( \cd "$THISDIR/../.." && \pwd )" export NO_HELLO=right source "$FEISTY_MEOW_APEX/scripts/core/launch_feisty_meow.sh" # load dependencies for our script. source "$FEISTY_MEOW_SCRIPTS/system/common_sysadmin.sh" source "$FEISTY_MEOW_SCRIPTS/security/password_functions.sh" ############## # it's a requirement to have sql root password, since we may need some sql db configuration. load_password /etc/mysql/secret_password mysql_passwd if [ -z "$mysql_passwd" ]; then read_password "Please enter the MySQL root account password:" mysql_passwd fi if [ -z "$mysql_passwd" ]; then echo "This script must have the sql root password to proceed." exit 1 else store_password /etc/mysql/secret_password "$mysql_passwd" fi ############## sep echo "Regenerating feisty meow loading dock." regenerate exit_on_error "regenerating feisty meow configuration" chown -R "$(fm_username)":"$(fm_username)" /home/$(fm_username)/.[a-zA-Z0-9]* exit_on_error "fix after reconfigured as sudo" ############## # set up some crucial users in the mysql db that we seem to have missed previously. sep echo "Adding users to the mysql database." #hmmm: good application for hiding output unless error here. mysql -u root -p"$mysql_passwd" &>/dev/null <> /etc/bind/cakelampvm.com.conf restart_bind echo "successfully added wildcard domains to the cakelampvm.com bind configuration." fi ############## # fix samba configuration for screwy default of read-only in user homes. # why cripple a necessary feature by default? sep pattern="[#;][[:blank:]]*read only = yes" replacement="read only = no" # we just always do the replacement now rather than making it conditional, # after realizing the sentinel pattern was actually already in the file... # too much subtlety can get one into trouble. sed -i "0,/$pattern/{s/$pattern/$replacement/}" /etc/samba/smb.conf exit_on_error "patching samba configuration to enable write acccess on user home dirs" echo successfully patched the samba configuration to enable writes on user home directories. # add in a disabling of the archive bit mapping feature, which hoses up the execute bit # in an attempt to save the sad old DOS archive bit across the samba connection. grep -q "map archive" /etc/samba/smb.conf # if the phrase wasn't found, we need to add it. if [ $? -ne 0 ]; then sed -i "s/\[global\]/\[global\]\n\nmap archive = no/" /etc/samba/smb.conf exit_on_error "patching samba configuration to turn off archive bit mapping feature" echo Successfully fixed Samba to not use the archive bit mapping feature. fi # sweet, looks like that worked... restart_samba ############## # add the latest version of the cakelampvm environment variables for apache. sep # drop existing file, if already configured. ignore errors. a2disconf env_vars_cakelampvm &>/dev/null # plug in the new version, just stomping anything there. # note: we only expect to have one version of the env_vars dir at a time in place in feisty... \cp -f $FEISTY_MEOW_APEX/production/sites/cakelampvm.com/rolling/env_vars.*/env_vars_cakelampvm.conf /etc/apache2/conf-available exit_on_error "copying environment variables file into place" # enable the new version of the config file. a2enconf env_vars_cakelampvm exit_on_error "enabling the new cakelampvm environment config for apache" echo Successfully configured the apache2 environment variables needed for cakelampvm. ############## # add in a swap mount if not already configured. sep # we will only add swap now if explicitly asked for it. this is to avoid creating # a swap file where the vm is running on an SSD, since that can use up the SSD's lifespan # too quickly. if [ ! -z "$ADD_SWAP" ]; then echo "Checking existing swap partition configuration. " # check for existing swap. free | grep -q "Swap:[[:blank:]]*[1-9][0-9]" if [ $? -ne 0 ]; then # no swap in current session, so add it. echo "Enabling ramdisk swap partition... " add_swap_mount echo " Enabled ramdisk swap partition for current boot session." fi # the above just gives this session a swap partition, but we want to have # the vm boot with one also. # check if there is already swap mentioned in the root crontab. we will get root's # crontab below since this script has to run as sudo. crontab -l | grep -iq add_swap_mount if [ $? -ne 0 ]; then # no existing swap setup in crontab, so add it. echo " Adding a boot-time ramdisk swap partition... " # need to do it carefully, since sed won't add lines to a null file. we thus # create a temporary file to do our work in and ignore sed as a tool for this. tmpfile="$(mktemp junk.XXXXXX)" crontab -l 2>/dev/null >"$tmpfile" echo " # need to explicitly set any variables we will use. FEISTY_MEOW_APEX=${FEISTY_MEOW_APEX} # add swap space to increase memory available. @reboot bash $FEISTY_MEOW_APEX/scripts/system/add_swap_mount.sh " >>"$tmpfile" # now install our new version of the crontab. crontab "$tmpfile" rm "$tmpfile" echo " Added boot-time ramdisk swap partition to crontab for root." fi fi ############## sep echo Adding site avenger packages to composer. # add in site avenger dependencies so we can build avcore properly. pushd ~ &>/dev/null sudo -u $(fm_username) composer config -g repositories.siteavenger composer https://packages.siteavenger.com/ popd &>/dev/null ############## # make the apache umask set group permissions automatically, so we stop having weird # permission issues on temp dirs. sep grep -q "umask" /etc/apache2/envvars if [ $? -eq 0 ]; then # already present. echo the umask configuration for apache already appears to be set. else echo " # set umask to enable group read/write on files and directories. umask 002 " >> /etc/apache2/envvars restart_apache echo "successfully changed apache umask configuration to enable group read/write" fi ############## ############## # sequel--tell them they're great and show the hello again also. sep regenerate exit_on_error "regenerating feisty meow scripts" chown -R "$(fm_username)":"$(fm_username)" /home/$(fm_username)/.[a-zA-Z0-9]* exit_on_error "fix after regenerate as sudo" echo " Thanks for revamping your cakelampvm. :-) You may want to update your current shell's feisty meow environment by typing: regenerate " ##############