### -*-conf-*- ### ### userv service for claiming a directory in a special filesystem if ( glob service claim-dir & glob service-user root & ( grep calling-user-shell /etc/shells | glob calling-user-shell /dev/token-shells/userv ) ) no-suppress-args null-fd 0 require-fd 1-2 write ignore-fd 3- no-set-environment execute sh -c "set -e; quis=$0; \ case $# in \ 1) filsys=$1 ;; \ *) echo >&2 \"usage: $quis FILSYS\"; exit 1 ;; \ esac; \ foundp=nil; mode=700; \ while read fs dir opts; do \ case \"$fs\" in \ \\#* | \"\") continue ;; \ \"$filsys\") foundp=t; break ;; \ esac; \ done <@sysconfdir@/claim-dir.tab; \ case $foundp in \ nil) \ echo >&2 \"$quis: unknown filesystem \\`$filsys'\"; \ exit 1 \ ;; \ esac; \ for opt in $opts; do \ arg=${opt#*=}; \ case \"$opt\" in \ acl=*) \ verdict=forbid acl=$arg; \ while :; do \ case \"$acl\" in ?*) ;; *) break ;; esac; \ case \"$acl\" in \ *,*) word=${acl%%,*} acl=${acl#*,} ;; \ *) word=$acl acl=\"\" ;; \ esac; \ case \"$word\" in \ -*) sense=forbid word=${word#-} ;; \ *) sense=allow word=$word ;; \ esac; \ case \"$word\" in \ %*) pat=${word#%} list=\"$USERV_GROUP $USERV_GID\" ;; \ *) pat=$word list=\"$USERV_USER $USERV_UID\" ;; \ esac; \ matchp=nil; \ for i in $list; do \ case \"$i\" in $pat) matchp=t; break ;; esac; \ done; \ case $matchp in t) verdict=$sense; break ;; esac; \ done; \ case $verdict in \ forbid) \ echo >&2 \"$quis: permission denied\"; \ exit 1 \ ;; \ esac \ ;; \ mode=*) \ mode=$arg \ ;; \ mount=*) \ if ! mountpoint -q \"$dir\"; then $arg \"$dir\"; fi \ ;; \ *) \ echo >&2 \"$quis: unknown option \\`$opt'\"; \ exit 1 \ ;; \ esac; \ done; \ set _ $USERV_USER; user=$2; \ set _ $USERV_GROUP; group=$2; \ cd \"$dir\"; \ if [ ! -d \"$user\" ]; then \ mkdir -m$mode \"$user\"; \ chown \"$user:$group\" \"$user\"; \ fi; \ echo \"$dir/$USERV_USER\" \ " claim-dir fi