Generar imagen ISO

Aunque el uso de CDs y DVDs es cada vez más escaso, generar una imagen ISO a partir de archivos o carpetas en nuestro disco duro puede ser de utilidad, por ejemplo, para montar la imagen en una máquina virtual o quemarla para llevar los archivos a otra PC cuando no hay puertos USB disponibles. En Linux, se puede crear fácilmente una imagen ISO desde la línea de comandos usando el comando genisoimage:

monstruosoft@monstruosoft-PC:~$ genisoimage -J -o imagen.iso *.jpg
Warning: creating filesystem with Joliet extensions but without Rock Ridge
         extensions. It is highly recommended to add Rock Ridge.
I: -input-charset not specified, using utf-8 (detected in locale settings)
 95.07% done, estimate finish Fri Jan 27 15:38:05 2017
Total translation table size: 0
Total rockridge attributes bytes: 0
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
5275 extents written (10 MB)

En este ejemplo estamos indicando que queremos usar la extensión Joliet para nombres de archivo largos, a continuación especificamos el nombre del archivo ISO y finalmente escribimos el nombre del archivo o archivos que queremos agregar a la imagen ISO.

De forma predeterminada, todos los archivos indicados en la línea de comandos serán puestos en el directorio raíz del CD/DVD. Para agregar carpetas a la imagen ISO podemos usar la opción -graft-points que permite especificar la forma en que aparecerán los archivos y carpetas en la imagen ISO. Por ejemplo:

monstruosoft@monstruosoft-PC:~$ genisoimage -J -graft-points -o imagen.iso carpeta-destino/=carpeta-local/ *.jpg

Por supuesto, este es solamente un ejemplo sencillo que nos permite crear rápidamente una imagen de CD/DVD. Para ver una lista completa de las opciones que soporta genisoimage, no olvides revisar su manual:

monstruosoft@monstruosoft-PC:~$ man genisoimage

Advertisements

Ejecutar programas GUI como otro usuario en Linux

A veces es útil ejecutar un programa como otro usuario sin tener que cambiar la sesión de escritorio. Para los programas de línea de comandos es fácil ya que podemos simplemente usar el comando su:

monstruosoft@monstruosoft-PC:~$ su - invitado 
Contraseña: 
invitado@monstruosoft-PC:~$ whoami 
invitado
invitado@monstruosoft-PC:~$ exit
logout
monstruosoft@monstruosoft-PC:~$ whoami 
monstruosoft

Pero sin intentamos ejecutar una aplicación con interfaz gráfica (GUI), recibimos un error:

monstruosoft@monstruosoft-PC:~$ su - invitado 
Contraseña: 
invitado@monstruosoft-PC:~$  xeyes 
No protocol specified
Error: Can't open display: :0

Esto se debe a que el display fue creado por el usuario que inició la sesión y, de forma predeterminada, el servidor X no permite que otros usuarios puedan usarlo. Sin embargo, siendo que el servidor X usa un modelo servidor-cliente, no es sorpresa que pueda fácilmente aceptar conexiones de otros usuarios si se configura para ello. Por suerte contamos con el comando xhost que nos permite hacer justamente eso e indicar al servidor X el tipo de conexiones que debe aceptar. De forma predetermiada, el servidor X sólo acepta conexiones del usuario que inició la sesión:

monstruosoft@monstruosoft-PC:~$ xhost 
access control enabled, only authorized clients can connect
SI:localuser:monstruosoft

Podemos usar el comando xhost para permitir el acceso al servidor X a otros usuarios locales usando el siguiente comando:

monstruosoft@monstruosoft-PC:~$ xhost +local:
non-network local connections being added to access control list
monstruosoft@monstruosoft-PC:~$ xhost 
access control enabled, only authorized clients can connect
LOCAL:
SI:localuser:monstruosoft

Ahora todos los usuarios locales pueder tener acceso al servidor X:

monstruosoft@monstruosoft-PC:~$ su - invitado 
Contraseña: 
invitado@monstruosoft-PC:~$ xeyes 
invitado@monstruosoft-PC:~$

Cuando ya no necesites acceso al servidor X desde otro usuario puedes revocar los accesos:

monstruosoft@monstruosoft-PC:~$ xhost -local:
non-network local connections being removed from access control list

Para más información sobre el comando xhost puedes consultar su manual:

monstruosoft@monstruosoft-PC:~$ man  xhost