Per creare un gruppo, aggiungere alcuni utenti e abilitare il login remoto per lo stesso gruppo da zero fai quanto segue:
A livello locale:
Crea gruppo:
sudo dscl . create /Groups/servsupport
Aggiungi alcuni dettagli come nome reale, password ecc.:
sudo dscl . create /Groups/servsupport RealName "Service and Support"
sudo dscl . create /Groups/servsupport passwd "*"
sudo dscl . create /Groups/servsupport gid 799
Usa un numero di groupID inutilizzato come gid! Ottieni un elenco ordinato di gids usati digitando:
dscl . list /Groups PrimaryGroupID | tr -s ' ' | sort -n -t ' ' -k2,2
C'è anche una risposta da qualche parte su apple.stackexchange.com su come trovare il primo uid o gid gratuito maggiore di x e come applicarlo a nuovi gruppi o utenti.
Aggiungi un utente amministratore (qui presumo che il nome utente sia admin ):
sudo dscl . create /Groups/servsupport GroupMembership admin
Se vuoi aggiungere un secondo utente usa il comando secondario append
:
sudo dscl . append /Groups/servsupport GroupMembership admin2
Verifica se il gruppo ACL servizio SSH esiste:
dscl . list /Groups PrimaryGroupID | grep com.apple.access_ssh*
Se il gruppo non esiste, crearlo come il gruppo Servizio e supporto:
sudo dscl . create /Groups/com.apple.access_ssh
sudo dscl . create /Groups/com.apple.access_ssh RealName "SSH Service ACL"
sudo dscl . create /Groups/com.apple.access_ssh passwd "*"
sudo dscl . create /Groups/com.apple.access_ssh gid 399
Aggiungi il gruppo servsupport come gruppo nidificato al gruppo ACL del servizio SSH se l'ACL SSH è già abilitato:
sudo dseditgroup -o edit -a servsupport -t group com.apple.access_ssh
o se l'ACL SSH è diaceazzato:
sudo dseditgroup -o edit -a servsupport -t group com.apple.access_ssh-disabled
Abilita accesso remoto:
sudo systemsetup -setremotelogin on
Uno script che fa essenzialmente questo tranne la creazione di un nuovo gruppo di servizio e supporto è disponibile qui: add_localadmins_to_ssh . Lo script collegato richiede mods leggere per soddisfare i tuoi requisiti.
In base allo script collegato ne ho creato uno nuovo che soddisfa i tuoi requisiti. Prendilo con un pizzico di sale e testalo accuratamente:
#!/bin/bash
# set the input for lazy convenience
IFS=$' '
# We first need to test if the access_ssh group exists and create it if it doesn't
/usr/bin/dscl . list /Groups PrimaryGroupID | grep com.apple.access_ssh* > /dev/null 2>&1
rc=$?
if [[ $rc != 0 ]]; then
/usr/bin/dscl . create /Groups/com.apple.access_ssh
/usr/bin/dscl . create /Groups/com.apple.access_ssh RealName "SSH Service ACL"
/usr/bin/dscl . create /Groups/com.apple.access_ssh passwd "*"
/usr/bin/dscl . create /Groups/com.apple.access_ssh gid 399
fi
# create "Service and Support" group and add admin users
localadmins=$(/usr/bin/dscl . read /Groups/admin GroupMembership | awk -F': ' '{print $2}')
for account in 'echo $localadmins'; do
# add additional blocks like >> && ! [ "$account" == "username" ] << for additional exclusions
if ! [ "$account" == "root" ] && ! [ "$account" == "itstech" ]; then
userID=$(/usr/bin/dscl . read /Users/$account | grep GeneratedUID | awk '{print $2}')
if [ "$userID" != "" ]; then
# Test if the servsupport group exists and create it if it doesn't
/usr/bin/dscl . read /Groups/servsupport > /dev/null 2>&1
sc=$?
if [[ $sc != 0 ]]; then
/usr/bin/dscl . create /Groups/servsupport
/usr/bin/dscl . create /Groups/servsupport RealName "Service and Support"
/usr/bin/dscl . create /Groups/servsupport passwd "*"
/usr/bin/dscl . create /Groups/servsupport gid 799
fi
/usr/bin/dscl . append /Groups/servsupport GroupMembership "$userID"
else
echo "$account has no local GUID"
fi
fi
done
# Add the "Service and Support" group as nested group to the SSH Service ACL group depending on the state of SSH Service ACL.
GroupState=$(/usr/bin/dscl . list /Groups RealName | grep "SSH Service ACL" | awk '{print $1}')
dseditgroup -o edit -a servsupport -t group $GroupState
if ! [ "$GroupState" == "com.apple.access_ssh" ]; then
/usr/bin/dscl . change /Groups/com.apple.access_ssh-disabled RecordName com.apple.access_ssh-disabled com.apple.access_ssh
fi
# Enable Remote Login service
systemsetup -setremotelogin on
In un ambiente gestito (OpenDirectory o AD) con utenti / gruppi OD / AD con autorizzazioni di accesso amministratore locale è molto più semplice.
Se hai già creato il gruppo, puoi cercare il groupID e il nome del gruppo ( servsupport
sopra) facendo clic con il pulsante destro del mouse sul nome del gruppo in "Utenti e gruppi".