rlm@1: #!/bin/bash rlm@1: # Copyright (c) 2004 Matthias S. Benkmann
rlm@1: # You may do everything with this code except misrepresent its origin. rlm@1: # PROVIDED `AS IS' WITH ABSOLUTELY NO WARRANTY OF ANY KIND! rlm@1: rlm@1: DAISY_CHAIN="" rlm@1: rlm@1: for p in $(type -ap chmod) ; do rlm@1: if [ ! $p -ef $0 ]; then DAISY_CHAIN=$p ; break ; fi rlm@1: done rlm@1: rlm@1: if [ ! -n "$DAISY_CHAIN" ]; then rlm@1: echo Cannot find real ${0##*/} command rlm@1: exit 1 rlm@1: fi rlm@1: rlm@1: if [ $UID == 0 ]; then rlm@1: exec $DAISY_CHAIN "$@" rlm@1: fi rlm@1: rlm@1: report=0 rlm@1: doit=1 rlm@1: reportmsg="*** chmod $@" rlm@1: rlm@1: set -- "$@" eND_ofLisT rlm@1: while true ; do rlm@1: arg="$1" rlm@1: shift 1 rlm@1: case "_$arg" in rlm@1: _eND_ofLisT) break ;; rlm@1: _g+s|_u+s) report=1; doit=0 ;; rlm@1: _4755) arg=755 ; report=1; doit=1 ;; rlm@1: _4555) arg=555 ; report=1; doit=1 ;; rlm@1: *) ;; rlm@1: esac rlm@1: set -- "$@" "$arg" rlm@1: done rlm@1: rlm@1: if [ "$report" = 1 ]; then echo 1>&2 "$reportmsg" ; fi rlm@1: rlm@1: if [ "$doit" = 1 ]; then rlm@1: exec $DAISY_CHAIN "$@" rlm@1: fi rlm@1: rlm@1: exit 0