Gostaria de poder criar novos usuários no Mac OS X 10.5 remotamente depois de fazer o ssh'ing na máquina. Como eu faço isso?
Gostaria de poder criar novos usuários no Mac OS X 10.5 remotamente depois de fazer o ssh'ing na máquina. Como eu faço isso?
Respostas:
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ê precisará criar / Users / luser para o diretório inicial do usuário e alterar a propriedade para que o usuário possa acessá-lo e verifique se o UniqueID é de fato exclusivo.
Esta linha adicionará o usuário ao grupo do administrador:
dscl . -append /Groups/admin GroupMembership luser
useradd
sintaxe.
PrimaryGroupID 80
é possível admin
, portanto, luser
pode ser usado sudo
mesmo que você não o adicione ao grupo de administradores.
(Essa resposta deve ser considerada um adendo para preencher alguns espaços em branco no procedimento de palmer)
Para escolher um UniqueID não utilizado para seu novo usuário, você pode usar:
maxid=$(dscl . -list /Users UniqueID | awk 'BEGIN { max = 500; } { if ($2 > max) max = $2; } END { print max + 1; }')
newid=$((maxid+1))
... use a sequência de comandos dscl que palmer deu para criar a conta e, em seguida, crie o diretório inicial do novo usuário com:
cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser
if [[ "$(sw_vers -productVersion)" != 10.[0-5].* ]]; then
# Set ACL on Drop Box in 10.6 and later
chmod +a "user:luser allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" /Users/luser/Public/Drop\ Box
fi
(existe um comando createhomedir, mas não funcionou quando o testei.)
sudo createhomedir -s
(IIRC) nas réplicas / compartilhamentos de arquivos do Open Directory, e eles criam os diretórios pessoais felizes.
dscl -list
é limitado a 256 resultados; portanto, se você tiver mais de 256 usuários, essa técnica falhará ao garantir um UID exclusivo.
Se você tem um monte de usuários para criar, é possível criar um arquivo de texto estruturado e passá-lo dsimport
para fazer o trabalho.
O Guia de administração da linha de comando da Apple possui um capítulo inteiro sobre usuários e grupos.
Outra maneira de escolher um ID de usuário exclusivo antes de criar uma conta é apenas examinar a lista e verificar se o que você deseja usar não está lá:
sudo dscl . list /Users uid
sudo dscl . list groups gid
Prático, se você precisar usar um determinado ID
dscl -list
é limitado a 256 resultados; portanto, se você tiver mais de 256 usuários, essa técnica falhará ao garantir um UID exclusivo.
grep
com o id
que você tinha em mente para usar para o novo usuário
Eu aproveitei as diferentes respostas aqui para criar o que acho um bom script para criar contas de usuário. É certo que isso não foi projetado para executar um comando por vez no ssh; Ele é projetado para ser executado por script ao compilar uma imagem do OS X com base em pacotes (criada 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 a 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 obtenho resultados diferentes quando executo id
como administrador no OS X 10.6 do que quando executo como administrador no OS X 10.5.
dscl -list
é limitado a 256 resultados; portanto, se você tiver mais de 256 usuários, essa técnica falhará ao garantir um UID exclusivo.
Eu comecei um pouco invólucro sobre dscl
que leva useradd
parâmetros 's - não é completo (nem acho que ele pode ser, como algumas coisas não são possíveis no OS X), mas eu usei-o para fazer alguma criação do usuário.
A estrutura existe para todos os parâmetros; portanto, se você quiser tirar proveito dos incríveis recursos sociais do GitHub, é fácil.
single_user
modo (uma redefinição de segurança), será necessário reiniciar o sistema mantendo-o pressionadoCommand-S
, obtendo acesso de gravação ao disco por detalhes na tela e, em seguida, orm /var/db/.AppleSetupDone
que permitirá que você crie uma nova conta de administrador. Espero que isso ajude alguém