Archivo

Archive for the ‘Operador’ Category

LINUX CUOTA DE DISCO

junio 23, 2010 1 comentario

Si queremos que los usuarios de nuestro sistema no consuman más recursos de los disponibles resulta indispensable habilitar un límite de ocupación de espacio en el disco duro.
Esto es lo que se conoce como cuotas de disco y en unas pocas líneas os voy a explicar cómo es posible configurar un límite de utilización del disco en Ubuntu GNU/Linux

Los pasos son los siguientes:

* Instalar la característica de control de cuotas

apt-get install quota quotatool

* Indicar las particiones en las que aplicaremos las quotas editando/etc/fstab y añadiendo las opciones usrquota,grpquota

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

/dev/sda5    /    ext4   defaults,usrquota,grpquota    0    2

* reiniciamos las particiones

 
mount -o remount /

* Para a continuación inicializar el mecanismo de cuotas
quotacheck -avugm

u : Activa las cuotas de usuarios

g : Activa las cuotas de grupos

a : Verifica la creación de cuotas en todos los sistemas de ficheros con soporte para estas

v : Muestra una salida detallada de la ejecución del mandato. Es usual ver que el sistema nos envía un mensaje de advertencia cuando ejecutamos este mandato por primera vez, ya que se están generando los índices.

La primera vez obtendremos un aviso del tipo…

quotacheck: WARNING –

no hay que preocuparse.

  • Editar la quota de los usuarios
  • Antes de nada deberíais saber que existen dos tipos de cuota:

– Cuotas rígidas: no será posible superar el límite y será negado el acceso.
– Cuotas flexibles: se pueden superar y el usuario sólo recibirá un aviso de
límite excedido. Tras un período de gracia – por defecto 7 días, configurable
por partición – la cuota se volverá rígida.

Manos a la obra, en teoría sólo root puede hacer esto y el comando es el

siguiente:

edquota -u usuario

Al ejecutar edquota, se ejecutará el editor de textos vi con opciones específicas para el manejo de quotas. En la primer línea tenemos el identificador del usuario o grupo que estemos administrando. En las líneas subsecuentes, encontramos 7 columnas:

  • Filesystem: Sistema de ficheros en el que se implementa la cuota
  • blocks: La actual cantidad de espacio en disco utilizado por el usuario o grupo en ese sistema de ficheros. Este dato no se podrá modificar manualmente, aún cuando lo intentemos los cambios no se guardarán
    • soft: La cuota suave para la cantidad de espacio en disco utilizado. Se utiliza 0 para desactivar esta cuota
    • hard: La cuota dura para la cantidad de espacio en disco a utilizar. El valor 0 desactiva esta cuota
    • inodes: La actual cantidad de ficheros y carpetas utilizados por el usuario. Este dato no se podrá modificar manualmente, aún cuando lo intentemos los cambios no se guardarán
      • soft: La cuota suave para la cantidad de ficheros y carpetas utilizados. Se utiliza 0 para desactivar esta cuota
      • hard: La cuota dura para la cantidad de ficheros y carpetas utilizados. El valor 0 desactiva esta cuota
# edquota -t

Este mandato nos permite establecer un periodo de gracia que acomode mejor a nuestras necesidades. Lo podemos establecer en días, horas, minutos o segundos, y se especificará para cada sistema de ficheros.

* Podemos copiar la configuración de un usuario con las cuotas establecidas a

otros con el comando:

edquota -p usuariomodelo usuario

El superusuario puede ver las quotas de todos los usuarios con el comando:

repquota filesystem

  • Desabilitar quotas para usuarios o grupos

Para deshabilitar las quotas de un usuario o grupo solo hay que editarlas quotas y poner los limites a 0. Así un usuario puede usar tantos bloques e inodos como quiera.

Categorías:Operador

Cpio Backups

Cpio es un comando para hacer backups más sofisticado que Tar, puede incluso seguir enlaces y hacer backups de archivos especiales correctamente. Como todo, entre más sofisticado, más jodido de manejar…Hay que emplearlo como destino de una tubería que supla los archivos sobre los que debe hacer copia de seguridad cpio.

Los parámetros más usuales de cpio son:

* -o, crea un archivo de backup.
* -i, extrae de un archivo de backup.
* -v, modo verborrea donde vemos que está haciendo cpio.
* -t, lista el contenido de un archivo cpio.
* -c, crea una cabecera en ASCII del archivo cpio para que sea portable a otras máquinas o sistemas operativos.

La forma genérica de emplear cpio es:

cpio [parametros] archivo_cpio

Observa la doble tubería inyectando los archivos con los que va a trabajar e indicando dónde debe dejar el archivo con la copia de seguridad. Se puede utilizar una forma más simple:

ls * | cpio parametros > archivo_cpio

Tienes que asegurarte de que los archivos inyectados a Cpio sean una lista (un nombre por línea), por ejemplo, usamos esto para hacer un backup:

ls -w 1 -T 1 * | cpio -ocv > /home/dabuntu/bck.cpio

Y si a eso le sumas Bzip2…xD

Ahora para descomprimir es más simple…:

cpio -iv < archivo_cpio

Categorías:Operador

GUÍA RÁPIDA PARA COMPRIMIR/DESCOMPRIMIR ARCHIVOS

En Linux hay diversas herramientas para empaquetar y comprimir archivos, tomando en cuenta que empaquetar es juntar dos o más archivos en un solo archivo (paquete) y comprimir es tomar este archivo-paquete y comprimirlo a continuación te muestro un resumen de las más comunes, de acuerdo a la extensión que comunmente se acostumbra ponerles.

.tar (tar)
Empaquetar tar cvf archivo.tar /archivo/mayo/*
Desempaquetar tar xvf archivo.tar
Ver el contenido (sin extraer) tar tvf archivo.tar
.tar.gz – .tar.z – .tgz (tar con gzip)
Empaquetar y comprimir tar czvf archivo.tar.gz /archivo/mayo/*
Desempaquetar y descomprimir tar xzvf archivo.tar.gz
Ver el contenido (sin extraer) tar tzvf archivo.tar.gz
.gz (gzip)
Comprimir gzip -q archivo
(El archivo lo comprime y lo renombra como “archivo.gz”)
Descomprimir gzip -d archivo.gz
(El archivo lo descomprime y lo deja como “archivo”
Nota: gzip solo comprime archivos, no directorios
.bz2 (bzip2)
Comprimir bzip2 archivo
bunzip2 archivo
(El archivo lo comprime y lo renombra como “archivo.bz2”)
Descomprimir bzip2 -d archivo.bz2
bunzip2 archivo.bz2
(El archivo lo descomprime y lo deja como “archivo”)
Nota: bzip2 solo comprime archivos, no directorios
.tar.bz2 (tar con bzip2)
Comprimir tar -c archivos | bzip2 > archivo.tar.bz2
Descomprimir bzip2 -dc archivo.tar.bz2 | tar -xv
tar jvxf archivo.tar.bz2 (versiones recientes de tar)
Ver contenido bzip2 -dc archivo.tar.bz2 | tar -tv
.zip (zip)
Comprimir zip archivo.zip /mayo/archivos
Descomprimir unzip archivo.zip
Ver contenido unzip -v archivo.zip
.lha (lha)
Comprimir lha archivo.lha /mayo/archivos
Descomprimir lha -x archivo.lha
Ver contenido lha -v archivo.lha
lha -l archivo.lha
.zoo (zoo)
Comprimir zoo -a archivo.zoo /mayo/archivos
Descomprimir zoo -x archivo.zoo
Ver contenido zoo -v archivo.zoo
zoo -L archivo.zoo
.rar (rar)
Comprimir rar -a archivo.rar /mayo/archivos
Descomprimir rar -x archivo.rar
Ver contenido rar -v archivo.rar
rar -l archivo.rar

Categorías:Operador

Como Compilar el Kernel de Linux

Vamos a compilar el kernel de una manera muy sencilla, paso a paso y sin necesidad de leer largos tutoriales con los que casi nunca se llega a nada, después de que hayas compilado el kernel de una manera sencilla, si te recomiendo que recurras a un tutorial mas avanzado para especializarte.

Primer Paso: Obviamente lo primero que debemos hacer antes que todo es descargarnos las fuentes del kernel, esto lo haremos desde la pagina oficial http://www.kernel.org, en este caso nos descargaremos y trabajaremos con la ultima versión estable hasta el momento de escribir el documento que es el kernel-2.6.15.2 y lo haremos desde la letra F que se encuentra hacia tu mano derecha en la misma linea del nombre del kernel que deseas descargar, que son las fuentes completas, y lo guardaremos en el directorio /usr/src.

Segundo Paso: Ahora hay que descomprimir y desempaquetar el kernel, la sintaxis para descomprimir y desempaquetar es la siguiente:
Si lo descargaste tar.gz o tgz
tar zxvf linux-2.6.15.2.tar.gz
tar zxvf linux-2.6.15.2.tgz
Si lo tienes en tar.bz2 como es nuestro caso, la sintaxis mas común es:
tar jxvf linux-2.6.15.2.tar.bz2
En algunas distribuciones la sintaxis es diferente
tar Ixvf linux-2.6.15.2.tgz2
tar yxvf linux-2.6.15.2.tgz2
Si ninguna opción te funciona es posible que no tengas instalado el bunzip2.

Tercer Paso: Una vez descomprimido el archivo tendremos un directorio con el siguiente nombre linux-2.6.15.2 creamos un enlace simbólico
ln -s linux-2.6.15.2 linux
y entramos al directorio
cd linux
Antes de continuar debemos asegurarnos de tener instalado el paquete libncurses5-dev, en nuestro caso usamos la distribución debian y basta con hacer
apt-get install libncurses5-dev

Cuarto Paso: Listos para configurar el kernel ejecutamos el siguiente comando
make menuconfig

te aparecerá el menú de configuración del kernel aquí pulsando “Enter” entramos a los distintos menus, pulsando “Y” incluimos lo que seleccionamos como parte de la imagen del kenel, pulsando “M” lo incluiremos como modulo (no ocupara espacio en la imagen del kernel), pulsando “N” lo excluiremos de la imagen y si pulsamos “?” nos mostrara información sobre el menú u opción.
[ * ] o indica que la opción sera compilada como parte del kernel.
[ ] o indica que la opción no esta incluida.
[M] o indica que la opción esta como modulo.

Recomiendo que cuando vayas a compilar por primera vez no modifiques ninguna opción, simplemente dejalo como esta, guardalo y sigue con los siguientes pasos, una vez que hayas logrado compilarlo entonces si te recomiendo que vayas afinando la configuración de tu kernel y lo vuelvas a compilar.

Quinto Paso: Habiendo configurado el kernel procedemos a la compilación del kernel e instalación de los módulos:
make dep clean
make bzImage
make modules modules_install

Sexto Paso: copia la imagen al directorio boot
cp /usr/src/linux/arch/i386/boot/bzImage /boot/kernel-2.6.15.2
y creamos el mapa de la imagen instalando primero mkinitrd-tools
apt-get install mkinitrd-tools //si no encuentras el paquete no importa puede ser que ya lo tengas instalado
mkinitrd -o /boot/kernel-2.6.15.2.img /lib/modules/2.6.15.2/

Séptimo Paso: Editamos el GRUB, abrimos el archivo de configuración del GRUB con un editor de texto por ejemplo el vim
vim /boot/grub/menu.lst
después de la linea que dice ## ## End Default Options ## colocamos las siguientes lineas:
title Mi Nuevo kernel
root (hd0,1)
kernel /boot/kernel-2.6.15.2 root=/dev/hda2 ro
initrd /boot/kernel-2.6.15.2.img
savedefault
boot

En la etiqueta title donde dice “Mi Nuevo kernel” le colocas el titulo que quieras, este aparecerá en el menú del GRUB al iniciar el computador.
En la etiqueta root donde dice “(hd0,1)” se coloca la ubicación donde esta el directorio boot en nuestro caso se encuentra en el hd0 es decir disco duro cero, partición 1, lo que en otra nomenclatura seria hda2, en la nomenclatura del GRUB el numero de discos y de particiones comienzan a partir de 0, es decir si tienes el directorio boot en el disco duro 1 partición 2 la sintaxis en el GRUB seria (hd0,1). Guardas los cambios y listo reinicias el sistema y eliges tu nuevo kernel.

Categorías:Operador

Permisos adicionales

Los sistemas UNIX emplean típicamente tres permisos o modos adicionales. Estos permisos especiales se asignan a archivos o directorios en conjunto, no a cada clase de forma separada (como sucedía con los permisos básicos).

  • Permiso set user ID, setuid o SUID: cuando un archivo que tiene este permiso asignado se ejecuta, el proceso resultante asumirá la ID de usuario efectiva dada a la clase de usuario. El ejemplo típico es el cambio de una clave de usuario: ningún usuario debería poder modificar /etc/passwd/ directamente. La única forma de poder modificarlo debería ser a través del comando correspondiente, que necesariamente tendrá que tener asignado el setuid. Es decir, el comando /usr/bin/passwd ejecutado por un usuario se ejecutará como si lo hubiese invocado el superusuario, de manera de poder modificar /etc/passwd.
  • Permiso set group ID, setgid o SGID: cuando un archivo que tiene este permiso asignado se ejecuta, el proceso resultante asumirá la ID de grupo efectiva dada a la clase de grupo. Cuando el setgid le es asignado a un directorio, archivos nuevos y directorios creados debajo de ese directorio heredarán el grupo de ese directorio, a diferencia del comportamiento por defecto, que es usar el grupo primario del usuario efectivo al asignar el grupo de archivos nuevos y directorios.
  • Permiso de sticky bit (o menos común, bit pegadizo): El comportamiento típico del sticky bit en archivos ejecutables fuerza al kernel a retener la imagen del proceso resultante luego de su terminación. Originalmente, esta era una característica para ahorrar memoria, pero hoy en día, los precios de las memorias han disminuido y exiten mejores técnicas para manejarlo, así que no se lo suele utilizar más para optimizaciones en archivos. En un directorio, por el contrario, el sticky bit previene que los usuarios renombren, muevan o borren los archivos que allí se encuentran, pertenecientes a usuarios otros que ellos mismos, incluso si tienen permiso de escritura en el directorio. Solo el propietario del directorio y el superusuario quedan exentos de esto.

Estos tres permisos (especificables de forma independiente), un bit por cada uno de ellos, permiten 8 combinaciones posibles que se expresan con un dígito en base 8 (del 0 al 7, uno por cada combinación posible) que se antepone al modo de permisos. Así, el modo se ampliaría ahora del 0000 al 7777.

  • = – específica un modo (sobrescribiendo el modo anterior)

Por ejemplo:

chmod +t /home           # agrega permisos de sticky bit al directorio home
chmod g+s /home/grupo    # agrega el setgid al grupo
chmod gu+s /home /grupo  # agrega el setuid y el setgid al usuario y al grupo respectivamente
Categorías:Operador

Integridad de datos con funciones hash

mayo 26, 2010 1 comentario

Los códigos hash de autenticación de mensajes (HMAC) firman paquetes para comprobar que la información recibida se corresponde exactamente con la enviada. Esta característica se denomina integridad. Los HMAC proporcionan integridad mediante un hash de clave, que es el resultado de un cálculo matemático realizado sobre un mensaje con una función (algoritmo) de hash, combinado con una clave secreta compartida. La función hash se describe normalmente como una firma en el paquete. Sin embargo, una función hash es diferente de una firma digital. La función hash utiliza una clave secreta compartida, mientras que la firma utiliza la tecnología de claves públicas y la clave privada del equipo remitente. La firma digital proporciona aceptación, mientras que la función hash no. La aceptación garantiza que se pueda demostrar que una persona específica cuya identidad puede comprobarse ha originado una comunicación. También garantiza que se produjo realmente la comunicación.

Las funciones hash se denominan también funciones unidireccionales porque es sencillo determinar la función hash a partir del mensaje, pero es matemáticamente inviable determinar el mensaje a partir de la función hash. Por el contrario, en las funciones bidireccionales, el mensaje original puede determinarse a partir de su forma convertida. Los sistemas de cifrado y descifrado son ejemplos de funciones bidireccionales.

La función hash es una suma de comprobación criptográfica o un código de integridad de mensaje (MIC) que ambos interlocutores deben calcular para comprobar el mensaje. Por ejemplo, el equipo remitente utiliza una función hash y una clave compartida para calcular la suma de comprobación del mensaje, y la incluye en el paquete. El equipo receptor debe calcular la misma función hash sobre el mensaje recibido con la clave compartida y comparar el resultado con el original (que se incluye en el paquete del remitente). Si el mensaje ha cambiado durante el trayecto, los valores de hash serán diferentes y se descartará el paquete.

Para la integridad, es posible elegir entre dos funciones hash al configurar la directiva:

  • MD5
    Message Digest 5 (MD5) se basa en RFC 1321. MD5 realiza cuatro pases sobre los bloques de datos y utiliza una constante numérica distinta para cada palabra del mensaje en cada pase. El número de constantes de 32 bits que se utilizan durante el cálculo de MD5 produce una función hash de 128 bits que se utiliza para comprobar la integridad.
  • SHA1
    Secure Hash Algorithm 1 (SHA1, Algoritmo de hash seguro 1) fue diseñado por el National Institute of Standards and Technology, como se describe en Federal Information Processing Standard (FIPS, Estándar federal de procesamiento de información) PUB 180-1. El proceso de SHA se basa en gran medida en el de MD5. El cálculo de SHA1 produce una función hash de 160 bits que se utiliza para comprobar la integridad. Las mayores longitudes de hash suponen una mayor seguridad, por lo que SHA es más efectivo que MD5.
Categorías:Operador

/etc/skel

El directorio /etc/skel es bastante simple de configurar y usar. Proporciona una forma de estar seguro de que todos los nuevos usuarios de tu sistema LFS tienen la misma configuración inicial. El directorio /etc/skel es usado por el programa /usr/sbin/useradd.

Para más información, consulta man useradd.

Para empezar, crea un directorio /etc/skel. La mejor forma de hacerlo es como usuario root. Después copia en /etc/skel aquellos ficheros que quieras que cada nuevo usuario tenga en su directorio home. Por ejemplo, .bash_profile, .bashrc, .bash_logout, dircolors, .inputrc, y .vimrc.

Cuando crees un nuevo usuario con /usr/sbin/useradd usa el parámetro -m. Por ejemplo:

useradd -m -s/bin/bash jwrober

El programa /usr/sbin/useradd usa una serie de valores por defecto. Los leerá del fichero /etc/default/useradd, si este existe. Si no existe, entonces utiliza algunos valores internos por defecto, que pueden verse ejecutando /usr/sbin/useradd -D.

Para cambiar estos valores, crea un fichero /etc/default/useradd con los mismos valores que la salida de /usr/sbin/useradd -D. Aquí se muestra un ejemplo.

# Inicio de /etc/default/useradd

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=
SKEL=/etc/skel

# Fin de /etc/default/useradd

La única cosa que falta en el fichero es un intérprete de comandos por defecto. Añádelo ejecutando:

/usr/sbin/useradd -D -s/bin/bash

Esto sustituirá la línea SHELL= por SHELL=/bin/bash. Este cambio hace incluso más fácil añadir nuevos usuarios a tu sistema LFS. El programa /usr/sbin/useradd tiene muchos parámetros que pueden especificarse en el fichero /etc/default/useradd.

Categorías:Operador