3
Mar
2011

Variables de entorno con LibC

LibC provee algunas funciones para manejar las variables de entorno. Debemos incluir la Standard Library (stdlib.h) para acceder a ellas.

Limpiar las variables de entorno:

int clearenv(void);

Escribir o modificar una variable de entorno:

int putenv(char *string);

El parámetro string es de la forma VARIABLE=valor

Escribir o modificar una variable de entorno:

int setenv(const char *name, const char *value, int overwrite);

name es el nombre de la variable de entorno, value el valor y overwrite (0 o número distinto de 0) permite especificar la acción para el caso de que la variable de entorno ya exista con un valor determinado.

Remover una variable de entorno:

int unsetenv(const char *name);

name es el nombre de la variable de entorno.

3
Mar
2011

Variables de entorno en bash

Las variables de entorno de una shell Linux se utilizan para trabajar sobre ella o para dar información de contexto a los procesos que desde ella se ejecuten. Ese contexto sirve de datos al proceso y le permite, por ejemplo, modificar su compartamiento.

Las shells tienen un conjunto de variables de entorno cargadas por defecto. Los usuarios pueden definir más variables y modificar los valores existentes. Sin embargo, cualquier cambio realizado es temporal: al abrir una nueva shell, nos encontraremos nuevamente en el estado por defecto.

Los siguientes comandos aplican a la shell bash.

Para ver las variables de entorno:

printenv

Para imprimir el valor de una variable específica:

echo $VARIABLE

En caso de que la variable sea utilizada únicamente en la shell, podemos definirla de la siguiente forma:

VARIABLE=valor


Leer el resto del artículo »

2
Mar
2011

Disowning procesos en Linux

disown procesos linux

Cuando ejecutamos procesos en Linux desde un terminal, los procesos quedan “atados”. Esto significa que al cerrar el terminal, los procesos mueren. Voy a comentarles en este artículo dos formas de crear procesos independientes, que pertenecen al usuario desde el que se ejecutaron pero a ningún terminal en particular.

nohup

Lanzamos el proceso de la siguiente forma:

nohup ping 127.0.0.1

Con Ctrl + z detenemos el proceso para volver al terminal. Ingresando bg lo enviamos al background y podremos cerrar el terminal sin que el proceso muera.


Leer el resto del artículo »

9
Jan
2011

Eliminación segura de archivos en Linux / OS X

srm es una utilidad en la línea de comandos para sistemas Linux, OS X y otros UNIX-like que permite la eliminación segura de archivos en disco. En la eliminación normal, simplemente se rompe el enlace que permite localizar físicamente al archivo y se marca ese espacio como “reusable”. Con la eliminación segura, antes de romper estos enlaces, se realizan sobreescrituras, renombramientos y truncamientos. De esta manera es imposible recuperar la información.

srm -rf /home/usuario/directorio_a_borrar

-r: borrar recursivamente archivos y directorios
-f: no interrumpir si el archivo o directorio no existe

El modo por defecto utiliza el algoritmo de Gutmann con 35 pasadas. En teoría, una sola pasada no es suficiente para garantizar la irrecuperabilidad de la información porque las distintas frecuencias alcanzan distintas profundidades en el material magnético. A través del análisis de señales podría identificarse qué fue escrito anteriormente. Sin embargo, ninguna empresa privada de recuperación de información ni entidad gubernamental clama haber utilizado estas técnicas. Las 35 pasadas tienen que ver con sobreescribir mediante patrones de distintas codificaciones. Para un dispositivo de codificación conocida, solo sería necesario sobreescribir con sus patrones.


Leer el resto del artículo »

2
Jan
2011

Autenticación en sistemas Linux: contraseñas

Para validar el ingreso de un usuario a un sistema Linux se compara el usuario y la contraseña ingresados con la información de una base de datos. De haber una coincidencia, el ingreso es válido.

La base de datos en la que se almacena esta información es un archivo de texto plano -con permisos de lectura restringidos al superusuario- ubicado en /etc/shadow. En lugar de almacenarse la contraseña en texto claro, se guarda el resultado de aplicarla a una función irreverisble (hash). La comparación al ingresar al sistema se da entre el hash guardado y la función de hashing aplicada a la contraseña ingresada por el usuario.

El hecho de que una función de hashing sea irreversible permite que, aún viendo el producto final, no se pueda deducir la contraseña que lo generó y que permitiría ingresar al sistema. Existen de todas formas posibles ataques a esta solución como el método de las colisiones -en algoritmos de hashing inseguros- o de diccionarios.


Leer el resto del artículo »

2
Jan
2011

Manejo de grupos en UNIX – 3a parte

Administración de grupos

El comando groupadd permite agregar grupos en el sistema.

Definir grupo con contraseña:

groupadd -p contraseña-encriptada grupo_de_prueba

El comando groupmod permite modificar grupos en el sistema.

Modificar ID de grupo (los valores entre 0 y 999 son típicamente para grupos del sistema):

groupmod -g nueva-id grupo_de_prueba

Modificar nombre de grupo:

groupmod -n nuevo-nombre grupo_de_prueba

Modificar contraseña de grupo:

groupmod -p nueva-contraseña-encriptada grupo_de_prueba


Leer el resto del artículo »

2
Jan
2011

Manejo de grupos en UNIX – 2a parte

¿Cómo funcionan los grupos?

Cuando un usuario ingresa al sistema, tiene un grupo primario al que pertenece (definido en /etc/passwd). Si desea ingresar a otro grupos, utiliza el comando newgrp:

newgrp grupo

El usuario puede ingresar a un grupo al que no pertenece escribiendo su contraseña -siempre que este habilitada-.

Un usuario puede desloguearse del grupo al que entró con el comando exit. Si quiere desloguearse sucesivamente de distintos grupos a los que se fue logueando, con exit pasa al grupo anterior. Cuando llega al último, sale del sistema.

Una aplicación directa del manejo de grupos es a nivel de archivos. Cada archivo tiene un usuario propietario (owner) y un grupo al que pertenece (group). Estos datos corresponden con el usuario que lo creó y el grupo al que estaba logueado el usuario.

Para modificar el grupo al que pertenece un archivo, se puede ejecutar el siguiente comando:

chown usuario:grupo archivo

o

chgrp grupo archivo

El usuario debe pertenecer o estar logueado en el grupo que le asignará al archivo.


Leer el resto del artículo »