#!/bin/bash #################################################################################################### #### author: SlickStack ############################################################################ #### link: https://slickstack.io ################################################################### #### mirror: https://mirrors.slickstack.io/bash/ss-perms-mysql-packages.txt ######################## #### path: /var/www/ss-perms-mysql-packages ######################################################## #### destination: n/a (not a boilerplate) ########################################################## #### purpose: Resets file and user permissions for MySQL module core files and folders ############# #### module version: MySQL 8.0.x ################################################################### #### sourced by: ss-install-mysql-packages, ss-perms ############################################### #### bash aliases: ss perms mysql core, ss perms mysql packages #################################### #################################################################################################### ## source ss-config ## source /var/www/ss-config ## source ss-functions ## source /var/www/ss-functions ## BELOW THIS RELIES ON SS-CONFIG AND SS-FUNCTIONS #################################################################################################### #### TABLE OF CONTENTS (SS-Perms-MySQL-Packages) ################################################### #################################################################################################### ## this is a brief summary of the different code snippets you will find in this script ## ## each section should be commented so you understand what is being accomplished ## ## A. Touch Timestamp File ## B. Message (Begin Script) ## C. Reset Permissions (MySQL Packages) #################################################################################################### #### A. SS-Perms-MySQL-Packages: Touch Timestamp File ############################################## #################################################################################################### ## this is a dummy timestamp file that will remember the last time this script was run ## ## it can be useful for developer reference and is sometimes used by SlickStack ## ## script timestamp ## ss_touch "${TIMESTAMP_SS_PERMS_MYSQL_PACKAGES}" #################################################################################################### #### B. SS-Perms-MySQL-Packages: Message (Begin Script) ############################################ #################################################################################################### ## this is a simple message that announces to the shell the purpose of this bash script ## ## it will only be noticed by sudo users who manually call ss core bash scripts ## ## echo message ## ss_echo "${COLOR_INFO}Running ss-perms-mysql-packages... ${COLOR_RESET}" #################################################################################################### #### C. SS-Perms-MySQL-Packages: Reset Permissions (MySQL Packages) ################################ #################################################################################################### ## ADD IF STATEMENT to reset perms for mysql client instead of mysql server when ss remote database is true ## reset permissions ## # chown root:root /etc/mysql/my.cnf # chmod 0777 /etc/mysql/my.cnf ## symlink to /etc/alternatives/my.cnf ## reset permissions ## # mkdir /var/run/mysqld # chown mysql:mysql /var/run/mysqld # chmod -R 0775 /var/run/mysqld # chown mysql:mysql /var/www/logs/mysql*.log # chown mysql:mysql /var/lib/mysql ## drwx------ # chown mysql:mysql /var/lib/mysql-files ## drwx------ # chown mysql:mysql /var/lib/mysql-keyring ## drwx------ # chown root:root /var/lib/mysql-upgrade ## must be root:root ## drwxr-xr-x ## create MySQL log files if they do not exist ## if [ ! -f "/var/www/logs/mysql-gen.log" ]; then touch "/var/www/logs/mysql-gen.log"; fi if [ ! -f "/var/www/logs/mysql-error.log" ]; then touch "/var/www/logs/mysql-error.log"; fi if [ ! -f "/var/www/logs/mysql-slow.log" ]; then touch "/var/www/logs/mysql-slow.log"; fi mkdir /var/run/mysqld ## reset MySQL permissions ## chown mysql:mysql /var/run/mysqld chown root:root /etc/mysql/my.cnf chown root:root /etc/mysql/mysql.cnf chown root:root /etc/mysql/mysql.conf.d/mysqld.cnf chmod 0755 /etc/mysql/my.cnf if [ ! -f "/var/www/logs/mysql-gen.log" ]; then touch "/var/www/logs/mysql-gen.log"; fi if [ ! -f "/var/www/logs/mysql-error.log" ]; then touch "/var/www/logs/mysql-error.log"; fi if [ ! -f "/var/www/logs/mysql-slow.log" ]; then touch "/var/www/logs/mysql-slow.log"; fi chown mysql:mysql /var/www/logs/mysql*.log* chmod 0644 /var/www/logs/*.log ## 6755 should also work ## not really mysql module related but not sure what script to keep this in ## ## ensure misc files exist (makes things look pretty and suppresses error messages) ## if [[ ! -f "/var/www/meta/wp.sql" ]]; then touch "/var/www/meta/wp.sql"; fi ## SQL dump file (we want SFTP users to be able to access) ## chown -R $SFTP_USER:www-data /var/www/meta/wp.sql ## $SFTP_USER:www-data to better support SFTP access chmod 0640 /var/www/meta/wp.sql ## 0640 should be enough (or 644) ## SAFE MODE reset permissions ## # mkdir /var/run/mysqld # chown mysql:mysql /var/run/mysqld # chmod -R 775 /var/run/mysqld # chown mysql:mysql /var/www/logs/mysql*.log #################################################################################################### #### PLACEHOLDER: Reset Permissions (SlickStack Scripts) ########################################### #################################################################################################### ## we include this permissions reset in all cron jobs and bash scripts for redundancy ## ## chmod 0700 means only the root/sudo users can execute any SlickStack scripts ## ## THIS SNIPPET DOES NOT RELY ON SS-CONFIG OR SS-FUNCTIONS ## SNIPPET: ss bash scripts, ss cron jobs ## UPDATED: 02JUL2022 chown root:root /var/www/ss* ## must be root:root chown root:root /var/www/crons/*cron* ## must be root:root chown root:root /var/www/crons/custom/*cron* ## must be root:root chmod 0700 /var/www/ss* ## 0700 means only root/sudo can execute chmod 0700 /var/www/crons/*cron* ## 0700 means only root/sudo can execute chmod 0700 /var/www/crons/custom/*cron* ## 0700 means only root/sudo can execute #################################################################################################### #### SlickStack: External References Used To Improve This Script (Thanks, Interwebz) ############### #################################################################################################### ## Ref: ## SS_EOF