Aqui está uma versão do script de Dave, que também verifica se o usuário / grupo existe antes de criá-lo:
#! / bin / sh
# cria usuário de conta de serviço semelhante ao comando Linux adduser
# para visualizar usuários e IDs existentes, tente:
# dscl. -readall / Usuários UniqueID | sort -nk 2
die () {
eco> & 2 "$ @"
saída 1
}
eco "Uso: sudo $ 0 nome de usuário uid nome real"
eco "OBSERVAÇÕES: o nome de usuário não deve começar com o sublinhado (será anexado pelo script)"
echo "verifique se o usuário não existe e obtenha o número de identificação gratuito no intervalo de 1000"
echo "por exemplo, com dscl. -readall / Users UniqueID | sort -nk 2"
eco ""
# Verifique se somos superusuário (ou seja, $ (id -u) é zero)
[`id -u` -eq 0] || die "Este script precisa ser executado como root"
["$ #" -eq 3] || die "Erro: são necessários 3 argumentos: nome de usuário, uid e nome real"
nome de usuário _ = $ 1
uid _ = $ 2
realname _ = $ 3
nfs_homedir = "/ var / tmp"
user_shell = "/ usr / bin / false"
echo "Verificando se o usuário / grupo existe: \ c"
check_uuid = `dscl. -search / Users UniqueID $ uid_`
check_upgid = `dscl. -search / Users PrimaryGroupID $ uid_`
check_urn = `dscl. -search / Users RecordName _ $ nomedeusuário_`
check_grn = `dscl. -search / Groups RecordName _ $ nomedeusuário_`
[$ {# check_uuid} = 0] || die "falhou! \ nERROR: ID exclusivo do usuário não exclusivo: \ n \ n`dscl. -read / Users / _ $ nome_do_usuário RecordName PrimaryGroupID RealName` \ n \ nPara exibir os usuários / IDs existentes, execute: dscl. -readall / Users UniqueID | sort -nk 2 "
[$ {# check_upgid} = 0] || morre "falhou! \ nERROR: Usuário não exclusivo PrimaryGroupID \ n \ n`dscl. -read / Users / _ $ username_ RecordName PrimaryGroupID RealName` \ n \ nPara exibir os usuários / IDs existentes, execute: dscl. -readall / Users UniqueID | classificar -nk 2 "
[$ {# check_urn} = 0] || morre "falhou! \ nERRO: Usuário não exclusivo RecordName \ n \ n`dscl. -read / Users / _ $ nome_do_usuário RecordName PrimaryGroupID RealName` \ n \ nPara exibir os usuários / IDs existentes, execute: dscl. -readall / Users UniqueID | classificar -nk 2 "
[$ {# check_grn} = 0] || die "falhou! \ nERROR: Nome de registro de grupo não exclusivo \ n \ n`dscl. -read / Groups / _ $ nome_do_usuário RecordName PrimaryGroupID RealName` \ n \ nPara exibir os usuários / IDs existentes, execute: dscl. -readall / Users UniqueID | classificar -nk 2 "
eco "estamos prontos para ir!"
# echo "Continuar (s / n)?"
# leia input_
# ["$ input_" = "y"] || morra "como você deseja ..."
eco "Criando usuário: \ c"
dscl. -criar / Grupos / _ $ username_
dscl. -criar / Grupos / _ $ nomedeusuário_ PrimaryGroupID $ uid_
dscl. -criar / Grupos / _ $ nomedeusuário_ RecordName _ $ nomedeusuário_ $ nomedeusuário_
dscl. -criar / Grupos / _ $ username_ RealName "$ realname_"
dscl. -criar / Grupos / _ $ username_ Senha \ *
dscl. -criar / Usuários / _ $ username_
dscl. -criar / Usuários / _ $ nomedeusuário NFSHomeDirectory $ nfs_homedir
dscl. -criar / Usuários / _ $ username_ Senha \ *
dscl. -criar / Usuários / _ $ username_ PrimaryGroupID $ uid_
dscl. -criar / Usuários / _ $ username_ RealName "$ realname_"
dscl. -criar / Usuários / _ $ nomedeusuário_ RecordName _ $ nomedeusuário_ $ nomedeusuário_
dscl. -criar / Usuários / _ $ username_ UniqueID $ uid_
dscl. -criar / Usuários / _ $ username_ UserShell $ user_shell
dscl. -delete / Users / _ $ username_ PasswordPolicyOptions
dscl. -delete / Users / _ $ username_ AuthenticationAuthority
eco "pronto!"
e um script para excluir o usuário:
#! / bin / sh
# delete user user similar ao comando Linux userdel, mas deixando os arquivos intactos
# para visualizar usuários e IDs existentes, tente:
# dscl. -readall / Usuários UniqueID | sort -nk 2
die () {
eco> & 2 "$ @"
saída 1
}
# Verifique se somos superusuário (ou seja, $ (id -u) é zero)
[`id -u` -eq 0] || die "Este script precisa ser executado como root"
["$ #" -eq 1] || die "Erro: argumentos de nome de usuário são necessários!"
nome de usuário _ = $ 1
dscl. -delete / Usuários / $ nome_de_usuário
dscl. -delete / Groups / $ nome_de_usuário
eco "pronto!"