AlternC/src/fixperms.sh

109 lines
3.1 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash -e
#
# $Id: fixperms.sh,v 1.1 2005/08/29 19:21:31 benjamin Exp $
# ----------------------------------------------------------------------
# AlternC - Web Hosting System
# Copyright (C) 2002 by the AlternC Development Team.
# http://alternc.org/
# ----------------------------------------------------------------------
# Based on:
# Valentin Lacambre's web hosting softwares: http://altern.org/
# ----------------------------------------------------------------------
# LICENSE
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License (GPL)
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# To read the license please visit http://www.gnu.org/copyleft/gpl.html
# ----------------------------------------------------------------------
# Original Author of file: Benjamin Sonntag for Metaconsult
# Purpose of file: Fix permission and ownership of html files
# ----------------------------------------------------------------------
#
#Default Query : fixperms for all account
query="SELECT uid,login FROM membres"
sub_dir=""
#Two optionals argument
# -l string : a specific login to fix
# -u interger : a specifi uid to fix
while getopts "l:u:d:" optname
do
case "$optname" in
"l")
query="SELECT uid,login FROM membres WHERE login LIKE '$OPTARG'"
;;
"u")
query="SELECT uid,login FROM membres WHERE uid LIKE '$OPTARG'"
;;
"d")
sub_dir="$OPTARG"
;;
"?")
echo "Unknown option $OPTARG - stop processing"
exit
;;
":")
echo "No argument value for option $OPTARG - stop processing"
exit
;;
*)
# Should not occur
echo "Unknown error while processing options"
exit
;;
esac
done
CONFIG_FILE="/etc/alternc/local.sh"
PATH=/sbin:/bin:/usr/sbin:/usr/bin
umask 022
if [ ! -r "$CONFIG_FILE" ]; then
echo "Can't access $CONFIG_FILE."
exit 1
fi
if [ `id -u` -ne 0 ]; then
echo "fixperms.sh must be launched as root"
exit 1
fi
. "$CONFIG_FILE"
doone() {
read GID LOGIN
while [ "$LOGIN" ] ; do
if [ "$DEBUG" ]; then
echo "Setting rights and ownership for user $LOGIN having gid $GID"
fi
INITIALE=`echo $LOGIN |cut -c1`
REP="$ALTERNC_LOC/html/$INITIALE/$LOGIN/$sub_dir"
# Set the file readable only for the AlternC User
chown -R $GID:$GID "$REP"
chmod 2770 -R "$REP"
# Delete existings ACL
# Set the defaults acl on all the files
setfacl -b -k -m d:g:alterncpanel:rw- -m d:u:$GID:rw- -m d:g:$GID:rw- \
-m g:alterncpanel:rw- -m u:$GID:rw- -m g:$GID:rw- \
-R "$REP"
read GID LOGIN
done
}
mysql --defaults-file=/etc/alternc/my.cnf -B -e "$query" |grep -v ^uid|doone