#!/usr/bin/env bash
# plik receptury: security_template

# Wyznaczenie bezpiecznej wartości zmiennej $PATH
PATH='/usr/local/bin:/bin:/usr/bin'
# Niemal napewno zmienna jest już oznaczona jako eksportowana, ale dla pewności...
\export PATH

# Usunięcie wszystkich aliasów. Uwaga: początkowy znak \ zapobiega wykorzystaniu aliasu
\unalias -a

# Usunięcie wszystkich dowzorowań ścieżek dostępu do poleceń
hash -r

# Wyznaczenie "twardego" ograniczenia na 0 zapobiega zrzutom pamięci
ulimit -H -c 0 --

# Ustawienie bezpiecznej wartości IFS (składnia dla powłok bash i ksh93 - nieprzenośna!)
IFS=$' \t\n'

# Wyznaczenie bezpiecznej wartości zmiennej umask i wprowadzenie nowego ustawienia.
# Działanie nie obejmuje plików powstałych w wyniku wcześniejszego przekierowania danych
# Wartość 002 odpowiada prawom 0774, wartość 077 odpowiada prawom 0700 itd.
UMASK=002
umask $UMASK

until [ -n "$temp_dir" -a ! -d "$temp_dir" ]; do
    temp_dir="/tmp/opisowy_prefiks.${RANDOM}${RANDOM}${RANDOM}"
done
mkdir -p -m 0700 $temp_dir \
  || (echo "BŁĄD: Nie można utworzyć katalogu tymczasowego '$temp_dir': $?"; exit 100)

# W miarę możliwości wszystkie pliki tymczasowe powinny zostać usunięte.
# Zmienna $temp_dir musi być zdefiniowana, a jej wartość nie może być modyfikowana!
cleanup="rm -rf $temp_dir"
trap "$cleanup" ABRT EXIT HUP INT QUIT
