Creando un GRUPO a través de Usuarios y Grupos en la línea de comandos

1

Me gustaría hacer un script de la acción de crear un grupo a través de Usuarios & Agrupe y vincule a la cuenta de administrador y habilitando el inicio de sesión remoto para el mismo servicio y soporte habilitado para grupos.

Estoy vagamente familiarizado con comandos como dscl, pero no estoy seguro de que este sea el comando correcto

He visto sudo dscl localhost -append / Local / Default / Groups / thegroupname GroupMembership theusername: para agregar un usuario administrador a un grupo, PERO lo que se debe poner para GroupMembership - si este comando es correcto - el nombre de mi grupo es servicio y soporte

    
pregunta k3vmo 28.11.2017 - 15:40

1 respuesta

5

Para crear un grupo, agregue algunos usuarios y habilite el inicio de sesión remoto para el mismo grupo desde el principio haga lo siguiente:

Localmente:

Crear grupo:

sudo dscl . create /Groups/servsupport

Agregue algunos detalles como nombre real, contraseña, etc.:

sudo dscl . create /Groups/servsupport RealName "Service and Support"
sudo dscl . create /Groups/servsupport passwd "*"
sudo dscl . create /Groups/servsupport gid 799

¡Usa un número de ID de grupo no utilizado como gid! Obtienes una lista ordenada de gids usadas ingresando:

dscl . list /Groups PrimaryGroupID | tr -s ' ' | sort -n -t ' ' -k2,2

También hay una respuesta en algún lugar de apple.stackexchange.com sobre cómo encontrar el primer uid o gid mayor que x y cómo aplicarlo a nuevos grupos o usuarios.

Agregar un usuario administrador (aquí asumo que el nombre de usuario es admin ):

sudo dscl . create /Groups/servsupport GroupMembership admin

Si desea agregar un segundo usuario, use el subcomando append :

sudo dscl . append /Groups/servsupport GroupMembership admin2

Compruebe si existe el grupo SSH Service ACL :

dscl . list /Groups PrimaryGroupID  | grep com.apple.access_ssh*

Si el grupo no existe, créelo de manera similar al grupo de Servicio y soporte:

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

Agregue el grupo servsupport como grupo anidado al grupo de ACL del servicio SSH si el SSH ACL ya está habilitado:

sudo dseditgroup -o edit -a servsupport -t group com.apple.access_ssh

o si SSH ACL es dsiabled:

sudo dseditgroup -o edit -a servsupport -t group com.apple.access_ssh-disabled

Habilitar inicio de sesión remoto:

sudo systemsetup -setremotelogin on

Un script que realiza esencialmente esto, excepto la creación de un nuevo Grupo de Servicio y Soporte, está disponible aquí: add_localadmins_to_ssh . El script vinculado requiere modificaciones leves para cumplir con sus requisitos.

Basándome en el script vinculado, hice uno nuevo que cumple con sus requisitos. Tómelo con un grano de sal y pruébelo a fondo:

#!/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

En un entorno administrado (OpenDirectory o AD) con usuarios / grupos OD / AD con permisos de acceso de administrador local, es mucho más simple.

Si ya creó el grupo, puede buscar el ID del grupo y el nombre del grupo ( servsupport arriba) haciendo clic con el botón derecho en el nombre del grupo en "Usuarios y grupos".

    
respondido por el klanomath 28.11.2017 - 18:09

Lea otras preguntas en las etiquetas