Controlla se un utente OS X è un amministratore?

3

In uno script, come posso verificare se l'utente "Bill" è un membro del gruppo admin (gruppo 80)?

Ho intenzione di usarlo in uno script per verificare se lo è e se non lo è, rendilo un utente amministratore.

    
posta Jerry 04.04.2015 - 06:27
fonte

3 risposte

3

Un altro modo:

if groups username | grep -q -w admin; 
then 
    echo "Is admin"; 
else 
    echo "Not admin"; 
fi
  • groups username mostrerà tutti i gruppi di nome utente.
  • grep -q -w admin cercherà (senza output -q ) per parola admin nell'elenco dei gruppi nome utente.

Come suggerito da David Koontz , groups è stato reso obsoleto dall'utilità id . Quindi, la frase if dovrebbe essere simile alla seguente per fare lo stesso:

if id -Gn username | grep -q -w admin;
    
risposta data 04.04.2015 - 08:31
fonte
5

Vedi la pagina man per id.

id -G user 

genererà un elenco delimitato da spazi di gruppi per un particolare utente. Dovresti rilevare 80 nell'elenco di output.

    
risposta data 04.04.2015 - 08:01
fonte
1

Ecco un semplice script per verificare se l'utente è nel gruppo admin e se non lo aggiunge:

#!/bin/bash

echo "This script will add a non-admin user to the admin group"
echo "Please enter username"
read username
if groups $username | grep -q -w admin; 
    then 
        echo "User '$username' already is in the admin group"; 
    else 
        dscl . -append /Groups/admin GroupMembership $username;
    echo "User '$username' has been added to the admin group!"; 
    echo "Please restart your Mac to apply the changes."; 
fi

Salva lo script da qualche parte e rendilo eseguibile aprendo Terminale e inserendo:

chmod 755 /path/to/script

Esegui lo script con sudo /path/to/script .

Poiché l'amministratore Mac predefinito di un sistema operativo server è un membro di diversi gruppi di amministrazione (ad esempio _lpadmin, access_bpf, _appserveradm ecc.) è possibile aggiungerli anche nello script.

Esempio:

aggiungi la seguente riga allo script per aggiungere l'utente al gruppo "App Server Admins"

 dscl . -append /Groups/_appserveradm GroupMembership $username;

Per migliorare lo script potresti anche aggiungere una condizione per controllare se l'utente inserito esiste affatto.

    
risposta data 04.04.2015 - 12:47
fonte

Leggi altre domande sui tag