Sirviendo información sobre Linux desde 1998

Sobre el archivo /etc/passwd

Autor: Rafael Martinez
Primera publicación: 1999-12-01

 

El contenido del fichero /etc/passwd determina quien puede acceder al sistema de manera legitima y que se puede hacer una vez dentro del sistema. Este fichero es la primera linea de defensa del sistema contra accesos no deseados. Debe de mantenerse escrupulosamente y libre de errores y fallos de seguridad. En el tenemos registrados las cuentas de usuarios, asi como las claves de accesos y privilegios.

Una linea ejemplo en este fichero:

 usuario1:FXWUuZ.vwXttg:500:501:usuario pepito:/home/usuario1:/bin/bash

Los diferentes campos(7) estan separados por dos puntos (:) y el significado de los mismos es el siguiente:

 

usuario1:
Nombre de la cuenta (Login)
FXWUuZ.vwXttg:
Clave de acceso encriptada (password)
500:
UID de esta cuenta
501:
GID del grupo principal al que pertenece la cuenta
usuario pepito:
Nombre del usuario
/home/usuario1:
Directorio de trabajo de usuario1
/bin/bash:
Interprete de comando (shell) de usuario pepito

Una serie de reglas a tener en cuenta sobre el contenido de este fichero:

  • El UID de cuenta 0, pertenece al administrador (root), por debajo de UID 500 esta reservado para el sistema y por encima de UID 500 para los usuarios del sistema (Nota: la frontera del 500 puede variar dependiendo del sistema).

    El GID del grupo principal esta definido en el archivo /etc/group y este sera el grupo por defecto cuando un usuario crea un fichero.

    No hace falta decir que solo el administrador del sistema tiene que tener ID's 0 en estos dos campos. Lo contrario significaria estar dando permisos de administracion (root) a la cuenta en cuestion.

    Lo unico que identifica a una cuenta root del resto es una identificacion UID igual a 0. Podemos tener por ejemplo una cuenta llamada "pepito" pero con UID igual a 0, esta cuenta tendria permisos de administrador (root) y muchos programas que hacen referencia al nombre de la cuenta (ej: who, w, etc) no nos darian informacion sobre que la cuenta "pepito" tiene permisos de root.

    Esto es lo primero que un hacker suele hacer para instalar una puerta trasera en un sistema. Para averiguar cuentas con nombre diferente de root, pero permisos de root existen programas, pero a falta de uno podemos utilizar el siguiente comando:

    awk -F: '{if ($3==0) print $1}' /etc/passwd

    Lo mismo (con un pequeno cambio) se puede utilizar para ver cuentas con GID igual a 0:

    awk -F: '{if ($4==0) print $1}' /etc/passwd

     

  • Es muy importante verificar asiduamente que toda cuenta (login) tiene asignada una clave valida. Existen programas para comprobar que no existen problemas de seguridad en /etc/passwd, pero a falta de uno se puede utilizar el siguiente comando para averiguar si existen cuentas sin claves:

    awk -F: '{if ($2=="") print $1}' /etc/passwd

    Nunca dejar una cuenta con el campo de clave vacio, esto significa que no es necesario una clave para entrar en el sistema. Las cuentas de pseudo-usuarios (ej: daemon, lp, etc) y cuentas de usuarios cerradas temporalmente, tienen que tener un asterisco (*) en el campo de la clave.

    Otro punto a tener en cuenta es la eleccion de una buena clave. No se deberian utilizar claves que sean palabras de diccionario, nombres, datos personales, matriculas, etc, existen programas que son capaces de descifrar este tipo de claves. Utilizar al menos 7 caracteres (8 recomendable) e interpolar numeros y letras, mayusculas y minusculas. Existen programas que sustituyen el clasico "passwd" para crear/cambiar claves, que comprueban que la clave es suficientemente buena.

    La explicacion de porque no se deberian utilizar palabras de diccionario, nombres, etc como claves de acceso, es la siguiente:

    Cuando una clave es generada, esta, es codificada con la funcion "crypt", esta funcion se puede definir como una funcion "hash" de una sola direccion, esto es, un algoritmo que es facil de computar en una direccion pero muy dificil de calcular en direccion opuesta. La funcion crypt utiliza un valor aleatorio llamado "salt" el cual esta formado por una cadena de dos caracteres [a-z A-Z 0-9 ./]. Este valor aleatorio permite codificar una misma clave de 4096 maneras distintas (Los dos primeros caracteres de una clave codificada, son los valores de "salt", el resto hasta un total de 13 caracteres ASCII es la clave codificada segun el valor de "salt").

    Una vez que sabemos un poco de teoria de como las claves son codificadas, nos podemos imaginar como se podria descifrar un clave de cuenta que es un palabra de diccionario, nombre, matricula, etc. Existen programas que codifican sistematicamente diccionarios de palabras de las 4096 maneras posibles (segun el valor "salt") y comparan cada codificacion con los valores encriptados en /etc/passwd, si algun valor coincide, significaria que una clave ha sido descifrada. Este es uno de los metodos utilizados por hackers para descifrar claves y la razon de porque no se deben utilizar claves que sean palabras de diccionarios, nombres, etc.

     

  • Nunca usar scripts/programas como interprete de comandos en cuentas sin clave. Un ejemplo que lei una vez en un grupo de noticias, hablaba sobre como apagar el ordenador sin necesidad de ser root. Una de las soluciones que daban era el tener la siguiente linea en el fichero /etc/passwd:

    shutdown::0:0:shutdown:/sbin:/sbin/shutdown

    Podeis ver que el campo de clave esta vacio, con esta linea en tu /etc/passwd cualquier usuario, local o no local, puede apagar tu ordenador haciendo un simple telnet a la maquina en cuestion y escribiendo shutdown como login. No hace falta explicar las consecuencias que esto puede tener para tu sistema. ;-)

     

  • Los ficheros /etc/passwd y /etc/group deben tener permisos de lectura para todos para que muchos programas puedan funcionar y permisos de escritura solo para root.
    -rw-r--r--  1 root root    11594 Nov 9 12:53   /etc/passwd
    -rw-r--r-- 1 root root 1024 Nov 9 12:53 /etc/group

    Con estos permisos, cualquiera que tenga acceso al sistema puede leer el contenido de estos ficheros e intentar descifrar la clave encriptada de las cuentas. En pequenos sistemas, donde todos los usuarios se conocen y existe confianza entre ellos, esto no es un gran problema, pero en sistemas con un gran numero de usuarios, no es recomendable tener el sistema configurado de esta manera.

    Para evitar esto se puede instalar "Shadow passwords". Con shadow passwords el fichero /etc/passwd puede ser leido por cualquier usuario con acceso, pero la informacion con las claves del sistema queda guardada en un fichero que solo puede ser leido por el administrador (root). Mas informacion sobre Shadow Password en el Howto correspondiente Shadow password HOWTO (ingles)

    Esto es todo sobre este fichero tan especial en nuestro sistema. Comentarios y sugerencias al autor.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

gracias

bien tu exposición, quedó muy claro!
muchas gracias.

excelente

muy bueno!!

muy buen aporte

ademas de que fue muy claro nos brindaste una buena perspectiva y un buen comando con lo que se refiere a seguridad

una pregunta

Como el comando passwd modifica el archivo /etc/passwd, sin ser root?

Hola,

Sera que me pueden ayudar obtener el root en una maquina linux, por cierto tengo acceso fisico, pero como usuario normal. Lo que necesito es accesar como #
para poder hacer uno que otro cambio...

Usuarios por defecto?

Hay ciertos usuarios como:

games
nobody
....
etc.

Estos Usuarios no representan un riesgo para nuestro equipo?
si lo quitariamos de la lista, tendriamos errores futuros?, ya que talvez estan relacionados con algun programa en nuestro equipo?

tb hay usuarios como:

mysql
ftp

segun hayas instalado algun programa.

Re: Usuarios por defecto?

Estos Usuarios no representan un riesgo para nuestro equipo?
si lo quitariamos de la lista, tendriamos errores futuros?, ya que talvez estan relacionados con algun programa en nuestro equipo?

No vayas a borrar estos usuarios si no quieres estropear una buena parte de tu sistema.

Estos usuarios no tienen asignada ninguna clave de acceso y por lo tanto no se puede acceder al sistema como ellos escribiendo una clave.

Estan ahi para aumentar la seguridad de tu sistema, para organizar privilegios y para que muchos de los servicios que se ejecutan en tu maquina no lo hagan como root. De esta manera un fallo en el servicio en cuestion no pone en peligro el resto del sistema.

Muy buena Explicacion

Cordial saludo!

Muy buena Explicacion, pero tengo una inquietud..........

he creado un usuario y quisiera que este usuario (que es euna cuenta ftp), estuviera restringido mas que a su propia carpeta; por ej: "/home/pepito" y no saliera de ahi......

Por su colaboracion..........

muchas gracias!

Loguearme sin necesidad de clave de usuario

Uso Ubuntu 9.04 al inicio solo tenia mi usuario, y no usaba contraseña, entonces accedia al sistema directamente, sin la pantalla para poner el usuario y contraseña, luego coloque a mi usuario una contraseña, luego de eso ahora qisiera regresar al estado anterior, es decir, quitarle la clave a mi usuario y loguearme directamente con mi usuario por defecto. Como puedo volver a hacerlo?

Trate de ejecutar: sudo passwd -d miusuario

y me pidio mi contraseña para realizar la operacion, lo hice, y cambio la clave. Pero ahora que quiero ingresar me sigue saliendo la venta de usuario y contraseña y cuando coloco mi contraseña anterior no accedo, y tampoco poniendola en blanco.

No puedo ingresarr!!!

Imagen de joelpaser

olvide el usuario y password

se puede obtener la informacion olvidada de usuario y pasword?

RE :Loguearme sin necesidad de clave de usuario

passwd –f –u usuario

saludos

pregunta..
¿en que archivo se encuentra la informacion del shell que usted usa por defecto? shell UNIX

No es interpolar, es

No es interpolar, es intercalar.

No es interpolar, es

No es interpolar, es intercalar.

interpolar:

1. tr. Poner una cosa entre otras.
2. Intercalar palabras o frases en el texto de escritos ajenos: interpolar citas.

O lo que es lo mismo, intercalar es sinonimo de interpolar, y viceversa.

Gracias

Buenas.

Simplemente, muy útil artículo.

Muchas gracias

GRACIAS

HOLA,MUCHAS GRACIAS ME QUEDO MUY CLARO, Y ADEMÁS APRENDI ALGO MUEVO HOY

Bien

Claro y perfecto.
Gracias

error??

esta Mal, por que oara No sale la contraseña en su lugar sale una X