Como eu crio contas de usuários do Terminal no Mac OS X 10.5?

85

Eu gostaria de poder criar novos usuários no Mac OS X 10.5 remotamente após o ssh'ing na máquina. Como faço isso?

    
por JR Lawhorne 05.06.2009 / 20:07

6 respostas

80

Use o comando dscl. Este exemplo criaria o usuário "luser", assim:

dscl . -create /Users/luser
dscl . -create /Users/luser UserShell /bin/bash
dscl . -create /Users/luser RealName "Lucius Q. User"
dscl . -create /Users/luser UniqueID "1010"
dscl . -create /Users/luser PrimaryGroupID 80
dscl . -create /Users/luser NFSHomeDirectory /Users/luser

Você pode usar o passwd para alterar a senha do usuário ou usar:

dscl . -passwd /Users/luser password

Você terá que criar / Users / luser para o diretório pessoal do usuário e alterar a propriedade para que o usuário possa acessá-lo e ter certeza de que o UniqueID é de fato único.

Esta linha adicionará o usuário ao grupo do administrador:

dscl . -append /Groups/admin GroupMembership luser
    
por 05.06.2009 / 20:15
20

(Esta resposta deve ser considerada um adendo para preencher alguns espaços em branco no procedimento de palmer)

Para escolher um UniqueID não usado para seu novo usuário, você pode usar:

maxid=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
newid=$((maxid+1))

... então use a sequência de comandos dscl que o palmer deu para criar a conta e, em seguida, crie o diretório home do novo usuário com:

cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser

(existe um comando createhomedir, mas não funcionou quando eu testei).

    
por 05.06.2009 / 22:21
8

Se você tem um monte de usuários para criar, é possível criar um arquivo de texto estruturado e passá-lo para dsimport para fazer o trabalho.

O Guia de Administração de Linha de Comando da Apple tem um capítulo inteiro sobre usuários e grupos.

    
por 05.06.2009 / 21:19
7

Outra maneira de escolher um ID de usuário exclusivo antes de criar uma conta é apenas olhar a lista e verificar se a que você deseja usar não está lá:

 sudo dscl . list /Users uid
 sudo dscl . list groups gid

Útil se você precisar usar um determinado ID

    
por 30.11.2009 / 17:10
7

Eu aproveitei as diferentes respostas aqui para criar o que eu acho que é um bom script para criar contas de usuário. Evidentemente, isso não foi projetado para executar um comando por vez a partir do ssh; é mais projetado para ser uma execução de script ao compilar uma imagem baseada em pacote do OS X (conforme criado por Casper Imaging ou InstaDMG ).

#!/bin/bash
# This script creates a user account under Mac OS X
# (tested with 10.5 and 10.6; likely works with 10.4 but not earlier)
# Written by Clinton Blackmore, based on work at
# http://serverfault.com/questions/20702

# === Typically, this is all you need to edit ===

USERNAME=joeadmin
FULLNAME="Joe Admin"
PASSWORD="hard_to_hack"

# A list of (secondary) groups the user should belong to
# This makes the difference between admin and non-admin users.
# Leave only one uncommented
#SECONDARY_GROUPS=""  # for a non-admin user
SECONDARY_GROUPS="admin _lpadmin _appserveradm _appserverusr" # for an admin user

# ====

if [[ $UID -ne 0 ]]; then echo "Please run $0 as root." && exit 1; fi

# Find out the next available user ID
MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
USERID=$((MAXID+1))

# Create the user account
dscl . -create /Users/$USERNAME
dscl . -create /Users/$USERNAME UserShell /bin/bash
dscl . -create /Users/$USERNAME RealName "$FULLNAME"
dscl . -create /Users/$USERNAME UniqueID "$USERID"
dscl . -create /Users/$USERNAME PrimaryGroupID 20
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME

dscl . -passwd /Users/$USERNAME $PASSWORD


# Add use to any specified groups
for GROUP in $SECONDARY_GROUPS ; do
    dseditgroup -o edit -t user -a $USERNAME $GROUP
done

# Create the home directory
createhomedir -c > /dev/null

echo "Created user #$USERID: $USERNAME ($FULLNAME)"

O script permite especificar quais grupos um usuário deve pertencer. Parece-me que isso pode ser diferente dependendo da versão do OS X que você está executando. Eu recebo resultados diferentes quando executo id como administrador no OS X 10.6 do que quando estou executando como administrador no OS X 10.5.

    
por 15.01.2010 / 00:02
4

Eu iniciei um pequeno wrapper sobre dscl , que recebe os parâmetros de useradd - não está completo (nem Eu acho que pode ser, como algumas coisas não são possíveis no OS X), mas eu usei para fazer alguma criação de usuário.

O framework está lá para todos os parâmetros, então se você quiser aproveitar os incríveis recursos sociais do GitHub, é fácil de fazer.

    
por 17.10.2011 / 08:15