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.
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;
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.
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.
Leggi altre domande sui tag macos user-account