Pour créer un groupe, ajouter des utilisateurs et activer la connexion à distance pour le même groupe. à partir de zéro faites ce qui suit :
Localement :
Créer un groupe :
sudo dscl . create /Groups/servsupport
Ajoutez quelques détails comme le nom réel, le mot de passe, etc :
sudo dscl . create /Groups/servsupport RealName "Service and Support"
sudo dscl . create /Groups/servsupport passwd "*"
sudo dscl . create /Groups/servsupport gid 799
Utilisez un numéro de groupID inutilisé comme gid ! Vous obtenez une liste triée des gids utilisés en entrant :
dscl . list /Groups PrimaryGroupID | tr -s ' ' | sort -n -t ' ' -k2,2
Il y a aussi une réponse quelque part sur apple.stackexchange.com pour trouver le premier uid ou gid libre. supérieure à x et comment l'appliquer à de nouveaux groupes ou utilisateurs.
Ajouter un utilisateur admin (ici je suppose que le nom d'utilisateur est admin ) :
sudo dscl . create /Groups/servsupport GroupMembership admin
Si vous voulez ajouter un deuxième utilisateur, utilisez la sous-commande append
:
sudo dscl . append /Groups/servsupport GroupMembership admin2
Vérifiez si le groupe ACL du service SSH existe :
dscl . list /Groups PrimaryGroupID | grep com.apple.access_ssh*
Si le groupe n'existe pas, créez-le comme le groupe Service et Support :
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
Ajouter le groupe servsupport comme groupe imbriqué dans le groupe SSH Service ACL si le SSH ACL est déjà activé :
sudo dseditgroup -o edit -a servsupport -t group com.apple.access_ssh
ou si les ACL SSH sont désactivées :
sudo dseditgroup -o edit -a servsupport -t group com.apple.access_ssh-disabled
Activez la connexion à distance :
sudo systemsetup -setremotelogin on
Un script faisant essentiellement cela, à l'exception de la création d'un nouveau groupe Service et Support, est disponible ici : add_localadmins_to_ssh . Le script lié nécessite de légères modifications pour répondre à vos besoins.
Sur la base du script lié, j'en ai fait un nouveau répondant à vos exigences. Prenez-le avec un grain de sel et testez-le minutieusement :
#!/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
Dans un environnement géré (OpenDirectory ou AD) avec des utilisateurs/groupes OD/AD ayant des droits d'accès d'administrateur local, c'est beaucoup plus simple.
Si vous avez déjà créé le groupe, vous pouvez rechercher l'ID du groupe et le nom du groupe ( servsupport
ci-dessus) en cliquant avec le bouton droit de la souris sur le nom du groupe dans "Utilisateurs et groupes".