Aqui está o código de script que estou usando agora:
getent group $MYGROUP
if [ $? -ne 0 ] ; then
sudo su -c "groupadd $MYGROUP"
fi
sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP"
Essa abordagem funciona bem no openSuse. Mas há vários problemas com a conta de usuário que ele cria no Ubuntu, então estou procurando ajuda aqui.
- o prompt do terminal não está definido (
echo $PS1
não retorna nada) - as teclas de seta e tecla tab não funcionam corretamente no terminal
- a senha parece não funcionar (embora ainda não esteja claro exatamente qual é esse problema)
- os direitos / etc / sudoers definidos para esse novo usuário não são respeitados
Se, em vez disso, eu criar o usuário manualmente com adduser
(em vez de useradd), não tenho esses problemas no Ubuntu. Mas não posso usar adduser
no openSuse (afaik). Portanto, preciso de um script ou método não exclusivo do Debian para adicionar contas de usuário por meio do meu script bash que funcione no Ubuntu (e não pare de trabalhar em outras distros).
Finalmente, eu gostaria de entender as diferenças entre adduser
e useradd
. Por exemplo, quero saber qual diretório do esqueleto é usado, adduser
pois esse pode ser o motivo pelo qual useradd
não está funcionando conforme o esperado (porque aceitei o padrão).
obrigado
man useradd
): useradd é um utilitário de baixo nível para adicionar usuários. No Debian, os administradores geralmente devem usar o adduser (8).sudo su -c "cmd arg1 arg2"
é equivalente asudo cmd arg1 arg2
.sudo su -c "cmd arg1 arg2"
para que funcione em qualquer lugar em que eu precise.adduser
é um script perl com mais de 1000 linhas, portanto, para as diferenças, você pode dar uma olhada no script.adduser
mas não sei perl. Portanto, essa não é uma boa abordagem para mim.Respostas:
Minha solução foi fornecida aqui: /unix/82923/proper-way-to-add-a-user-account-via-bash-script por Ulrich Schwarz e Joseph R .. A principal coisa que tive que fazer foi adicionar
-s /bin/bash
ao meuuseradd
comando existente e remover o-p password
que espera uma senha criptografada.Então faça o seguinte:
fonte
echo mynewuser:password | sudo chpasswd
funciona tambémIsso vai funcionar.
fonte
meu script que cria automaticamente uma conta de serviço com login por chave ssh e sem senha
fonte
Suponho que você possa simplesmente usar uma condição em seu script, algo como
(não é possível verificar se o arquivo
/etc/issue
está presente no OpenSUSE, caso contrário, você pode colocar a condição na existência desse arquivo).fonte
adduser
comif command -v adduser >/dev/null; then
ou dos gostos? Essa é a única coisa que importa e não as distribuições subjacentes. Além disso, existem outras distribuições além do Debian / Ubuntu e OpenSUSE.