Montar filesystem remoto con SSH
Ya se habrá entendido que SSH es más que un simple protocolo para administración remota. De hecho, nos brinda una cantidad enorme de funciones muy útiles. Hace unos días veíamos cómo redireccionar puertos con SSH; un tiempo atrás habíamos visto también cómo ejecutar aplicaciones gráficas remotas. Esta vez veremos cómo montar un sistema de archivos remoto utilizando sólo SSH. Para ello necesitamos, lógicamente, acceso por SSH a la máquina que tiene el filesystem que deseamos montar. Además, en la máquina de destino tendremos que instalar la utilidad que nos permitirá hacer esto: sshfs. A continuación muestro un ejemplo utilizando Fedora:
[root@megan leandro]# yum install fuse-sshfs.i686
Una vez instalado sshfs su uso es muy trivial. Simplemente especificamos el nombre de usuario@IP_maquina:/directorio/a/montar /punto/de/montaje.
[leandro@megan ~]# sshfs leandro@192.168.1.2:/Users/leandro/datos/ /mnt/scarlet/ Password: [leandro@megan ~]$ mount 192.168.1.2:/Users/leandro/datos on /mnt/scarlet type fuse.sshfs (rw,nosuid,nodev,max_read=65536,user=leandro)
En el ejemplo anterior se puede ver cómo se ha montado el sistema de archivos. Importante y a destacar es que podemos montar el mismo sin ser root. De hecho, conviene hacerlo con el usuario sin privilegios que utilicemos dado que de esa manera podremos leer y escribir sin problemas.
Montar HFS+ para R/W en Ubuntu
Desde Ubuntu es posible escribir en dispositivos con HFS+, siendo necesario para ello desactivar el journaling en dichos dispositivos. Esto debe realizarse desde Mac OS X con la utilidad diskutil de la siguiente manera:
sh-3.2# diskutil disableJournal /dev/disk1s3
Journaling has been disabled for volume Storage on disk1s3
Ahora bien, en Ubuntu se puede montar de la siguiente forma:
root@megan:~# mount -t hfsplus /dev/sdb3 /media/Storage
Es recomendable también contar con las herramientas para hfsplus. Para ello:
root@megan:~# aptitude install hfsprogs
Lógicamente, en todos los casos anteriores debe reemplazarse el dispositivo por el que corresponda.
Agregar swap a Linux
Sea porque no se creó un espacio para la swap en la instalación o porque la misma haya quedado chica, muchas veces es útil poder agregar swap a un sistema Linux ya funcionando. Hacerlo es muy sencillo, utilizando un simple archivo. Los pasos son los siguientes:
- Crear el archivo para la swap. Para ello utilizaremos el comando dd. Los parámetros del mismo son:
- if=/dev/zero: aquí se le especifica el archivo o dispositivo de entrada.
- of=/media/swapfile: aquí se le especifica el archivo de salida, el que utilizaremos para la swap.
- bs=1024: con este parámetro se indica el tamaño del bloque, especificado en KB.
- count=2097152: la cantidad de bloques del archivo. Si se multiplica por el tamaño de cada bloque se obtiene el tamaño del archivo resultante, en KB.
dd if=/dev/zero of=/media/swapfile bs=1024 count=2097152
- Crear el filesystem:
mkswap /media/swapfile
- Activar el archivo para que sea utilizado como memoria de intercambio:
swapon /media/swapfile
- Registrarlo en /etc/fstab para que se active automáticamente al inicio. Para ello, agregar la siguiente línea a dicho archivo:
/media/swapfile swap swap defaults 0 0
Montar una imagen ISO en Linux
Muchas veces necesitamos acceder al contenido de una imagen ISO que tenemos. La forma tradicional es grabar un CD, pero en Linux esto no es necesario. Es posible montar directamente la imagen como cualquier otro filesystem. Lo dicho es tan simple como:
sudo mkdir /media/imagen-cd
sudo mkdir mount -o loop imagen-cd.iso /media/imagen-cd
Atributos de archivos en ext3
Los permisos de Linux nos permiten dar distintos niveles de acceso a los archivos y directorios a los diferentes usuarios y son provistos por el sistema operativo. Existe también otro tipo de permisos que son provistos por el propio sistema de archivos y son los atributos de los archivos.
La diferencia de los atributos es que van más allá de la autorización del sistema operativo, dado que el control se realiza a nivel de filesystem. De esta manera, los atributos son capaces de restringir los privilegios incluso al usuario root. En esta ocasión voy a hacer una revisión de los atributos de los archivos en el sistema ext3.
Atributos del sistema ext3
El sistema ext3 provee los siguientes atributos:
- Append only (a).
- Compressed (c).
- No dump (d).
- Extent format (e).
- Inmutable (i).
- Data journalling (j).
- Secure deletion (s).
- No tail merging (t).
- Undeletable (u).
- No atime updates (A).
- Synchronous directory updates (D).
- Synchronous updates (S).
- Top of directory hierarchy (T).
En el manual de chattr puede encontrarse una explicación más detallada sobre el significado de cada uno de los atributos anteriores. No obstante, de la lista me gustaría comentar el atributo inmutable; dicho atributo impide que el archivo se renombre, modifique, elimine o tenga un link simbólico que lo apunte. Y dicha restricción se aplica incluso al root. En la siguiente sección muestro un ejemplo.
Manejo de los atributos
Para administrar los atributos existen los comandos lsattr y chattr provistos en el paquete e2fsprogs. El primero de ellos lista los atributos de un archivo y el segundo permite cambiarlos.
A continuación creamos un archivo vacío y chequeamos los atributos del mismo. Comprobaremos que no tiene ninguno seteado.
root@scarlet-ubuntu:~# touch prueba.txt
root@scarlet-ubuntu:~# lsattr
------------------- ./prueba.txt
Ahora le seteamos el atributo inmutable y volvemos a chequear los atributos. Para ello, tener en cuenta que el comando chattr utiliza el signo + para setear un atributo y el signo - para eliminarlo.
root@scarlet-ubuntu:~# chattr +i prueba.txt
root@scarlet-ubuntu:~# lsattr
----i-------------- ./prueba.txt
El próximo paso es intentar borrar el archivo. Notar que el comando rm se ejecuta como root y se le exige que fuerce el borrado. El resultado será que el propio filesystem nos impedirá hacerlo.
root@scarlet-ubuntu:~# rm -f prueba.txt
rm: cannot remove `prueba.txt': Operación no permitida
Ahora bien, le quitaremos el atributo inmutable y volveremos a intentar eliminarlo. Lógicamente funcionará de la manera esperada.
root@scarlet-ubuntu:~# chattr -i prueba.txt
root@scarlet-ubuntu:~# lsattr
------------------- ./prueba.txt
root@scarlet-ubuntu:~# rm prueba.txt
root@scarlet-ubuntu:~# ls



