Ubuntu 14.04: el nuevo usuario creado desde la línea de comandos tiene características faltantes

17

Estoy tratando de crear un nuevo usuario en Ubuntu 14.04 LTS desde la línea de comando bash. Yo uso los siguientes 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

Después de crear este nuevo usuario, encontré 3 problemas:

  1. No puedo iniciar sesión en Ubuntu con el usuario sam. Cada vez que inicio sesión, me devuelven a la pantalla de inicio de sesión.

  2. Cuando miro el /etc/passwdarchivo, puedo ver que no hay shells predeterminados definidos para el usuario sam:

    cat /etc/passwd | grep sam    
    sam:x:1003:1003:Samwise the Brave:/home/sam:
    
  3. La carpeta de inicio de Sam no se creó, es decir /home/sam, no existe.

¿Alguna pista sobre lo que podría causar todos estos problemas?

Debo señalar aquí que cuando creo un usuario usando el Centro de control de Unity, estos problemas no ocurren. Pero me gustaría poder usar la línea de comando ya que tengo docenas de usuarios para crear.

Phodor
fuente

Respuestas:

29

Primero note que es mejor usar adduser y no useradd.

Ahora de vuelta a su comando:

Debe ejecutar el comando de la siguiente manera:

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.

Por lo tanto, no utiliza -spara agregar su shell de inicio de sesión y -mpara crear su hogar.

Si desea agregar varios usuarios al mismo tiempo, es mejor usar el comando newusers. Simplificará tu tarea.

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

Aquí un tutorial sobre el newuserscomando:

Maythux
fuente
¿Por qué obtengo la "opción desconocida m"? Estoy en la instancia de AWS Ubuntu con 14.04.
Donato
2

Crear usuario

Crear directorio de inicio del usuario

Definir shell de inicio de sesión

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

Borrar usuario

Directorio de inicio del usuario de Deleter

userdel -r username
Sai
fuente
1

Si bien faltan indicadores y las otras respuestas no son necesariamente incorrectas, considere ejecutar adduser si lo desea más completo en el futuro. Es una versión más bonita de useradd. Es decir, creará un directorio de inicio de forma predeterminada a diferencia de useradd. También tenga en cuenta que cuando pide un montón de cosas, almacena esa línea en el archivo / etc / passwd y no tiene que completar nada.

Michael Bailey
fuente
1

Gracias a todos. Con sus respuestas, he podido solucionar el problema usando las siguientes líneas de comando.

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

La contraseña está configurada passwdpara que ya esté encriptada (de lo contrario, "hello-1234" no aparecerá encriptada en / etc / passwd).

Phodor
fuente
0

Le faltan banderas en el comando useradd. '-m' para crear el directorio de usuarios, '-s / bin / bash' para agregar el shell bash. El valor predeterminado es no crear un directorio de usuarios y asignar el shell predeterminado. Mi sistema hizo lo mismo cuando lo probé, por lo que parece que ubuntu 14.04 usa blank como el shell predeterminado. No puede iniciar sesión porque no tiene shell.

Crear un directorio de inicio predeterminado para el usuario existente en la terminal (Pregunta 335961, 3ra respuesta)

Desde 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.

¿Cómo se cambia el shell predeterminado para TODOS LOS USUARIOS a bash? Pregunta 335961

Codeguy007
fuente