No se puede iniciar sesión en la cuenta de usuario recién creada

25

Al intentar cambiar las cuentas a mi cuenta recién creada, aparece una pantalla en negro y luego me lleva de vuelta a la pantalla de inicio de sesión principal después de ingresar la contraseña correcta.

Al iniciar sesión en mi cuenta existente anteriormente obtengo:

"System Program Problem Detected"

Details:

Executable path /usr/bin/Xorg

Package: xserver-xorg-core 2:1.11.4-0ubuntu10.1

Details: Crash
... (tons more, but no way to copy paste or save)

Cuando trato de su

su -l penner

Yo obtengo:

No directory, logging in with HOME=/

Creé manualmente el directorio de inicio y este error desaparece, pero aún no tuve suerte con el inicio de sesión. ¿Parece que algo salió mal con la creación del usuario? ¿Cómo puedo corregir esto?

Penner
fuente
¿Cómo creaste la cuenta de usuario? ¿Lo hiciste desde la interfaz gráfica de usuario o desde la línea de comandos? Si lo hace desde la línea de comandos, debe tener en cuenta que adduser y useradd hacen las cosas de manera muy diferente. Además, parece que los archivos de / etc / skel no se copiaron. ¿Podría por favor ls -al en su directorio de inicio y en el directorio del nuevo usuario para que podamos ver qué está pasando?
SuperMatt

Respuestas:

31

Si creó la cuenta de usuario con useradd, debe configurar todo manualmente. Es por eso que, al crear cuentas de usuario desde la línea de comandos, se recomienda usar adduseren Ubuntu (y Debian, y otros sistemas basados ​​en Debian) en su lugar. Es posible que solo desee eliminar al usuario con userdelo delusery volver a crearlo adduser. De otra manera...

Arreglando la ubicación del directorio de inicio

Si desea mantener la cuenta de usuario y solucionar el problema, debe mirar:

  • el nombre del directorio de inicio para el que está configurada la cuenta de usuario
  • el nombre del directorio que realmente creó

Estos deben ser exactamente lo mismo. El mensaje de error que recibe su -l pennerle dice que no son lo mismo.

Para verificar el directorio de inicio para el que está configurada la cuenta de usuario, ejecute este comando (consulte man 5 passwdy man greppara obtener más información):

grep penner /etc/passwd

Deberías ver una línea como esta:

penner:x:1000:1000:Eliah Kagan,,,:/home/penner:/bin/bash

Es decir, el sexto :campo separado (después del quinto :) contiene el directorio de inicio. Si no es así /home/penner, debería serlo. Si el directorio que creó para el usuario no lo es /home/penner, también debería serlo. Si los dos directorios son iguales pero ninguno lo es /home/penner, entonces eso podría funcionar teóricamente, pero debería hacerlos a ambos /home/penner, porque mucho software asume que todos rootlos directorios principales de los no usuarios lo son ./home/username

Puede cambiar pennerel directorio de inicio de a /home/pennerejecutando este comando:

sudo usermod -d /home/penner penner

Asegurarse de que es un directorio y que el usuario tiene acceso

Si (o una vez) los nombres son ambos /home/penner, también debe asegurarse de que el usuario tenga acceso a su propio directorio de inicio. Correr:

ls -ld /home/penner

Debería ver algo parecido a esto (aunque la fecha y la hora serán diferentes):

drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/penner

Si, en lugar de drwxr-xr-x, tiene algo que comienza en -lugar de d, entonces creó un archivo en lugar de un directorio. Elimine el archivo y cree un directorio allí.

Si en lugar de lo primero pennertiene algo más, entonces el usuario no es dueño de su directorio de inicio, así que haga que lo posean:

sudo chown penner /home/penner

Si en lugar de haber drwxr-xr-xguiones en los siguientes tres caracteres después del d, entonces el usuario no tiene acceso completo allí. Arregle eso de la siguiente manera:

sudo chmod u+rwx /home/penner

( pennerEs capaz de ejecutar este comando si son propietarios de su directorio, por lo que, si lo prefiere, puede ejecutar esto como: sudo -u penner u+rwx /home/penner)

Garantizar que otros usuarios no tengan acceso de escritura general

Si en lugar de drwxr-xr-x, hay ws en lugar de -s en las últimas seis letras, entonces los usuarios además pennerpueden tener acceso de escritura al pennerdirectorio de inicio de. Esto es peligroso (a menos que realmente sepa lo que está haciendo y lo quiera de esta manera y haya configurado las cosas para que no sea un problema). Arreglarlo:

sudo chmod -R go-w /home/penner

Otros valores predeterminados

Es posible que desee realizar otros cambios. De manera predeterminada en Ubuntu (es decir, si crea una cuenta de usuario con addusero con una herramienta gráfica, lo cual no hizo):

  1. Los directorios principales tienen permisos de lectura y escritura para todos, no solo para el usuario que los posee. Los usuarios pueden cambiar esto, ya sea para todo el directorio de inicio o cualquier archivo y subdirectorio dentro de él. Pero si desea este valor predeterminado, y no tiene el segundo y el tercero ry xen drwxr-xr-x, ejecute:

    sudo chmod 755 /home/penner
    

    ( pennerEs capaz de ejecutar este comando si son propietarios de su directorio, por lo que, si lo prefiere, puede ejecutar esto como: sudo -u penner chmod 755 /home/penner)

  2. Cada usuario tiene su propio grupo, con el mismo nombre que el usuario, y este es el grupo principal del usuario. Su directorio personal es propiedad de este grupo. Ese es el sentido de la segunda penneren drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/penner. Está bien romper con este valor predeterminado, si sabe lo que está haciendo . Pero si no es su intención hacer las cosas de manera diferente, debe asegurarse de que penneresté configurado de esta manera, ya que algunas posibles identidades de grupo primario para un usuario, o propietarios de grupos en el directorio de inicio del usuario, podrían ocasionar problemas de seguridad.

    Ejecutar groups penner. (Consulte man groupspara obtener más información). Debería ver algo como esto:

    penner : penner adm dialout cdrom plugdev lpadmin sambashare
    

    No te preocupes si no es así. Llegaré a eso pronto. En cambio, mira la primera palabra después de :. Ese es el nombre del grupo principal del usuario. Asumiendo que quieres que sea penner, asegúrate de que así sea. Si no es así, cámbielo:

    sudo usermod -g penner penner
    

    Si recibe un error que dice que el grupo pennerno existe, deberá crearlo con este comando (y luego ejecutar el comando anterior nuevamente):

    sudo addgroup penner
    
    • Ver man addgrouppara más información. (Si lo prefiere, puede usar alternativamente el groupaddcomando para crear grupos).
  3. Cuando corriste groups penner, es posible que hayas obtenido una lista de grupos considerablemente más corta que la mía penner : penner adm dialout cdrom plugdev lpadmin sambashare. Para los usuarios de escritorio, la adm, dialout, cdrom, plugdev, lpadmin, y sambashareproporcionan capacidades que los usuarios de escritorio en general deben tener. Por lo tanto, a menos que tenga una razón para hacer lo contrario, pennerdebe estar en estos grupos. Sin embargo, estos no son grupos primarios, por lo que se configuran de manera diferente. Supongamos pennerque no está en ninguno de estos grupos y desea pennerestar en todos ellos, ejecute este comando:

    sudo usermod -a -G adm,dialout,plugdev,lpadmin,sambashare penner
    

    En caso de que esté interesado, esto es lo que significan todos esos grupos:

    (Fuente: Privilegios , en la wiki de documentación de Ubuntu).

Convertir al usuario en administrador

Si no quieres pennerser administrador, probablemente no necesites hacer nada más. Puede verificar si penneres un administrador con groups penner. Si ni admintampoco sudoestá en la lista, entonces pennerno es un administrador.

Si desea pennerser administrador, agregue pennera cualquiera de estos grupos que exista. (También puede agregar pennera ambos, si ambos existen). Puede lograr eso ejecutando estos dos comandos por separado; si alguno de ellos tiene éxito, ha creado pennerun administrador:

sudo usermod -a -G admin penner
sudo usermod -a -G sudo penner
  • La razón por la que hay dos grupos es que, antes de Ubuntu 12.04 LTS, los administradores estaban en el admingrupo. Comenzando con Ubuntu 12.04 LTS, los administradores están en el sudogrupo. Pero si su sistema 12.04 LTS se actualiza desde una versión anterior (y esto debería aplicarse a versiones posteriores de Ubuntu, como 12.10 cuando salga, que se actualizan desde Ubuntu 11.10 o anterior), entonces, por compatibilidad con versiones anteriores, los administradores son miembros de ambos sudoy admin. En general, si uno de estos grupos no confiere habilidades administrativas, simplemente no existe, por lo que ejecutar los dos comandos anteriores (por separado, no como sudo usermod -a -G admin,sudo penner) es generalmente una forma segura y efectiva de hacer pennerun administrador.
Eliah Kagan
fuente
¡Gracias! Algo como adduser es bueno, pero también me gusta saber cómo hacer las cosas manualmente. Una respuesta muy completa! Realmente lo aprecio.
Penner
sudo chmod u+a /home/pennerda un error en Ubuntu 16.04 (Xenial). ¿Es sudo chmod u+rw /home/pennerun reemplazo adecuado?
Nickolai Leschov
@NickolaiLeschov Lo siento, ¡y gracias por señalar el error! He arreglado el comando.
Eliah Kagan
esto es tonto, ¿por qué no eliminarlo useraddentonces? mantener código roto al azar
guiones
1
@dashesy Gracias: no sabía que el uso useraddcausa problemas en Ubuntu que no causa en otros sistemas. En mi sistema 16.04, /etc/default/useraddtiene (como su única línea no comentada) SHELL=/bin/sh, y useradd (8) parece decir que el SHELLvalor allí se usa si no se da la bandera -s/ --shell, pero en mi sistema 16.04 eso no sucede. Me equivoqué al decir tan apresuradamente que Ubuntu useraddno está roto. Ahora no estoy tan seguro. Quizás haya una buena razón para esta diferencia entre Fedora y Debian (y Ubuntu) ... pero he eliminado mi comentario para no confundir a las personas.
Eliah Kagan
0

Esto sucede principalmente cuando crea el usuario sin crear un directorio de inicio para el usuario. Esto se puede resolver utilizando este comando al crear un usuario

useradd -m the_username

El indicador -m es lo que crea el directorio de inicio para el usuario. Después de crear el usuario, compruebe si el directorio de inicio existe para ese usuario haciendo

ls /home

Si puede ver ese nombre de usuario en la lista, lo último que debe hacer es asignar una contraseña a ese usuario

passwd the_username

Ahora puede iniciar sesión con ese nombre de usuario y contraseña

macleash
fuente
-1

ctrl + alt + f1 e inicie sesión allí y ejecute

sudo chown -R $ USUARIO: $ USUARIO $ INICIO

luego presione ctrl + alt + f7 e intente iniciar sesión

Funcionará

Shameer Theen H
fuente