10 votos

La creación de un GRUPO a través de Usuarios Y Grupos en la línea de comandos

Me gustaría secuencia de comandos de la acción de la creación de un grupo a través de Usuarios Y Grupos y vincularla a la cuenta de administrador y habilitar la conexión remota para el mismo grupo habilitado el servicio y el soporte.

Soy vagamente familiarizado con los comandos como dscl - pero no estoy seguro de si este es incluso el derecho de comandos

He visto sudo dscl localhost -append /Local/Default/Grupos/thegroupname GroupMembership theusername - para agregar un usuario admin para un grupo, PERO Lo que se debe poner para GroupMembership - si este comando es correcta - El nombre de mi grupo de Apoyo y Servicio

16voto

klanomath Puntos 19587

Para crear un grupo, añadir algunos usuarios y habilitar la conexión remota para el mismo grupo desde cero, hacer lo siguiente:

Localmente:

Crear grupo:

sudo dscl . create /Groups/servsupport

Añadir algunos detalles como el nombre, 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

El uso de un boleto de groupID número gid! Usted obtener una lista ordenada de utilizar los gids, escribiendo:

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

Hay también una respuesta en algún lugar, en apple.stackexchange.com cómo encontrar el primer uid o gid mayor que x y cómo se aplican a nuevos grupos o usuarios.

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

sudo dscl . create /Groups/servsupport GroupMembership admin

Si desea agregar un segundo usuario utilice el subcomando append:

sudo dscl . append /Groups/servsupport GroupMembership admin2

Prueba si el grupo de Servicio SSH ACL existe:

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

Si el grupo no existe crearlo similares como el Servicio y grupo de Apoyo:

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

Agregar el grupo servsupport como grupo anidado para el Servicio SSH grupo ACL si el SSH ACL ya está habilitado:

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

o si SSH ACL son dsiabled:

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

Habilitar el inicio de sesión remoto:

sudo systemsetup -setremotelogin on

Una secuencia de comandos haciendo esencialmente esto, excepto la creación de un nuevo Servicio y grupo de Apoyo está disponible aquí: add_localadmins_to_ssh. El script vinculado requiere ligeros mods para satisfacer sus necesidades.


Basado en el script vinculado hice una nueva reunión con sus requisitos. Tomar con un grano de sal y prueba 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 OD/ANUNCIOS a los usuarios/grupos locales de administración de permisos de acceso es mucho más simple.


Si ya has creado el grupo puede buscar el groupID y el nombre del grupo (servsupport anterior) haciendo clic derecho en el nombre del grupo en "Usuarios Y Grupos".

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X