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

14

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 três problemas:

  1. Eu não consigo entrar no Ubuntu usando o usuário sam. Sempre que eu faço login, sou enviado de volta para a tela de login.

  2. Quando olho para o arquivo /etc/passwd , posso ver 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 pessoal do Sam não foi criada, por exemplo, /home/sam não existe.

Alguma pista sobre o que poderia causar todos esses problemas?

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

    
por phodor 02.07.2015 / 06:05

5 respostas

26

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

Agora, volte 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.

Você não usa o -s para adicionar seu shell de login e o -m para criar 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, alguns tutorial sobre o comando newusers :

por Maythux 02.07.2015 / 07:28
1

Enquanto estiver faltando sinalizadores e as outras respostas não estiverem necessariamente erradas, considere executar adduser se você quiser mais abrangente no futuro. É uma versão mais bonita do useradd. Ou seja, ele fará um diretório inicial por padrão ao contrário de useradd. Observe também quando ele pede uma tonelada de coisas, ele armazena isso no arquivo / etc / passwd e você não precisa preencher nada disso.

    
por Michael Bailey 02.07.2015 / 07:21
1

Obrigado a todos. Com suas respostas, consegui 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 é definida com passwd , de modo que já está criptografada (caso contrário, "hello-1234" não apareceria criptografado em / etc / passwd).

    
por phodor 04.07.2015 / 03:01
1

Criar usuário

Crie o diretório inicial do usuário

Definir o shell de login

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

Excluir usuário

Diretório inicial do usuário Deleter

userdel -r username
    
por Sai 28.09.2016 / 19:25
0

Você está 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ários e designar o shell padrão. Meu sistema fez a mesma coisa quando eu testei, então parece que o ubuntu 14.04 usa em branco como o shell padrão. Você não pode entrar porque não tem 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ê muda o shell padrão de TODOS OS USUÁRIOS para o bash ? Pergunta 335961

    
por Codeguy007 02.07.2015 / 07:08