Creazione di un GRUPPO tramite utenti e gruppi nella riga di comando

2

Mi piacerebbe scrivere l'azione di creare un gruppo tramite Utenti e amp; Raggruppa e associa l'account amministratore e al login remoto per lo stesso gruppo di servizi e supporto abilitato.

Ho vagamente familiarità con comandi come dscl - ma non sono sicuro che sia anche il comando giusto

Ho visto sudo dscl localhost -append / Local / Default / Groups / thegroupname GroupMembership theusername - per aggiungere un utente admin ad un gruppo MA Cosa dovrebbe essere messo per GroupMembership - se questo comando è corretto - Il nome del mio gruppo è servizio e supporto

    
posta k3vmo 28.11.2017 - 15:40
fonte

1 risposta

6

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

    
risposta data 28.11.2017 - 18:09
fonte

Leggi altre domande sui tag