#!/bin/bash # # Copyright (C) 2018 Mike Gabriel # # This script is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This script 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. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. TRANSFER_BASE="/skole/tjener/transfer" TRANSFER_TEACHERS="${TRANSFER_BASE}/nur-Lehrer" TRANSFER_STUDENTS="${TRANSFER_BASE}/Schüler+Lehrer" GROUP_TEACHERS="teachers" GROUP_STUDENTS="students" FOLDERLIST_TEACHERS="t1 t2 t3 t4 t5 t6 t7 t8 t9" FOLDERLIST_STUDENTS="s1 s2 s3 s4 s5 s6 s7 s8 s9" if [ -f /etc/default/itzks-transfer-create ]; then . /etc/default/itzks-transfer-create fi function find_mount_point() { LANG=C mount | while read mountline; do mountpoint=$(echo "${mountline}" | awk '{print $3}') if echo $1 | grep -q "${mountpoint}"; then echo ${mountpoint} fi done | sort | tail -n1 } function find_mounted_dev() { echo $(LANG=C mount | grep -E ".*on\\s$1\s" | awk '{print $1}') } transfer_mount_point=$(find_mount_point ${TRANSFER_BASE}) transfer_mounted_dev=$(find_mounted_dev ${transfer_mount_point}) if ! blkid "${transfer_mounted_dev}" | grep -qE '.*\sTYPE="ext[3-4]{1}"(\s|$)'; then echo "ERROR: Underlying filesystem of mount-point ${transfer_mount_point} (${transfer_mounted_dev}) is not an ext3/ext4 file system." echo " Exiting." exit -1 fi if ! cat /etc/fstab | grep "${transfer_mount_point}" | grep -qE ".*(\s|,)acl(,|\s).*"; then echo "WARNING: Underlying filesystem of mount-point ${transfer_mount_point} does not have ACL support. Enabling it temporarily..." mount -o remount,acl "${transfer_mount_point}" fi mkdir -p "${TRANSFER_TEACHERS}" mkdir -p "${TRANSFER_STUDENTS}" # create t1 - t9 for teachers for i in ${FOLDERLIST_TEACHERS}; do mkdir -p "${TRANSFER_TEACHERS}/${i}" done # create s05 - s13 for students for i in ${FOLDERLIST_STUDENTS}; do mkdir -p "${TRANSFER_STUDENTS}/${i}" done # ACLs for teachers' transfer folders cd "${TRANSFER_TEACHERS}" # ACLs chown root:${GROUP_TEACHERS} . chmod 0750 . chown root:root t* setfacl -m u::rwx t* setfacl -m g::rwx t* setfacl -m g:${GROUP_TEACHERS}:rwx t* setfacl -m o::--- t* setfacl -m d:u::rwx t* setfacl -m d:g::rwx t* setfacl -m d:g:${GROUP_TEACHERS}:rwx t* setfacl -m d:o::--- t* cd - 1>/dev/null # ACLs for students' transfer folders cd "${TRANSFER_STUDENTS}" # ACLs chown root:${GROUP_STUDENTS} . chmod 0750 . chown root:root s* setfacl -m u::rwx s* setfacl -m g::rwx s* setfacl -m g:${GROUP_TEACHERS}:rwx s* setfacl -m g:${GROUP_STUDENTS}:rwx s* setfacl -m o::--- s* setfacl -m d:u::rwx s* setfacl -m d:g::rwx s* setfacl -m d:g:${GROUP_TEACHERS}:rwx s* setfacl -m d:g:${GROUP_STUDENTS}:r-x s* setfacl -m d:o::--- s* cd - 1>/dev/null if ! cat /etc/fstab | grep ${transfer_mount_point} | grep -qE ".*(\s|,)acl(,|\s).*"; then echo "WARNING: ${transfer_mount_point} does not support ACLs. Enable ACL support in /etc/fstab." mount -o remount,noacl "${transfer_mount_point}" fi exit 0