10 votes

Création d'un GROUPE via Utilisateurs & Groupes en ligne de commande

Je voudrais script l'action de créer un groupe via Utilisateurs & Groupes et le lier au compte administrateur et l'activation de la connexion à distance pour le même groupe a permis le service et le support.

Je suis vaguement familier avec des commandes comme dscl - mais je ne suis pas sûr que ce soit la bonne commande.

J'ai vu sudo dscl localhost -append /Local/Default/Groups/thegroupname GroupMembership theusername - pour ajouter un utilisateur admin à un groupe MAIS que doit-on mettre pour GroupMembership - si cette commande est correcte - Le nom de mon groupe est Service and Support

17voto

klanomath Points 63400

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".

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X