Ubuntu 14.04: Novo usuário criado a partir da linha de comando tem recursos ausentes

17

Estou tentando criar um novo usuário no Ubuntu 14.04 LTS a partir da linha de comando do bash. Eu uso os seguintes comandos:

sudo useradd -c "Samwise the Brave" sam    
sudo passwd sam    
Enter new UNIX password: hello-1234    
Retype new UNIX password: hello-1234    
passwd: password updated successfully

Depois de criar este novo usuário, encontrei 3 problemas:

  1. Não consigo fazer login no Ubuntu usando o usuário sam. Sempre que faço login, sou enviado de volta à tela de login.

  2. Quando olho para o /etc/passwdarquivo, vejo que não há shells padrão definidos para o usuário sam:

    cat /etc/passwd | grep sam    
    sam:x:1003:1003:Samwise the Brave:/home/sam:
    
  3. A pasta inicial de Sam não foi criada, ou seja /home/sam, não existe.

Alguma pista sobre o que poderia causar todos esses problemas?

Devo observar aqui que, quando crio um usuário usando o Unity Control Center, esses problemas não ocorrem. Mas eu gostaria de poder usar a linha de comando, pois tenho dezenas de usuários para criar.

phodor
fonte

Respostas:

29

Primeiro observe que é melhor usar o adduser e não o useradd.

Agora, de volta ao seu comando:

Você deve executar o comando da seguinte maneira:

sudo useradd -m -c "Samwise the Brave" sam  -s /bin/bash 

man useradd

  -s, --shell SHELL
           The name of the user's login shell. The default is to leave this
           field blank, which causes the system to select the default login
           shell specified by the SHELL variable in /etc/default/useradd, or
           an empty string by default.

 -m, --create-home
           Create the user's home directory if it does not exist. The files
           and directories contained in the skeleton directory (which can be
           defined with the -k option) will be copied to the home directory.

           By default, if this option is not specified and CREATE_HOME is not
           enabled, no home directories are created.

Então você sente falta de usar -spara adicionar seu shell de login e -mcriar sua casa.

Se você quiser adicionar vários usuários ao mesmo tempo, é melhor usar o comando newusers. Isso simplificará sua tarefa.

man newusers

DESCRIPTION

   The newusers command reads a file of user name and clear-text password
   pairs and uses this information to update a group of existing users or
   to create new users. Each line is in the same format as the standard
   password file (see passwd(5)) with the exceptions explained below:

   pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell

Aqui há algum tutorial sobre newuserscomando:

Maythux
fonte
Por que obtenho "opção desconhecida m"? Estou na instância do AWS Ubuntu executando 14.04.
Donato
2

Criar usuário

Criar diretório inicial do usuário

Definir shell de login

useradd -m -d /home/username username -s /bin/bash

Deletar usuário

Excluir diretório inicial do usuário

userdel -r username
Sai
fonte
1

Enquanto estiver faltando sinalizadores e as outras respostas não estiverem necessariamente erradas, considere executar o adduser, se você desejar que ele seja mais abrangente no futuro. É uma versão mais bonita do useradd. Ou seja, ele criará um diretório inicial por padrão, diferente do useradd. Observe também que, quando solicita uma tonelada de coisas, armazena essa linha no arquivo / etc / passwd e você não precisa preenchê-lo.

Michael Bailey
fonte
1

Obrigado a todos. Com suas respostas, eu pude corrigir o problema usando as seguintes linhas de comando.

sudo useradd -c "Samwise the Brave" -m -s /bin/bash sam
echo -e "hello-1234\nhello-1234" | passwd sam

A senha está definida com a senha passwdjá está criptografada (caso contrário, "hello-1234" pareceria não criptografado em / etc / passwd).

phodor
fonte
0

Estão faltando sinalizadores no comando useradd. '-m' para criar o diretório do usuário, '-s / bin / bash' para adicionar o shell bash. O padrão é não criar um diretório de usuário e atribuir o shell padrão. Meu sistema fez a mesma coisa quando o testei, então parece que o ubuntu 14.04 usa o espaço em branco como o shell padrão. Você não pode fazer login porque não possui shell.

Criar diretório inicial padrão para o usuário existente no terminal (pergunta 335961, terceira resposta)

Do Ubuntu Manpage para useradd

   -s, --shell SHELL
       The name of the user´s login shell. The default is to leave this
       field blank, which causes the system to select the default login
       shell.

Como você altera o shell padrão para TODOS OS USUÁRIOS bash? Pergunta 335961

Codeguy007
fonte