lunes, 1 de junio de 2020

Como actualizar un solo paquete en Debian/Ubuntu

Primero tendremos que actualizar la lista de paquetes con
apt update
Si solo queremos actualizar firefox, ejecutaremos el comando siguiente:
sudo apt install --only-upgrade firefox

domingo, 6 de octubre de 2013

Instalar unrar-nonfree en Raspberry Pi

Primero desinstalamos unrar-free:

sudo apt-get remove unrar-free
 
Deberemos añadir las siguientes líneas a /etc/apt/sources.list

deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
 
Actualizamos la lista de nuevos repositorios

sudo apt-get update
 
Creamos un directorio y accemos a él

mkdir ~/unrar-nonfree && cd ~/unrar-nonfree
 
Instalamos las dependencias para el paquete unrar-nonfree
 
sudo apt-get build-dep unrar-nonfree
 
Descarmos el código fuente y generamos el .deb

sudo apt-get source -b unrar-nonfree
 
Instalamos el paquete creado

sudo dpkg -i unrar*.deb
 
Ya podemos eliminar el directorio creado.

 cd && rm -r ~/unrar-nonfree

martes, 24 de septiembre de 2013

Instalación de postgresql 9.2 en Fedora 19

En una consola, nos logamos como root.

su

Instalamos los paquetes necesarios para el servidor postgres así como las librerias cliente.

yum install postgresql postgresql-server postgresql-contrib

Podemos comprobar que todo ha ido bien iniciando el demonio, en Fedora por defecto no se iniciará ni se arrancará al reiniciar la máquina, tendremos que hacerlo nosotros.

systemctl start postgresql
systemctl enable postgresql

Ahora ingresaremos como el usuario postgres
su postgres
y creamos una base de datos de test

createdb test

Iniciamos la consola de postgres para la base de datos test

psql test

Y creamos un usuario para esta base de datos

CREATE ROLE testuser WITH SUPERUSER LOGIN PASSWORD 'test';

Iniciamos sesión y podemos empezar a trabajar

psql -h localhost -U testuser test

domingo, 10 de marzo de 2013

Configuración de grub2

GRUB_BACKGROUND="/boot/grub/miaimmagine"
En el caso de tener varios sistemas operativos en la misma máquina nos interesa conocer un poco uno de los gestores de arranque más populares, Grub2.

Los ficheros de configuración de grub los encontramos en /etc/default/grub y los scripts ubicados en /etc/grub.d
 
y la configuración en /boot/grub/

Algunos de los scripts que nos encontramos en /etc/grub.d

    * 00_header - Carga las opciones del archivo /etc/default/grub
    * 05_debian_theme -Configuración del tema: imagen de fondo y color de texto
    * 10_hurd - Para kernels Hurd
    * 10_linux - Para kernels Linux
    * 30_os-prober - Genera entradas para otros sistemas operativos instalados
    * 40_custom <-- Para agregar entradas a mano cuando os-prober no encuentra algún SO intalado

El archivo /etc/default/grub contiene información  para generar las entradas del nuevo grub.cfg. De entre las opciones de este archivo, las que más nos puede interesar suelen ser:

GRUB_CMDLINE_LINUX Si existe, agrega esta variable al final de la línea del kernel para todas las entradas del grub. Es símilar a "altoptions" en menu.lst.
GRUB_GFXMODE Cambia la resolución del grub.

GRUB_HIDDEN_TIMEOUT determina el número de segundos que se mostrara el grub en espera de que el usuario elija una entrada.

GRUB_HIDDEN_TIMEOUT_QUIET Toma uno de los valores true o false.
    * true No se mostrará la cuenta regresiva.
    * false Muestra la cuenta regresiva a partir del valor de GRUB_HIDDEN_TIMEOUT.

Otra variable útil sería GRUB_BACKGROUND="/boot/grub/miimagen" con la que podríamos cambiar el fondo de pantalla de grub.

Si modificamos algunas de estas variables deberemos volver a generar el fichero de configuración con:


grub-mkconfig -o /boot/grub/grub.cfg



domingo, 17 de febrero de 2013

Raspberry Pi - Configuración de un Web proxy

Vamos a utilizar Surrogafier para crear un web proxy en nuestra Raspberry Pi.

Suponemos que ya está instalado apache.

Vamos a crear un espacio para este proyecto.

mkdir 3-14
cd 3-14

Y descargamos surrogafier

wget http://bcable.net/archive.php?surrogafier-1.9.1b.php

Ahora ya podemos crear un link simbólico desde nuestra carpeta hacia el apache

sudo ln -s /home/pi/surro /var/www/surro

Si ya tenemos hecho esto, Raspberry Pi configuración de un dominio no-ip.

Entonces sólo nos quedará abrir el puerto en nuestro router y que apunte a la ip estática de nuestra raspberry. 

domingo, 10 de febrero de 2013

Raspberry Pi - Configuración de un servidor apache

Vamos a instalar y configurar un servidor apache en nuestra Raspberry Pi.

Para instalarlo

sudo apt-get install apache2

Para comprobar que todo está correcto, podemos ir a un navegador web y poner la dirección de la raspberry, en mi caso.

http://192.168.1.4/

Si nos muestra It works! , todo está correcto

Raspberry Pi configuración de un dominio no-ip

Este resumen no está disponible. Haz clic en este enlace para ver la entrada.

sábado, 9 de febrero de 2013

Instalando vnc en Raspberry Pi

Vamos a instalar un servidor vnc para conectarnos a nuestra Raspberry Pi utilizando un escritorio remoto.

El primer paso será instalar el siguiente paquete.

sudo apt-get install tightvncserver

Ahora debemos ejecutarlo, y éste nos pedirá un password.

tightvncserver

Ahora con la siguiente línea, iniciaremos un servidor VNC para el display (:0) con máxima resolución.

vncserver :0 -geometry 1920x1080 -depth 24

En este momento ya podemos iniciar un escritorio remoto, ahora sólo nos quedaría ponerlo en algún lugar para que cada vez que se iniciara el sistema el servidor estuviese funcionando.

echo vncserver :0 -geometry 1920x1080 -depth 24 >> /home/pi/.bashrc

Configurando Raspberry Pi con una dirección estática

Por defecto, cada vez que encendemos nuestra Raspberry se solicita una dirección ip mediante DHCP, en este caso al router. Nuestro objetivo será que la dirección de nuestra Raspberry sea siempre la misma.

En mi caso la dirección del router es 192.168.1.1, y la que se ha asignado a la raspberry es 192.168.1.14.

El primer paso será establecer una conexión mediante ssh.

ssh pi@192.168.1.14

Una vez establecida la conexión podemos empezar.

sudo cp /etc/network/interfaces /etc/network/interfaces.old
sudo nano /etc/network/interfaces



Y modificamos las lineas que definen la interfaz eth0.

Nos deberá quedar de la siguiente manera:


auto lo

iface lo inet loopback
iface eth0 inet static
address 192.168.1.4
netmask 255.255.255.0
gateway 192.168.1.1

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

En mi caso he elegido la dirección 192.168.1.5, ya que las direcciones entre el rango de 192.168.1.10 hasta 192.168.1.190, están reservadas para dhcp.

Ahora sólo nos quedará hacer un reboot o reiniciar el servicio de red

sudo reboot

domingo, 3 de febrero de 2013

Como redimensionar particiones con parted

Vamos a ver como redimensionar las una partición de nuestro disco duro. El primer paso será seleccionar el disco duro que queremos redimensionar.
# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)                         
En este caso, en el que sólo dispongo de un disco duro conectado, ya lo ha seleccionado de manera automática. En caso de que fuera otro, ejecutariamos
(parted) select /dev/sdb
Podemos ver las particiones actuales con el comando print
(parted) print                                                            
Model: ATA WDC WD3200BEVT-6 (scsi)
Disk /dev/sda: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size    Type      File system     Flags
 1      1049kB  177GB  177GB   primary   ext3            boot
 2      314GB   320GB  6164MB  extended
 5      314GB   320GB  6164MB  logical   linux-swap(v1)
En este caso nos interesará redimensionar la partición uno. Para eso deberemos indicarle el número de partición y el nuevo tamaño indicando el inicio y el final de la partición.
(parted) resize 1 1 170GB
Con esto estaremos dejando 7GB libres.

sábado, 2 de febrero de 2013

Como instalar vnc en debian

Vamos a instalar un servidor vnc en un debian, con lo que conseguiremos abrir un escritorio remoto a éste.

Primero debemos instalar vnc4server
apt-get install vnc4server


Una vez instalado deberemos asignarle un password con la siguiente orden:

vncpasswd
Password:
Verify: 

Nos pedirá un password y que lo verifiquemos

Ahora ya podemos lanzar el servidor

vncserver :1
New 'X' desktop is debian:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/debian:1.log


Ya tenemos el servidor funcionando, ahora desde otra máquina descargaremos vnc de http://www.realvnc.com/products/free/4.1/download.html

Una vez descargado e instalado, nos solicitrá la dirección del server y el número de terminal, en nuestro caso el 1

192.168.1.14:1

Y después de esto nos solicitará el password que hemos introducido anteriormente.

Para terminar con el servicio

vncserver -kill :1

Podemos iniciar el servicio indicando la resolución de pantalla y la profundidad de color de la siguiente manera.

vncserver :1 -geometry 800x600 -depth 24 

sábado, 26 de enero de 2013

Como crear un paquete .deb en Debian

Primero vamos a crear un directorio de trabajo y crearemos el fichero básico.

# mkdir primer_deb
# cd primer_deb
# mkdir -p usr/bin
# nano usr/bin/primer_deb

Le damos permisos de ejecución

# chmod +x usr/bin/primer_deb

Ahora lo empaquetamos y lo comprimimos

# tar czvf datos.tar.gz usr/bin

Ahora escribimos el fichero de control
# nano control

Y ponemos

Package: primero
Version: 0.1
Priority: optional
Architecture: all
Installed-Size: TODO
Maintainer: user root
Description: Creacion primer paquete debian!
Empaquetamos y compromimos

# tar czvf control.tar.gz control
Creamos el último fichero

echo 2.0 > debian-binary
Por último nos quederá empaquetarlo todo con ar

# ar -r primer_deb.deb debian-binary control.tar.gz datos.tar.gz
Ahora ya disponemos del paquete y lo podemos instalar

# dpkg -i primer_deb.deb

domingo, 20 de enero de 2013

Backup/Restore usando el comando dd

Con el comando dd podemos hacer copias de seguridad de todo un disco duro. Con esto vamos a conseguir una imagen completa del disco rápidamente.

Para realizar una copia completa del disco y comprimirla podemos hacer

dd if=/dev/sda | gzip> /home/vm/image.gz 


Ahora tendríamos una imagen de nuestro disco duro, y si quisiéramos restaurarla podríamos hacer:

gzip-dc /home/vm/image.gz | dd of=/dev/sda


También deberíamos copiar el MBR, para esto

dd if=/dev/sda of=/home/vm/image count=1 bs=512


y para restaurarlo:

dd if=/home/vm/image of=/dev/sda

viernes, 7 de diciembre de 2012

Comando sed

Orden Sed

Sintaxis: sed [-f fichero_ordenes] [-n] [archivo]

La herramienta sed es un editor de flujo(stream editor) utilizado para manipular archivos de texto. Sed copia los archivos especificados en la salida estándar después de procesarlos. Este procesamiento de los archivos de entrada se lleva a cabo línea por línea, acorde con las órdenes dadas a sed. Podemos destacar que sed no modifica los archivos de entrada. Las órdenes que procesa sed pueden ser aportadas explícitamente desde la línea de órdenes, o bien éstas pueden residir en un archivo. En este último caso, utilizamos la opción -f y a continuación el nombre del fichero de órdenes. La opción -n será empleada siempre que deseemos evitar la salida por pantalla de la línea que está procesando(por defecto sed visualiza las líneas que procesa, aunque no haga nada)

El aspecto general de las órdenes sed es el siguiente:
[dirección [, dirección ]] función [argumentos]
En éstas se indica la dirección (número de línea) o rango de direcciones a las cuales se debe aplicar la función indicada con sus posibles argumentos.
La mejor manera de entender el funcionamiento de sed es mediante ejemplos, veamos:
Creamos un fichero que contenga el siguiente texto



$ cat fichero
linea primera
linea segunda
linea tercera

linea cuarta
linea quinta


Seleccionar una línea

En este primer ejemplo, imprimimos por pantalla la línea número 3. y especificamos la función p(print), con esto se mostrará lo siguiente.

$sed 3p fichero
linea primera
linea segunda
linea tercera
linea tercera

linea cuarta
linea quinta

Como vemos, sed imprime las líneas del archivo, y la número 3 sale duplicada, por ser la línea que indicamos a sed que sea procesada (impresa en pantalla). Si ahora eliminamos la salida normal con la opción -n, conseguiremos mostrar sólo la línea indicada.

$ sed -n 3p fichero
linea tercera

Seleccionar un rango

En este ejemplo imprimiremos desde la línea 2 hasta la 3.

$ sed -n 2,3p fichero
linea segunda
linea tercera
Los rangos de direcciones, o las direcciones, pueden ser también especificados en forma de expresión regular. De esta manera se podría imprimir desde la primera línea que comienza con un determinado carácter hasta que se encuentre una línea que esté en blanco o algo similar.

$ sed -n /primera$/,$p fichero
linea primera

En el ejemplo anterior mostramos todas las líneas que acaban con la palabra primera. Mediante expresiones regulares también podemos especificar un rango de direcciones, por ejemplo: 



$ sed -n '/segunda$/,$p' fichero
linea segunda
linea tercera

linea cuarta
linea quinta
En este caso desde la linea que acaba con segunda hasta la última línea del fichero, representada por $.


Sustitución

Con la opción s podemos sustituir palabras y con la opción g para indicar que se aplique en todo el documento, por ejemplo
$ sed 's/linea/fila/g' fichero
fila primera
fila segunda
fila tercera

fila cuarta
fila quinta

En el siguiente ejemplo eliminaremos todos los espacios en blanco.

$ sed 's/ //g' fichero
lineaprimera
lineasegunda
lineatercera
lineacuarta
lineaquinta

Operador &

Se sustituye por el patrón reconocido
Ejemplo:
reemplaza primera por <primera>


$ sed 's/primera/<&>/g' fichero
linea <primera>
linea segunda
linea tercera
linea cuarta
linea quinta
Eliminar líneas

Para eliminar desde la línea 1 a la 3.



$ sed '1,3d' fichero

linea cuarta
linea quinta

Si quisiéramos eliminar las líneas que terminan con era:



$ sed '/era$/d' fichero
linea segunda

linea cuarta
linea quinta
Fichero con órdenes

Si creamos un fichero que contenga la siguiente línea



$cat orden
s/a/XXX/g

Al indicarle a sed que utilize este archivo de órdenes para procesar otros archivos, cualquier carácter a será sustituido por XXX. Por ejemplo:

$ sed -f ord fichero
lineXXX primerXXX
lineXXX segundXXX
lineXXX tercerXXX
lineXXX cuXXXrtXXX
lineXXX quintXXX

Insertar y cambiar líneas


Insertar antes de una línea:



$sed '/segunda$/i\ insertamos linea antes' fichero
linea primera linea
insertamos linea antes
linea segunda
linea tercera
linea cuarta
linea quinta

Insertar un línea después de la línea que coincida con el patron.



$ sed '/segunda$/a\ insertamos linea despues' fichero
linea primera linea
linea segunda
insertamos linea despues
linea tercera
linea cuarta
linea quinta

Con la opción c podemos sustituir las lineas que cumplan con el patron




$ sed '/segunda$/c\ sustituimos la linea' fichero
linea primera linea
sustituimos la linea
linea tercera
linea cuarta
linea quinta

domingo, 2 de diciembre de 2012

Backup Raspberry Pi

Si tenemos instalado el sistema operativo en la tarjeta SD, es una buena idea realizar un backup de esta.

sudo dd bs=1M if=/dev/sdh of=backupRaspberry2-12-2012.img

Con esto tendremos una imagen del sistema en ese momento.

sábado, 1 de diciembre de 2012

Configurando wifi en raspberry pi.

Vamos a configurar la wifi para Raspberry Pi. En este caso particular tenemos una red ONO que está encriptada con WPA.

En primer lugar miramos las redes para ver cual es la nuestra:
$ iwlist wlan0 scan

En segundo lugar añadimos la contraseña y el essid a un fichero.
$ wpa_passphrase "ESSID" CONTRASEÑA >> /etc/wpa_supplicant/wpa.conf

Tendrá un formato parecido al siguiente:
network={
 ssid="ONOXXXX"
 key_mgmt=WPA-PSK
 psk="XXXXXXXXXXX"
 
}

También podemos hacerlo nosotros mismos. Ahora ya podemos intentar asociarnos.
$ wpa_supplicant -iwlan0 -dnl80211 -c /etc/wpa_supplicant/wpa.conf 

Si todo ha salido bien tendremos funcionando el wifi en la interfaz wlan0.
root@raspberrypi:/home/pi# ifconfig 
eth0      Link encap:Ethernet  HWaddr b8:27:xx:xx:xx:xx  
          inet addr:192.168.1.17  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1488  Metric:1
          RX packets:3128 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2461 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:164652 (160.7 KiB)  TX bytes:181438 (177.1 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:560 (560.0 B)  TX bytes:560 (560.0 B)

wlan0     Link encap:Ethernet  HWaddr 00:1a:xx:xx:xx:xx  
          inet addr:192.168.1.18  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:739 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:102641 (100.2 KiB)  TX bytes:2816 (2.7 KiB)
Por último podemos agregar las siguientes líneas al fichero /etc/network/interfaces.
echo "wpa-driver nl80211" >> /etc/network/interfaces
echo "wpa-conf /etc/wpa_supplicant/wpa.conf" >> /etc/network/interfaces

domingo, 25 de noviembre de 2012

Comando tr

Orden tr

Sintaxis:

tr [-dsc] cadena1 cadena2

La orden tr se emplea como traductor. Como todo filtro, tr lee datos en la entrada estándar, los procesa y muestra los resultados en la salida estándar. Supongamos que tenemos un fichero con las siguientes líneas:
$cat fichero
Este es un archivo de texto 
QUE CONTIENE MAYUSCULAS Y minusculas.
Veamos como funciona mediante ejemplos:

Sustituir caracteres

Sustituimos todos los caracteres del rango A a Z a sus equivalentes en el rango a a z.

$ tr "[A-Z]" "[a-z]" < fich 
este es un archivo de texto 
que contiene mayusculas y minusculas. 

Sustituimos todos los caracteres del rango a a z a sus equivalentes en el rango A a Z.
tr "[a-z]" "[A-Z]" < fich 
ESTE ES UN ARCHIVO DE TEXTO 
QUE CONTIENE MAYUSCULAS Y MINUSCULAS.

También podemos sustituir un rango de carácteres por un carácter cualquiera: Convertimos el rango de caracteres de la A a la Z por el carácter x.
tr "[A-Z]" x < fich 
xste es un archivo de texto 
xxx xxxxxxxx xxxxxxxxxx x minusculas.

Eliminar determinados caracteres

opción -d

$ tr -d "[A-Z]" < fich 
ste es un archivo de texto 
    minusculas.


Eliminar caracteres repetidos 

Imagina un fichero con el siguiente texto:

$cat fichero
Aqquuuiii tttteeeennngggoo cccciiiiiieeeeerrrrttttooooossss ccccaaarrraaacccctttteeerrreeeesss rrrreeeepppeeettttiiidddddooooossssss

$ tr -s "[a-z]" < fich2 
Aqui tengo ciertos caracteres repetidos 

Indicar complementario

 En este ejemplo le indicamos que sustituya los caracteres que no sean minúsculas por espacios.
$ tr -c "[a-z]" " " < fich 
 ste es un archivo de texto                            minusculas

sábado, 27 de octubre de 2012

Qué es umask?

Umask La máscara de usuario (umask) se utiliza para determinar los permisos de archivo para los archivos recién creados. Se puede utilizar para controlar los permisos de los nuevos archivos de forma predeterminada. Como parámetro umask recibe un número de cuatro dígitos octales. Configurando umask Podemos configurar el valor de umask para el propio usuario en /etc/.bashrc o /etc/profile para todos los usuarios. Por defecto, la mayoría de distribuciones Linux tienen establecido umask en 0022 (022) o 0002 (002).
$ echo "umask 022" >> ~/.bashrc
Los cambios tendrán efecto después de reiniciar sesión. El umask por defecto 0002 se utiliza para los usuarios normales. Con esta máscara, los permisos predeterminados de directorio son 775, y los permisos de archivo son 664. El umask por defecto para el usuario root es 0022, y como resultado, los permisos predeterminados de directorio son 755, y los permisos de archivo son 644. Para los directorios, los permisos de base es 0777 (rwxrwxrwx) y para los archivos son 0666 (rw-rw-rw). Para calcular los permisos de directorio para un valor umask de 022 (usuario root) haremos lo siguiente:

777-022 = 755
Para calcular los permisos de archivo para un valor umask de 022 (usuario root) haremos lo siguiente: 666-022 = 644
En el ejemplo siguiente veremos los pasos necesarios para establecer un valor umask que nos hará que los valores de los permisos para los directorios 700 y 600 para los archivos de usuario. De esta manera sólo el usuario podrá leer o escribir el archivo, o acceder a los contenidos del directorio.
$ umask 077
$ touch archivo.txt
$ mkdir directorio
$ ls -ld archivo.txt directorio
Salida:
drwx------ 2 vill vill 4096 2012-10-27 02:21 directorio
-rw------- 1 vill vill    0 2012-10-27 02:21 archivo.txt

sábado, 13 de octubre de 2012

Script bash - validar dni

Aquí tenéis un pequeño script en bash, para validar si un DNI es correcto o no.
#!/bin/bash

cadena="TRWAGMYFPDXBNJZSQVHLCKET";

longitud=${#1}
if [ "$longitud" -eq 9 ]
then
 posicion=`expr ${1:0:8} % 23`
 letra=${cadena:posicion:1}
 letradaentrada=`echo ${1:8} | tr [a-z] [A-Z]`

 if [ $letra == $letradaentrada ]
 then 
  echo "número DNI correcto"
  exit 0
 else 
  echo "letra inválida"
  exit 1
 fi
else
 echo "Longitud errónea"
 exit 1
fi

exit 0
Ejecutamos d la siguiente manera.
# bash dni.sh 41033454s
letra inválida

Inodo - Enlaces simbólicos y enlaces duros

El inodo (nodo índice) en el sistema de archivos de Linux, es el identificador único para cada objeto en el sistema de archivos. Para todos y cada uno de los archivos en Linux encontraremos los siguientes atributos:

  • Tipo de archivo (ejecutable, bloque especial, etc) 
  • Permisos (leer, escribir, etc) 
  • Propietario 
  • Grupo 
  • Tamaño del Archivo 
  • Acceso al archivo, el cambio y hora de modificación (recuerdar que Linux no almacena el momento de creación)
  • Número de enlaces (soft / hard) 
  • Lista de Control de Acceso (ACL)  


Toda esta información es la que se almacena en un inodo. Cada inodo está identificado por un número único dentro del sistema de archivos. definición de inodo Un inodo es una estructura de datos en un sistema de archivos al estilo Unix, como UFS o ext3. El inodo almacena información básica sobre un archivo regular, directorio, o cualquier otro objeto del sistema de archivos. ¿Cómo podemos ver el número de inodo de un archivo? Puede utilizar el comando ls-i para ver el número de inodo de archivo
$ ls -i /etc/passwd
32820 /etc/passwd
También podemos utilizar el comando stat para averiguar el número de inodo y sus atributos:
$ stat /etc/passwd

Archivo: `/ etc / passwd '
Tamaño: 1988 Blocks: 8 IO Block: 4096 archivo normal
Dispositivo: Inode 341h/833d: 32820 Enlaces: 1
Acceso: (0644/-rw-r--r--) Uid: (0 / root) gid: (0 / root)
Acceso: 2005-11-10 01:26:01.000000000 0530
Modificar: 2005-10-27 13:26:56.000000000 0530
Cambio: 2005-10-27 13:26:56.000000000 0530
Inodo aplicación Muchos de comandos a menudo dan números de inodo para designar un archivo. Vamos a ver.
 
$ ls -li /etc/passwd
12886034 -rw-r--r-- 1 root root 1903 sep 28 13:01 /etc/passwd
Si escribimos los siguientes comandos:
$ cd / tmp
$ touch \ "la *
$ ls -l
Ahora si ententamos eliminar el archivo "la *, veremos que no es posible. No podremos eliminar los archivos si los hemos creado con caracteres de control o un carácter especial como?, * ^ Etc. En estos casos tendremos usar el número de inodo para eliminar archivos.
# ls -i 
# ls -i *
2781528 index.php    2781559 ??!
# find . -inum 2781559 -exec rm -i {} \;
Enlaces duros y simbólicos Para crear un enlace duro utilizamos el comando ln de la siguiente forma:
# ln /root/file1 root/file2 /
# ls -l
Con los comandos anteriores creamos un enlace al file1. Con esto creamos un nuevo apuntador hacia el inodo donde se almacenaba la información de file1 Los enlaces simbólicos se refieren a:
  • Una ruta simbólico que indica la ubicación de otro archivo.
  • Los enlaces físicos se refieren a:
  • La ubicación específica de los datos físicos.
  • Enlaces fijos vs Soft enlace en Linux
  • Los enlaces duros no pueden enlazar directorios.
  • Los enlaces blandos o simbólicos son como enlaces duros. Se permite asociar varios nombres hacia un solo archivo.
  • Sin embargo, los enlaces simbólicos nos permiten:
  • Crear enlaces entre los directorios.
  • Estos enlaces se comportan de forma diferente cuando la fuente del enlace está eliminado.
  • Los enlaces simbólicos no se actualizan.
  • Los enlaces duros siempre hacen referencia a la fuente, incluso si se mueven o eliminan.
  • ¿Cómo creamos un enlace simbólico? Podemos crear un enlace simbólico con el comando ln:
    $ ln -s /home/user/file1.txt /home/user/file2.txt
    $ ls -ali
    
    Con el comando anterior crearemos un enlace simbólico a file1.txt. Tarea: creación de enlaces simbólicos y eliminación Vamos a crear un directorio llamado foo, escribimos:
    $ mkdir foo
    $ cd foo
    
    Copiamos el archivo /etc/resolv.conf:
    $ cp /etc/resolv.conf .
    
    Observar el número de inodo y escribir:
    $ ls -ali
    
    152 Total
    1048600 drwxr-xr-x 2 vivek vivek 09/12/2008 20:19 4096.
    1015809 drwxrwxrwt root root 220 143 360 12.09.2008 20:19 ..
    1048601-rwxr-xr-x 1 vivek vivek 09/12/2008 20:19 129 resolv.conf
    Ahora crear enlace simbólico al resolv.conf, introduzca:
    $ ln -s alink.conf resolv.conf
    $ ls -ali
    
    152 Total
    1048600 drwxr-xr-x 2 vivek vivek 09/12/2008 20:24 4096.
    1015809 drwxrwxrwt root root 220 143 360 12.09.2008 20:19 ..
    1048602 lrwxrwxrwx 1 vivek vivek 09/12/2008 20:24 11 alink.conf -> resolv.conf
    1048601-rwxr-xr-x 1 vivek vivek 09/12/2008 20:19 129 resolv.conf
    
    El contador de referencias del directorio no ha cambiado (total 152). Nuestra simbólico enlace se almacena en un inodo diferente que el archivo de texto (1048602). La información almacenada en resolv.conf es accesible a través del archivo de alink.conf. Si borramos el archivo de texto resolv.conf, alink.conf se convierte en un vínculo roto y nuestros datos se pierden:
    $ rm resolv.conf
    $ ls -ali
    
    Si alink.conf era un vínculo físico, los datos todavía serían accesibles a través de alink.conf. Además, si se elimina el enlace simbólico en sí, los datos todavía estarían allí.