#!/bin/bash # # Richard Kettlewell 2011-06-18 # # This file is part of secnet. # See README for full list of copyright holders. # # secnet 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 d of the License, or # (at your option) any later version. # # secnet 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 # version 3 along with secnet; if not, see # https://www.gnu.org/licenses/gpl.html. # set -e group=${group:-secnet} user=${user:-secnet} # pick ID1 ID2 ... IDn # Echoes an ID matching none of ID1..IDn pick() { local n n=250 # better not choose 0! while :; do ok=true for k in "$@"; do if [ $n = $k ]; then ok=false break fi done if $ok; then echo $n return fi n=$((1+$n)) done } if dscl . -read /Groups/$group >/dev/null 2>&1; then : else gids=$(dscl . -list /Groups PrimaryGroupID|awk '{print $2}') gid=$(pick $gids) dscl . -create /Groups/$group dscl . -create /Groups/$group PrimaryGroupID $gid dscl . -create /Groups/$group Password \* fi if dscl . -read /Users/$user >/dev/null 2>&1; then : else uids=$(dscl . -list /Users UniqueID|awk '{print $2}') uid=$(pick $uids) gid=$(dscl . -read /Groups/$group PrimaryGroupID | awk '{print $2}') dscl . -create /Users/$user dscl . -create /Users/$user UniqueID $uid dscl . -create /Users/$user UserShell /usr/bin/false dscl . -create /Users/$user RealName 'secnet' dscl . -create /Users/$user NFSHomeDirectory /var/empty dscl . -create /Users/$user PrimaryGroupID $gid dscl . -create /Users/$user Password \* fi cp uk.org.greenend.secnet.plist /Library/LaunchDaemons/. launchctl load /Library/LaunchDaemons echo "To start secnet:" echo " sudo launchctl start uk.org.greenend.secnet" echo echo "To stop secnet:" echo " sudo launchctl stop uk.org.greenend.secnet" echo echo "To uninstall:" echo " sudo launchctl unload /Library/LaunchDaemons/uk.org.greenend.secnet.plist" echo " sudo rm -f /Library/LaunchDaemons/uk.org.greenend.secnet.plist"