sábado, 23 de noviembre de 2013

Creación masiva de usuarios

Cuando se instala un servidor de ficheros, de FTP o similar, uno de los pasos posteriores consiste en crear un número razonablemente alto de usuarios en nuestro sistema Linux. Veamos una forma asequible de conseguir esto.

Crearemos un fichero de texto, usuarios.txt en nuestro caso, en el que cada linea corresponderá a un usuario:

login01:password01:1001:1001:Nombre del usuario 01:/var/ftp/:/bin/false
login02:password02:1002:1002:Nombre del usuario 02:/var/ftp/:/bin/false
login03:password03:1003:1003:Nombre del usuario 03:/var/ftp/:/bin/false
[...]

Los campos, separados por ":", significan lo siguiente:

  • login-01: el login del usuario que se quiere crear
  • password01: el password de dicho usuario, en texto claro
  • 1001: ID que va a tener el usuario. Tendremos que llevar cuidado para no elegir uno en uso (ver fichero /etc/passwd para comprobar los que están en uso)
  • 1001: ID del grupo al que va a pertenecer el usuario. Tendremos que llevar cuidado para no elegir uno en uso (ver fichero /etc/group para comprobar los que están en uso)
  • Nombre del usuario 01: Nombre completo del usuario
  • /var/ftp/: Directorio home del usuario. Este ejemplo podría ser adecuado para crear usuarios destinados a usar un servicio FTP.
  • /bin/false: Shell que usará el usuario al logarse en el sistema. En caso de usuarios que solo deban conectarse por FTP o por SAMBA podría ser adecuado, pues no permite acceder a un shell. En caso de necesitar shell, se podría poner /bin/bash o cualquier otro.

Y por último, hacemos la magia:

# newusers usuarios.txt

Todos los usuarios serán creados con los datos especificados. Y además, podemos guardarnos este fichero a modo de backup, por si el servidor se fastidia y hay que montar uno similar.

Comentar que esta forma de crear usuarios masivamente viene muy bien para ser usada con algún script que genere usuarios y contraseñas (aleatorias u obtenidas de una base de datos).

Como pega, si los usuarios se están creando para que accedan por SAMBA al servidor, habrá que hacer por cada uno de ellos un smbpasswd -a login01 para crearles la contraseña y permitirles el acceso vía SAMBA.

martes, 18 de octubre de 2011

Espacio de uso de directorios

Más de una vez un equipo o servidor se ha quedado con poco espacio libre en una partición, o incluso se ha agotado. Ahí comienza una labor de búsqueda de aquellos ficheros que han crecido inesperadamente o bien de los directorios con mayor peso para revisarlos y ver si se puede borrar algo.
Si bien seguro existen aplicaciones que revisan el sistema de ficheros en busca de este tipo de información, no me gusta instalar software extra en servidores si con las herramientas ya existentes se puede obtener el mismo resultado.
El siguiente comando nos dirá la ocupación de cada uno de los subdirectorios que tenemos en nuestra ruta actual:

for i in $(find . -maxdepth 1 -type d | tr -s "\n" " "); do  echo `du $i -hs`; done

873M . 60K ./include 214M ./lib 4,8M ./sbin 35M ./bin 393M ./share 4,0K ./games 136M ./local 92M ./src

El resultado del comando ejecutado en /usr nos dice que este directorio ocupa, contando con sus subdirectorios y ficheros), 873 MB. Que el subdirectorio local (/usr/local) ocupa 136 MB, etc. Si vemos un subdirectorio con un uso de disco exagerado podremos acceder a él y volver a ejecutar el comando, para ir descubriendo dónde están esos ficheros de gran tamaño.

viernes, 21 de enero de 2011

Crear listado de ficheros con su código md5


A continuación os muestro cómo calcular el código md5 de cada uno de los ficheros contenidos en un directorio (en este caso el directorio actual, .) y generar un fichero, llamado md5, con los nombres de los ficheros junto con su ćodigo md5:

Listado md5 con todos los ficheros excepto los ocultos

$ find . * ! -path "./*" ! -path "md5" ! -type d -exec md5sum '{}'>>md5 \;

Listado md5 con todos los ficheros incluídos los ocultos

$ find . * ! -path "./[^.]*"  ! -path "md5" ! -type d -exec md5sum '{}'>>md5 \;

Estos listados son muy útiles para distintos casos:

  • Junto con algunos ficheros colgados en Internet se nos ofrece su código md5. Al bajarlo podemos generar el código md5 de nuestra copia para saber si es idéntica o sufrió algún error en la descarga.
  • Podemos generar ficheros md5 de ciertos ficheros importantes de nuestras máquinas (fichero /etc/passwd, /etc/rc.local, etc) y comprobar de vez en cuando si dichos ficheros han sufrido algún cambio. Es una buena manera de detectar modificaciones no autorizadas en nuestros sistemas.
  • Se puede implementar un proceso de actualización para nuestras aplicaciones, tal que ante una nueva versión los clientes solo descarguen del servidor aquellos ficheros que cambiaron. Si un cliente genera el código md5 de sus ficheros y los comprueba contra los ficheros del servidor, sabrá qué ficheros descargarse. Esto disminuye el tiempo de actualización y el uso del ancho de banda de nuestras lineas de comunicaciones.