lunes, 21 de octubre de 2013

SSHFS en Debian

Secure Shell Filesystem (SSHFS) es un sistema de archivos para Linux, que opera sobre archivos en una computadora remota usando un entorno seguro de acceso.

En la computadora local donde se monta SSHFS, la implementación hace uso del módulo del kernel FUSE. Los efectos prácticos de esto es que el usuario final puede interactuar amigablemente con archivos remotos estando en un servidor SSH,viéndolos como si estuvieran en su computadora local. En la computadora remota se utiliza el subsistema SFTP de SSH.

Para implementar SSHFS, primero tenemos que instalar el servicio SSH en el equipo servidor, en este caso Debian. Usamos el comando apt-get install ssh.


Usaremos una máquina Ubuntu como cliente. Instalamos el cliente del servicio con el comando sudo apt-get install sshfs.

Ejecutamos el mod fuse con el comando modprobe fuse, ya que sin él no funcionará. Otra opción es añadir fuse al fichero de mocules para que lo cargue automáticamente y no tener que ejecutar el comando todas las veces. Editamos el fichero /etc/modules de la siguiente forma:

Creamos la carpeta que queremos montar en el cliente con mkdir, yo la voy a llamar sshfs. Después la montamos con el comando sshfs usuarioremoto@hostremoto:/home/usuarioremoto/carpeta /home/usuariolocal/carpeta


La ha montado correctamente. La opción nonempty significa que vamos a montar en un directorio que no está vacío.

Para desmontarla utilizamos fusermount -u /mnt/sshfs.


 

 

viernes, 18 de octubre de 2013

DFS en Windows 2008 Server

Voy a hablar de lo que es DFS y pondré los pasos para implementarlo en una máquina virtual Windows 2008 Server.

Un Distributed File System (Sistema de Archivos Distribuido) es un sistema de archivos de computadoras que sirve para compartir archivos, impresoras y otros recursos como un almacenamiento persistente en una red de ordenadores. Otros sistemas notables utilizados fueron el sistema de archivos Andrew (AFS) y el sistema Server Message Block SMB, también conocido como CIFS, del que hablamos en la anterior entrada.


Instalación y configuración de DFS

En Administrador del Servidor, Funciones, agregamos al servidor la función de Servicios de Archivo.

En mi caso, ya lo tengo instalado. Hacemos click en Siguiente y seleccionamos las siguientes opciones:

Le damos a Siguiente. Nos pedirá crear un espacio de nombres, lo crearemos más adelante.


Le damos a Siguiente. Seleccionamos el Disco Local C.


Le damos a Siguiente. Dejamos por defecto la carpeta donde guardaremos los reportes.


Cuando esté todo correctamente configurado, le damos a Instalar.


Una vez instalado, entramos en Herramientas Administrativas, DFS Management.


Creamos un nuevo espacio de nombres.


Aquí escribimos la IP del servidor:


Ahora escribimos el nombre que tendrá nuestro espacio de nombres.


Elegimos Espacio de Nombres Independiente:


Le damos a Siguiente para finalizar la creación de nuestro espacio de nombres.


Vamos a ver si la carpeta ASO aparece como recurso compartido. Entramos en Herramientas Administrativas, Administracion de almacenamiento y recursos compartidos.




Podemos ver que la carpeta ASO está compartida.

Vamos a crear una carpeta dentro de ASO llamada Escritorio que apuntará al directorio C:\Raíces DFS\ASO\Usuario\Escritorio del servidor, en el que hemos creado un archivo llamado FuncionaDFS y con el que comprobaremos que si entramos desde un cliente a dicha carpeta, podremos acceder a este archivo.

Volvemos al Administrador de DFS y hacemos click en Nueva carpeta:


Le ponemos de nombre Escritorio y la creamos. Luego, en la pestaña Servidores de espacios de nombres, hacemos click derecho sobre la carpeta ASO, Propiedades y Permisos de los Recursos. Ponemos permisos de sólo lectura.


En el cliente Windows XP, vamos a Ejecutar y escribimos lo siguiente:

 
donde W2008S-SERRANOM es el nombre de nuestro servidor Windows 2008 Server.  Nos aparecerá una ventana donde escribir usuario y contraseña.





Entramos y vamos a la carpeta. 


Intentamos crear un archivo dentro de ella. Nos lo negará porque no tenemos permisos para crear archivos en esa carpeta.


Y así es como funciona el servicio DFS.



jueves, 17 de octubre de 2013

Sistemas de archivos virtuales: Samba CIFS

En la entrada de hoy voy a hablar de crear un sistema de archivos virtuales con Samba CIFS en Linux. Primero explicar un poco lo que es cada cosa.

Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows para sistemas de tipo UNIX. De esta forma, es posible que ordenadores con GNU/Linux, Mas OS X o UNIX en general se vean como servidores o actuen como clientes en redes de Windows.

CIFS-Utils (Common Internet File System utilities) nos servirá para montar en nuestro sistema de archivos Linux local, recursos de redes CIFS compartidos en máquinas remotas. Antes, CIFS-Utils formó parte de la Suite Samba, pero actualmente es un proyecto separado y es activamente mantenido por Samba Team.

Para comenzar a montar nuestro sistema de archivos virtual con Samba CIFS en Linux, primero debemos instalar los paquetes correspondientes, smbfs, samba-common, smbclient y cifs-utils, con la orden apt-get install.


Una vez instalados, vamos a configurar Samba. Editamos en archivo /etc/samba/smb.conf con las siguiente credenciales:





No es necesario reiniciar el servicio para guardar los cambios. Ahora creamos el usuario frodo en Samba. Primero lo creamos con el comando adduser y luego lo añadimos a Samba con el comando smbpasswd -a:

Lo añadimos al fichero /etc/samba/smbusers:

 donde <frodo> sin comillas es el usuario en Linux y "<frodo>" es el usuario que tendrá en Windows.

El comando mount.cifs monta un sistema de archivos CIFS Linux. Esta utilidad adjunta o monta el recurso de red compartido (o exportado) en un servidor remoto el cual se especifica como servicio utilizando la sintaxis //servidor/recurso - donde "servidor" es el nombre o la dirección IP en el cual reside el recurso compartido y "recurso" es el nombre del recurso compartido - a un directorio local que será el punto de montaje. El punto de montaje debe existir en nuestro sistema de archivos local antes de montar el recurso.

Vamos a montarlo. Queremos montar el recurso compartido /tierramedia en la carpeta de Windows XP /tierramedia con las credenciales del usuario frodo perteneciente al dominio midominio.local. Primero creamos el directorio con mkdir tierramedia:


Le damos permisos con chmod 777 /tierramedia. Para entrar desde Windows, abrimos Mi PC y hacemos click en el menú Herramientas, Conectar a una unidad de red. En la pantalla que aparecerá, le damos una letra al dispositivo nuevo y escribimos la ruta a la que queremos acceder:

Nos pedirá usuario y contraseña. Introducimos el usuario que creamos antes:

Le damos a Aceptar y ya estamos conectados a la carpeta tierramedia con el usuario frodo.




Si quisiéramos montar la carpeta desde Windows, primero la creamos, luego en Propiedades activamos la opción de compartir la carpeta y usamos el comando en Linux usando CIFS:

martes, 15 de octubre de 2013

Sentencias alternativas y ciclos en PHP

Un bucle o ciclo es una sentencia que se realiza repetidas veces a un trozo aislado de código, hasta que la condición asignada a dicho bucle deje de cumplirse. Se usa para hacer una acción repetida sin tener que escribir varias veces el mismo código, lo que ahorra tiempo, deja el código más claro y facilita su modificación en el futuro.

Hay cuatro tipos de bucles en PHP:
  • While: Primero evalua que la condición sea verdadera y luego se ejecuta (precondición), hasta que la condición pase a ser falsa. Puede que no se ejecute ninguna vez si su condición es inicialmente falsa. Ejemplo:
    <?php
    $i = 1;
    while ($i <= 10) {
    echo "$i";
    $i++;
    }
    ?>

    Este ejemplo inicializa una variable a 1 y luego pone la condición de que si la variable $i es menor o igual que 10, escribe el valor actual de la variable y luego le suma 1. La instrucción se repite hasta que $i pase de 10. Cuando pasa de 10, se termina el programa. Es "Mientras $i sea menor o igual que 10, escribir su valor actual y sumarle 1".
  • Do... While: Su uso es similar a while, pero aquí, las sentencias que siguen al do se ejecutan por lo menos una vez y se comprueba la condición después de la primera iteración. Así, si es verdadera la condición se repite por segunda vez, si es falsa se continúa con las sentencias inmediatamente después de la instrucción while. Ejemplo:
    <?php
    $i = 1;
    do {
    echo "$i";
    $i++;
    } while ($i <= 10);
    ?>

    Este ejemplo hace lo mismo que el anterior, solo que ahora primero se pone la instrucción a ejecutar y luego la condición. Es "escribir el valor de $i y sumarle 1 mientras que $i sea menor o igual que 10" (postcondición).
  • For: Los bucles for son los más complejos en PHP. Tienen la siguiente estructura:
    1. Inicialización: Es una expresión que se ejecuta sólo una vez al inicio y predetermina el primer valor inicial.
    2. Condición: Es una expresión que se evalúa como falsa o verdadera, si es falsa el bucle finaliza, en caso contrario el bucle ejecuta la sentencia.
    3. Actualización: Es una expresión que modifica la expresión de inicialización comúnmente en incremento o decremento.
    Ejemplo:
    <?php
    $i = 1;
    for ($i = 10) {
    echo "$i";
    $i++;
    }
    ?>

    Este bucle es similar al bucle while.
  • Foreach: Funciona sólo en arrays y presenta un error al utilizar una variable con diferente tipo o no inicializada. Es un buen método de iteración de objetos y arrays. Ejemplo:
    <?php
    $array = array(1, 2, 3, 4);
    foreach ($array as &$valor) {
        $valor = $valor * 2;
    }
    // $array ahora es array(2, 4, 6, 8)
    unset($valor); // rompe la referencia con el último elemento
    ?>

Contadores y acumuladores
Un acumulador es un registro donde se almacenan los resultados lógicos y aritméticos intermedios. Sin un registro acumulador, sería necesario escribir el resultado de cada operación en la memoria primaria. Acceder a la memoria primaria es más lento que acceder a un registro acumulador.

Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o acción. Se usan con la finalidad de contar sucesos o acciones internas de un bucle; deben realizar una operación de inicialización y posteriormente las sucesivas de incremento o decremento del mismo. La inicialización consiste en asignarle al contador un valor inicial. Se situará antes y fuera del bucle.