All pastes #954435 Raw Edit

setchflags script

public shellscript v1 · immutable
#954435 ·published 2008-03-23 22:06 UTC
rendered paste body
#!/bin/sh## Script for setting chflags# Last modified: 09-12-2007set_dirs[0]='/bin'set_dirs[1]='/sbin'set_dirs[2]='/usr/bin'set_dirs[3]='/usr/libexec'set_dirs[4]='/usr/sbin'set_dirs[5]='/usr/X11R6/bin'set_files[0]='/bsd'set_files[1]='/etc/changelist'set_files[2]='/etc/daily'set_files[3]='/etc/inetd.conf'set_files[4]='/etc/netstart'set_files[5]='/etc/pf.conf'set_files[6]='/etc/rc'set_files[7]='/etc/rc.conf'set_files[8]='/etc/rc.conf.local'set_files[9]='/etc/rc.local'set_files[10]='/etc/rc.shutdown'set_files[11]='/etc/security'set_files[12]='/etc/mtree/special'######################################################test=$(sysctl kern.securelevel | grep "\-1")if [ "$(id -u)" != "0" ]; then     echo "This script must be run as root!"     exit 67elif [ "$test" == "" ]; then    echo "Changing chflags is only possible at securelevel -1"    echo "Current $(sysctl kern.securelevel), so please change securelevel to -1 first"    exit 67fiif [[ "$*" == "-h" || "$*" == "-high" ]]; then    echo -n "Setting chflags to high security settings..."    element_count=${#set_dirs[@]}    index=0    while [ "$index" -lt "$element_count" ]    do        chflags -R schg "${set_dirs[$index]}"        let "index = $index + 1"    done    element_count=${#set_files[@]}    index=0    while [ "$index" -lt "$element_count" ]    do        chflags schg "${set_files[$index]}"        let "index = $index + 1"    done    echo "     done"elif [[ "$*" == "-l" || "$*" == "-low" ]]; then    echo -n "Setting chflags to low security settings..."    element_count=${#set_dirs[@]}    index=0    while [ "$index" -lt "$element_count" ]    do        chflags -R noschg "${set_dirs[$index]}"        let "index = $index + 1"    done    element_count=${#set_files[@]}    index=0    while [ "$index" -lt "$element_count" ]    do        chflags noschg "${set_files[$index]}"        let "index = $index + 1"    done    echo "     done"else    if [ "$*" == "" ]; then        echo "setchflags.sh: missing option"    else        echo "setchflags.sh: unknown option $*"    fi    echo "usage: setchflags.sh [-l, -low, -h, -high]"    echo "-l, -low  = low security  (noschg)"    echo "-h, -high = high security (schg)"     echo ""    exit 67fi