Instalar los iconos Papirus en Linux

La colección de iconos Papirus incluye más de mil elegantes y minimalistas iconos para los programas más populares de Linux y es una de las colecciones preferidas por los usuarios. ¿Cómo podemos agregarla a nuestro linux? Vamos con las instrucciones para Ubuntu y para Debian.

iconos papirus

En Ubuntu:

sudo add-apt-repository ppa:papirus/papirus
sudo apt-get update
sudo apt-get install papirus-icon-theme

En Debian:

sudo tee /etc/apt/sources.list.d/papirus-ppa.list << EOF
deb http://ppa.launchpad.net/papirus/papirus/ubuntu xenial main
EOF

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com E58A9D36647CAE7F
sudo apt-get update
sudo apt-get install papirus-icon-theme

Otra opción para Ubuntu puede ser recurrir a descargar el .deb e instalar con el agregador de paquetes.

Creando contraseñas en Linux con mkpasswd

El programa mkpasswd, que es parte del paquete whois, nos permite generar contraseñas complejas y seguras a través de diversos algoritmos criptográficos.

Si no lo tienes instalado puedes agregar el paquete whois tal que así:

sudo apt-get update
sudo apt-get install whois

Una vez tengamos whois instalado ya podemos hacer uso de mkpasswd. Veamos que opciones tiene:

  • -m: Nos permite elegir el método con el que encriptaremos: entre des, md5,sha-256 y sha-512.
  • -5: Es una forma abreviada para seleccionar el método md5, sería equivalente a usar -m md5.
  • -S: Una cadena que usar como salt para el password.
  • -R: Definimos el número de rondas que se usarán, si son aplicables.
  • -P: Lee la contraseña del descriptor de fichero que le pasemos en lugar de hacerlo de /dev/tty
  • -s: Método acortado equivalente a -P 0

Por ejemplo:

#usamos el algoritmo sha-256
#pasamos como sal la cadena salamos1
mkpasswd -m sha-256 -S salamos1

#lo mismo pero con md5
mkpasswd -m md5 -S salamos1

Una captura viendo distintas opciones, distintos algoritmos y comprobando también cómo el salt no permite ciertos carácteres:
mkpasswd

Reparar Sambacry (CVE-2017-7494) en Ubuntu

Tras todo el tema de Wannacry atacando sistemas Windows hace un par de semanas ahora aflora otra vulnerabilidad que afecta al protocolo SMB en Samba, afectando a las versiones 3.5 y posteriores, lanzada en marzo de 2010. El fallo ha sido reportado y descrito por Samba en su sitio oficial como CVE-2017-7494.

Ya se ha reparado el problema, así que si no tienes actualizado Samba es el momento de hacerlo. Las versiones para Ubuntu en las que ya se ha aplicado el parche son las siguientes:

  • 17.04: samba 2:4.5.8+dfsg-0ubuntu0.17.04.2
  • 16.10: samba 2:4.4.5+dfsg-2ubuntu5.6
  • 16.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.16.04.7
  • 14.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.14.04.8

Para actualizar Samba y ver qué versión tienes instalada en tu Ubuntu puedes usar los siguientes comandos:

#instalar
$ sudo apt-get update
$ sudo apt-get install samba

#y para comprobar la versión
$ sudo apt-cache show samba

Si por lo que sea no puedes actualizar Samba comprueba que tengas SELinux habilitado, en caso afirmativo ya deberías estar protegido contra la ejecución de código remoto en tu equipo. También puedes poner la opción noexec en las unidades compartidas por Samba para evitar la ejecución de binarios en las mismas.

En la sección [global] del fichero smb.conf también puedes añadir la siguiente línea y luego reinciar el servicio:

nt pipe support = no

Ojo con esto último, puede dar problemas con los permisos para acceder a carpetas a los usuarios de Windows. Por ejemplo, les forzaría a poner la dirección completa del directorio compartido, no bastando sólo con la del directorio raíz.

Linux: Cómo añadir un nuevo disco a un RAID 0

Ayer me econtraba en la siguiente tesitura: un servidor Ubuntu con dos discos en RAID0 al que hay que añadir un tercer disco pero sin borrar los datos que ya hay en el array. ¿Cómo lo hago? Esto me funcionó para un Ubuntu Server con kernel 4.4 así que en SO bastante nuevos debería funcionar.

Bueno, desde la versión 2.6.35 del kernel es posible hacerlo con mdadm con el siguiente comando. Para el ejemplo supongamos un raid llamado md1 con dos discos y un nuevo disco llamado sdd

mdadm --grow /dev/md1 --level=0 --raid-devices=3 --add /dev/sdd

Básicamente usamos grow sobre el array que ya tenemos, ponemos el número de discos que serán ahora en raid-devices y finalmente ponemos qué disco añadimos con add.

Comandos básicos de Linux para gestión de procesos

Un tip rápido y práctico como el de los puertos del otro día (lo estoy haciendo para un compañero de trabajo) ¿Cuáles son los comandos básicos de Linux para la gestión de procesos del servidor?:

  • ps: muestra los procesos activos.
  • ps aux: ps pero con más detalle.
  • kill pid: mata los procesos con el pid pid
  • killall proc: mata todos los procesos llamados proc
  • bg: lista los procesos parados o en segundo plano, arranca procesos parados en segundo plano.
  • fg: trae el proceso más reciente a primer plano.
  • fg n: trae el proceso n a primer plano.

Siete comandos de Linux básicos para la configuración de redes

Vamos con un articulillo técnico que os había prometido. Recopilamos una serie de comandos de Linux básicos para el trabajo y la configuración de redes. Nada complicado en exceso pero herramientas básicas y funcionales que son de uso habitual para quien ande trasteando en temas de redes.

  1. Ping: Envía un mensaje ICMP incrustado en un paquete IP, comprobando la conectividad entre dos nodos. El comando se ejecuta hasta que pulsemos las teclas Ctrl + c. ping ejemplo
  2. Netstat:  Es una herramienta que nos muestra las conexiones activas de un equipo. Esta herramienta acepta muchos parámetros: -r muestra la tabla de enrutamiento, netstat -r-p nos saca el nombre del programa para cada socket,netstat -p -a todos los puertos a la escuchanetstat -a
  3. Tcpdump: Es una herramienta que permite monitorizar el tráfico de red, mostrando en tiempo real los paquetes transmitidos y recibidos.tcpdump
  4. Tracepath: Traza los nodos a través de los que viajan nuestros paquetes en su camino hacia el destino que le definamos. tracepath
  5. Route: Es una herramienta que nos permite manipular las tablas de enrutamiento del sistema.
    #añadir ruta a la tabla
    route add -net 8.8.8.8/24 gw 192.168.100.1
    #eliminar ruta de la tabla
    route del -net 8.8.8.8/24 gw 192.168.100.1
    #definir puerta de enlace por defecto
    route add default gw 192.168.100.1
    
  6. Dhclient: Si lo ejecutamos con -r y con permisos lo que hace es «liberar» nuestra IP y solicitar otra al servidor DHCP.dhclient
  7. Ifconfig: Configuración de interfaz. Nos permite configurar o desplegar diversos parámetros de las interfaces de red como la máscara o la dirección IP. Acepta varios parámetros, y si lo ejecutamos sin pasarle ninguno nos dará información sobre las distintas interfaces. Los más usados son:
    • up: Marca la interfaz como disponible. Por ejemplo ifconfig eth0 up.
    • down: Marca la interfaz como no disponible. Por ejemplo ifconfig eth0 down.
    • dirección ip: Si ponemos una ip esta le será asignada a esa interfaz, teniendo de esta forma una ip estática (para DHCP está Dhclient). Por ejemplo ifconfig eth0 192.168.100.2.
    • netmask: Para definir una máscara de red. Por ejemplo ifconfig eth0 netmask 255.255.255.0 .
    • broadcast: Nos permite definir una ip como dirección de difusión. Por ejemplo sudo ifconfig etho broadcast 172.16.25.98.
    • promisc: Pone la interfaz en modo promiscuo, de forma que captura todos los paquetes, vayan dirigidos a ella o no. Por ejemplo ifconfig eth0 promisc.

Usando el comando find para encontrar varias extensiones de archivo en Linux

Vamos con una entradilla sobre comandos en Linux para celebrar que hoy Microsoft se ha unido a la Linux Foundation. Sabemos que con el comando find seguido de una cadena de caracteres podemos encontrar todos los ficheros con esa extensión dentro de un directorio, veamos cómo sería la sintaxis más simplificada:

# find *.zip

La instrucción de arriba nos mostraría todos los ficheros cuyo nombre termine en .zip que estén situados en la carpeta en la que nos encontremos.

Ok, ¿y si quiero buscar varias extensiones?. Veamos ¿cómo sería el comando para buscar tanto los zip como los txt?

# find . -type f \( -name "*.zip" -o -name "*.txt" \)

Aquí ya tenemos una sintaxis un pelín más compleja, expliquemos paso a paso todo:

El . indica que queremos buscar en el directorio actual. Con -type f decimos que queremos buscar por tipo de fichero y que queremos archivos simples, no carpetas u ocultos. Entre paréntesis metemos la condición de lo que queremos buscar: con el -name indicamos que queremos buscar un patrón, que lo definimos a continuación entre comillas (el «*.zip» y el «*.txt», que vendrían a decir que queremos todo lo que acabe en esas extensiones) y el -o nos serviría como un operador lógico or. Si te fijas antes de cada paréntesis se ha introducido el carácter de escape \ para evitar posibles problemas de sintaxis.

Es decir, toda la clave es usar el -o para añadir más condiciones a la función de búsqueda, pudiendo así definir varios patrones.

Cerrar un terminal en Linux sin matar el proceso en ejecución

La idea es clara: ejecutamos un comando en segundo plano y queremos cerrar el terminal pero no matar el proceso ¿cómo lo hacemos?

Pongamos un ejemplo: queremos ejecutar rsync para copiar un volumen grande de ficheros de una carpeta a otra y queremos luego poder cerrar el terminal sin que se corte el proceso.

Lo primero es lanzar en segundo plano el rsync, para ello lo ejecutaremos añadiendo la instrucción & al final, que lo envía directamente a segundo plano (también se podría hacer con el comando bg, pero con & es más directo)

$ sudo rsync home/music/* usr/otro/home/music/ &

Y vamos con lo siguiente ¿cómo disociamos este proceso del terminal para poder cerrarlo? Pues basta con ejecutar disown

$ disown

Este comando básicamente lo que hace es impedir que el terminal envíe una orden de finalización al proceso cuando se cierra.

Otra opción es utilizar nohup, que ya lo ejecutaría disociado del terminal:

$ sudo nohup rsync home/music/* usr/otro/home/music/ &

Copiar ficheros a una carpeta propiedad de root en el entorno gráfico de Ubuntu o Elementary OS

El título es largo, sí, pero era lo que quería intentar en mi equipo: copiar unos ficheros de la carpeta Home a la carpeta /usr/share/games. Ok, podría hacerlo por línea de comandos, pero entonces no estaría escribiendo aquí. ¿Se puede hacer desde el entorno gráfico? Pues sí. Pulsas Alt+F2 para abrir el lanzador y allí tecleas gksu nautilus. Tan simple como eso, lanzas gksu nautilus, te pedirá contraseña, y tras insertarla ya puedes crear, mover o borrar ficheros de ahí en el entorno gráfico. Como siempre en estos casos hazlo con precaución, no borres lo que no debes.

Recuperando datos en Ubuntu con foremost

Una potente herramienta en línea de comandos para recuperar ficheros desde distintos sistemas: NTFS, fat, ext3, ext4, etc. Así podemos describir en una frase a foremost.

El primer paso con este software sería instalarlo mediante vía de comandos, por ejemplo mediante apt:

sudo apt-get install foremost

Una vez instalado nos toca proceder. Un punto a tener en cuenta es que no podemos recuperar los datos en el mismo dispositivo del que los estamos intentando recuperar, así que lo mejor será crear una carpeta en otro disco duro para volcar lo recuperado. Vamos a suponer, para nuestro ejemplo, que recuperamos datos de un USB llamado sdb y los guardaremos en el disco duro del equipo, que será el sda. En sda crearemos una carpeta que se llamará recuperado. Veamos ejemplos:

#El comando más básico es así:
sudo foremost -i /dev/sdb -o /sda/recuperado
#Tras el -i ponemos el dispositivo a recuperar.
#Tras el -o ponemos el destino de los archivos.
#Es posible recuperar datos también desde una imagen
#de disco.
#### Veamos más opciones ####
sudo foremost -w -i /dev/sdb -o /sda/recuperado
#Esta no recupera ficheros
#sino que extrae un listado de
#todo lo recuperable.
sudo foremost -t pdf -i /dev/sdb -o /sda/recuperado
#El parámetro -t permite
#definir un tipo de fichero
#y sólo recuperará los de ese tipo,
#en el ejmplo le pasamos pdf.

Como os decía arriba en los ejemplos, se puede recuperar sólo ficheros de un tipo concreto con -t. El listado de formatos de archivo recuperables es el siguiente: avi, bmp, cpp, doc, exe, gif, htm, jpg, mov, mpg, ole, pdf, png, rar, riff, wav, wmv o zip.