Tema 5: Seguridad y Permisos de Archivos
Peso: 7
5.1: Seguridad Básica e Identificación de Tipos de Usuarios
Peso: 2
Linux es un sistema operativo multiusuario. con o el nombre sugiere, este tipo de sistema operativo permite que diferentes usuarios utilicen el sistema de modo independiente. el sea, diferentes personas pueden utilizar el mismo sistema operativo sin que sus archivos y personalizaciones estén accesibles a otros usuarios.
Diferentes usuarios pueden utilizar el sistema operativo al mesmo tempo. A pesar de no ser común que una misma computadora posea más de un teclado y monitor, es bastante común que diversos usuarios utilicen el mismo sistema vía red.
Otra ventaja en mantener los usuarios en cuentas distintas es poder controlar sus privilegios dentro del sistema. Un usuario debe poder trabajar con sus archivos y tener acceso restricto a ciertos recursos de la computadora, pero no debe tener acceso a archivos de terceros o a recursos que pueden perjudicar el funcionamiento del sistema operativo. El único usuario que posee acceso irrestricto dentro del sistema operativo es el usuario root.
El usuario root
El principal usuario de un sistema Unix es el usuario llamado root.
Es creado de manera predeterminada y es utilizado para configurar el
sistema operativo y corregir eventuales problemas. También es el único
usuario cuyo directorio personal no está en el directorio predeterminado
de usuarios, /home
, sino en la raíz del sistema de
archivos, en /root
.
Contraseña de root
La contraseña del usuario root normalmente se define durante la instalación del sistema operativo. En algunos casos, no es atribuida una contraseña al usuario root, y será necesario utilizar el comando
sudo
para realizar operaciones de root.
Debido a su permisos irrestrictos en el sistema operativo, es importante tener mucho cuidado cuando se utiliza el usuario root. Aún tratándose de una computadora personal utilizada por una sola persona, es recomendable operar la computadora con un usuario convencional.
Usuarios convencionales y de sistema
El usuario root es el responsable de crear usuarios en el sistema
local. Todas las cuentas de usuario son almacenadas en el archivo de
configuración /etc/passwd
. El usuario root también puede
asociar un usuario a un grupo para conferirle privilegios extras. Los
grupos del sistema y los usuarios asociados a ellos son almacenados en
el archivo /etc/group
.
Todo usuario está asociado a por lo menos un grupo, llamado su grupo principal. el grupo principal es único, pero el usuario puede estar asociado a diversos otros grupos.
Cada usuario y grupo poseen un número único asociado, llamado
respectivamente UID y GID. El único usuario con un
número predeterminado es el root, con número UID 0. Los números de un
usuario y de sus grupos pueden ser observados con el comando id
.
Sin argumentos, el comando id
muestra el número del
usuario actual y los grupos a los que pertenece:
$ id
uid=13130(epet1) gid=207(bmac) groups=207(bmac)
En este ejemplo, el número (uid) del usuario epet1 es 13130, el número de su grupo principal (bmac) es 207 y está asociado solamente a este grupo. Los números son generados automáticamente, generalmente se atribuyen números a partir de 1000 para usuarios convencionales.
Los usuarios con unes pueden ejecutar tareas normalmente reservadas al
root con el comando sudo
. Por ejemplo, para utilizar el
comando administrativo apt-get dist-upgrade
con sudo
:
$ sudo apt-get dist-upgrade
El comando sudo
puede ser configurado para restringir
diferentes tipos de acción a usuarios específicos, solicitando o no una
contraseña. También puede ser usado con el comando su
para
iniciar una nueva sesión del shell con o otro usuario, con el comando sudo
su usuario
, donde usuario es el nombre de login del
otro usuario. En caso que la cuenta de root tenga una contraseña
definida, puede ser utilizado el comando su
directamente:
$ su -
En este caso será necesario proporcionar la clave de root para continuar.
Además de los usuarios convencionales, existen usuarios especiales llamados usuarios de sistema. Estos usuarios no corresponden a una persona, sino a alguna tarea del sistema operativo. Este abordaje ofrece una capa adicional de seguridad, pues programas ejecutados por un usuario no pueden interferir con archivos y procesos que no le pertenecen.
Inspección de usuarios
El usuario root puede interferir en procesos de otros usuarios y
modificar sus archivos. El usuario root puede incluso verificar quien
está usando el sistema con el comando who
. Con el
comando w
el usuario root puede verificar quien está
utilizando el sistema y su actividad en ese momento.
El comando lastlog
muestra cuando fue la última vez que
cada usuario entró al sistema:
$ lastlog -t 2
Nombre de usuario Porta De Último
guillermo pts/1 143.107.45.1 Jue Feb 27 09:14:45 -0300 2019
lucas pts/1 143.107.45.1 Mar Feb 26 10:23:34 -0300 2019
gustavo pts/1 143.107.45.1 Mar Feb 26 19:47:28 -0300 2019
hugo pts/2 143.107.45.1 Mar Feb 26 19:17:22 -0300 2019
felipe pts/1 c-73-208-7-86.hs Mar Feb 26 15:39:21 -0300 2019
silvia pts/1 179.225.189.179 Jue Feb 27 08:57:10 -0300 2019
daniel pts/2 189.22.15.69 Jue Feb 27 09:57:19 -0300 2019
La opción -t 2
fue utilizada para limitar la inspección a
los últimos dos días. Es posible verificar de dónde el usuario ingresó
al sistema y cual fue la fecha y hora exactas del login.
El comando last
tiene una finalidad semejante, pero
muestra los últimos ingresos de usuarios al sistema. Para verificar los
últimos ingresos de un usuario específico, basta con agregar su nombre
de usuario con o argumento:
$ last daniel daniel pts/2 189.22.15.69 Mie Feb 27 09:57 still logged in daniel pts/1 189.
22.15.69
Mar Feb 26 17:27 - 17:32 (00:04) daniel pts/1 189.
22.15.69
Mar
Feb 26 16:29 - 17:15 (00:46) daniel pts/0 189.
22.15.69
Mie
Feb 20 16:24 - 16:27 (00:02) daniel pts/0 189.
22.15.69
Mie
Feb 20 16:24 - 16:24 (00:00) wtmp begins Fri Feb 1 13:48:21 2019
El comando last reboot
muestra cuando el sistema fue
encendido por última vez, o sea, desde cuando está activo. El usuario
root puede verificar también se hubo intentos infructuosos de ingreso al
sistema con el comando lastb
.
5.2: Creación de usuarios y Grupos
Peso: 2
En ambientes donde más de una persona utiliza la computadora o utiliza sus recursos vía red, es muy importante que cada una de ellas posea restricciones para que no con prometa datos sensibles, sean pertinentes al propio sistema o a otros usuarios. Para eso, para cada usuario se crea una cuenta con la que accederá al sistema.
Corresponde al usuario root administrar las cuentas y grupos de usuarios. Sin embargo, pude modificar algunos aspectos de su propia cuenta en el sistema.
Cuenta de usuario
El comando useradd
es usado por el usuario root para
crear una nueva cuenta en el sistema. Las principales opciones del useradd
son:
-c comentario
: comentario (generalmente el nombre completo del usuario).-d directorio
: ruta al directorio personal del usuario.-g grupo
: grupo inicial (GID). Precisa existir previamente en el sistema.-G grupo1,grupo2
: grupos adicionales, separados por con a.-u UID
: UID (User ID) del usuario.-s shell
: Shell predeterminado para el usuario.-p contraseña
: contraseña (entre comillas).-e fecha
: fecha de vigencia de la cuenta.-k /etc/skel
: copia el directorio modelo/etc/skel
.-m
: crea el directorio personal, se no existe.
Con la opción -k /etc/skel
se pueden crear nuevos
directorios personales poden a partir de un contenido preestablecido
almacenado en /etc/skel
. Este procedimiento facilita la
creación de varias cuentas de usuario a partir de un perfil predefinido.
Para que el usuario pueda acceder a su cuenta, el administrador
precisará definir una contraseña para él. Esto puede ser hecho por medio
del comando passwd usuario
. Usado sin argumentos, passwd
modifica la contraseña para el usuario actual, algo que puede ser hecho
por un usuario común. El comando passwd
también puede ser
utilizado por el usuario root para bloquear la cuenta de un usuario. Por
ejemplo, la cuenta del usuario daniel puede ser bloqueada
con el comando passwd -l daniel
. La cuenta podrá ser
desbloqueada con el comando passwd -u daniel
.
El campo de descripción puede ser modificado con el comando chfn
y el shell principal puede cambiarse con chsh
. Los
usuarios comunes pueden usar estos comandos para modificar
exclusivamente sus propias cuentas.
Una cuenta de usuario puede ser eliminada con el comando userdel
.
La opción -r
asegura que el directorio personal del
usuario también sea eliminado.
La información de la cuenta de los usuarios del sistema es almacenada
en el archivo /etc/passwd
, en el formato:
root:x:0:0::/root:/bin/bash
daniel:x:1000:1000:Daniel Armando Rodriguez:/home/daniel:/bin/bash
Cada usuario es definido en una linea, en campos separados por “:” representando, respectivamente:
- Nombre de Login.
- Contraseña (“x”cuando se usa el archivo
/etc/shadow
). - Número de identificación del usuario (UID).
- Número del grupo principal del usuario (GID).
- Descripción del usuario (opcional).
- Directorio personal para el usuario.
- Shell inicial del usuario (si estuviera vacío, el shell
predeterminado
/bin/sh
será usado).
Para editar directamente el archivo /etc/passwd
, se
recomienda usar el comando vipw
, que bloquea el archivo /etc/passwd
contra posibles modificaciones concurrentes, evitando corrupción del
archivo. La edición será hecha con el editor predeterminado, como
regla general el editor vi. Usado con la opción -s
,
vipw
abrirá para edición el archivo /etc/shadow
.
Contraseñas shadow
El archivo /etc/passwd
puede ser leído por cualquier
usuario, lo que puede tornar las contraseñas criptografiadas pasibles de
decodificación. Para evitar esa posibilidad, se u un segundo archivo,
accesible solo por el usuario root, el archivo /etc/shadow
.
Las contraseñas de los usuarios son almacenadas en un hash
criptografiado que no puede ser fácilmente decodificado.
Al igual que en el archivo /etc/passwd
, los campos del
archivo /etc/shadow
son separados por “:”,
correspondientes a:
- Nombre de usuario, que debe corresponder a un nombre válido en
/etc/passwd
. - La contraseña criptografiada. En blanco permite login sin contraseña. Con un asterisco “*” indica que la cuenta está bloqueada.
- La cantidad de días (desde 01/01/1970) desde que la contraseña fue modificada.
- Cantidad mínima de días hasta que una contraseña pueda ser modificada nuevamente. El número cero “0” permite modificar la contraseña sin tiempo de espera.
- Cantidad de días después de los cuales la contraseña deberá ser modificada. El valor predeterminado es 99999, o 274 años.
- Cantidad de días para informar al usuario sobre la expiración de su contraseña.
- Cantidad de días, después de que expira la contraseña, hasta que la cuenta sea bloqueada.
- Cantidad de días, a partir de 01/01/1970, desde que la cuenta fue bloqueada.
- Campo reservado.
chage
, con las
siguientes opciones:
-m días
: mínimo de días hasta que el usuario pueda cambiar una contraseña modificada.-M
días
: número máximo de días que la contraseña permanecerá válida.-d
días
: número de días transcurridos en relación al 01/01/1970. Determina cuando se cambió la contraseña. También se puede expresar en formato de fecha local (día/mes/año).-E
días
: número de días transcurridos en relación al 01/01/1970, a partir de los cuales la cuenta ya no estará disponible. También puede ser se puede expresar en formato de fecha local (día/mas/año).-I
días
: inactividad o tolerancia de días, después de la expiración de la contraseña, para que la cuenta sea bloqueada.-W
días
: días anteriores al fin de la validad de la contraseña, cuando será emitido un aviso sobre la expiración de la validez.
Para usuarios comunes, el chage
sólo puede ser usado
con la opción -l usuario
, que muestra las
restricciones referentes al usuario en cuestión. El comando usermod
agrega las funciones de modificación de la cuenta de usuario por medio
de las opciones:
-c descripción
: descripción del usuario.-d directorio
: modifica el directorio del usuario. Con el argumento-m
, mueve el contenido del directorio actual al nuevo.-e valor
: plazo de validez de la cuenta, especificado en el formato dd/mm/aaaa.-f valor
: número de días, después que la contraseña haya expirado, hasta que la cuenta sea bloqueada. Un valor-1
cancela esa función.-g grupo
: grupo principal del usuario.-G grupo1,grupo2
: grupos adicionales para el usuario.-l nombre
: nombre de login del usuario.-p contraseña
: contraseña.-u UID
: número de identificación (UID) del usuario.-s shell
: shell predeterminado del usuario.-L
: bloquea la cuenta del usuario, colocando un signo ! adelante de la contraseña criptografiada. Una alternativa es substituir el shell predeterminado del usuario por un script o programa que informe las razones del bloqueo.-U
: desbloquea la cuenta del usuario, retirando el signo ! de adelante de la contraseña criptografiada.
Los archivos /etc/passwd
y /etc/shadow
almacenan solamente las informaciones directamente relacionadas a cada
cuenta de usuarios. Los grupos de usuarios son configurados en sus
propios archivos de configuración.
Grupos de usuarios
Para crear un grupo de usuarios, se usa el comando groupadd
:
# groupadd estudio_c
El número de identificación del grupo (GID) puede ser especificado
con la opción -g
. Para eliminar un grupo, se usa el
comando groupdel
:
# groupdel estudo_c
Un usuario podrá ser incluido/excluido de un grupo con el comando gpasswd
,
utilizando el argumento adecuado. Las opciones más comunes del gpasswd
son:
gpasswd grupo
: crea una contraseña para grupo.gpasswd -r grupo
: borra la contraseña para grupo.gpasswd -a usuario grupo
: asocia usuario al grupo.gpasswd -d usuario grupo
: excluye usuario de grupo.gpasswd -A usuario grupo
: torna un usuario administrador de grupo.
Un usuario puede pertenecer a más de un grupo, pero sólo un grupo puede
ser el principal. Para mostrar los grupos a los cuales un usuario
pertenece, se puede usar el comando groups usuario
. Usado
sin argumentos, el comando groups
muestra los grupos
del usuario actual.
La información sobre los grupos existentes en el sistema es almacenadas
en el archivo /etc/group
. En este archivo, cada grupo es
definido en una linea, en campos separados por :,
representando:
- Nombre del grupo.
- Contraseña para el grupo (x si se utiliza
/etc/gshadow
). - Número de identificación del grupo (GID).
- Lista de miembros del grupo, separados por coma.
Para editar directamente el archivo /etc/group
, es muy
recomendable usar el comando vigr
, que bloquea el archivo
/etc/group
contra posibles modificaciones externas,
evitando la corrupción del archivo.
El comando groupmod
agrega algunas funciones de
modificación de grupos. Sus opciones más comunes son:
-g GID
: cambia el número (GID) del grupo.-n nombre
: cambia el nombre del grupo.
La principal finalidad de los grupos es permitir que los usuarios ejecuten actividades que no son permitidas fuera del grupo en cuestión. Esas actividades se relacionan principalmente a la lectura y escritura en archivos y directorios restringidos. Por lo tanto, es importante comprender como funciona el sistema de permisos de archivos en ambientes Unix.
5.3: Control de Permisos y Propriedad de Archivos
Peso: 2
En sistemas de archivos del estándar Unix, existen reglas de permisos que determinan a quien pertenece un determinado archivo o directorio y cuales usuarios o grupos pueden utilizarlos. Para archivos y directorios hay tres niveles de permiso:
- usuario propietario del archivo (u).
- Grupo propietario del archivo (g).
- Demás usuarios – otros – (o).
El directorio /var/run
contiene archivos con diferentes
tipos de permisos, identificados en la primera columna:
drwx------ 2 root root 40 feb 26 10:08 cryptsetup
drwxr-xr-x 3 root lp 80 feb 26 10:08 cups
srw-rw-rw- 1 root root 0 feb 26 10:08 .heim_org.h5l.kcm-socket
drwxrwxr-x 2 lightdm lightdm 40 feb 26 10:08 lightdm
drwxr-x--- 2 root root 40 feb 26 10:08 pptp
-rw-r--r-- 1 root root 4 feb 26 10:08 crond.pid
drwx------ 2 root root 40 feb 26 10:51 udisks2
srw-rw-rw- 1 root root 0 feb 26 10:08 secrets.socket
drwxr-x--- 2 chrony chrony 80 feb 27 09:00 chrony
prw------- 1 root root 0 feb 26 10:08 dmeventd-server
drwx------ 2 rpc rpc 60 feb 26 10:08 rpcbind
drwxrwxr-x 2 root root 40 feb 26 10:08 netreport
-rw-r--r-- 1 root root 5 feb 27 09:00 dhclient6-enp0s25.pid
prw------- 1 root root 0 feb 26 10:08 initctl
La primera letra representa el tipo del archivo, puede ser:
-
: archivo convencional.d
: directorio.l
: Enlace simbólico.c
: Dispositivo especial de caracteres.p
: Canal fifo.s
: Socket.
Las demás letras se dividen en grupos de tras, determinando los
permisos para el propietario del archivo, el grupo del archivo y demás
usuarios, respectivamente. El archivo crond.pid
, por
ejemplo, posee permisos rw-
para el propietario del
archivo (usuario root), permisos r--
para el
grupo (grupo root) y permisos r--
para los demás
usuarios.
Modificar permisos
Los permisos son modificados con el comando chmod
y
pueden ser de lectura (r), escritura (w)
y ejecución (x). Por ejemplo, el grupo al cual
pertenece un archivo llamado documentos.tar.gz
sólo tendrá
acceso de lectura a él y para los demás usuarios se retirará el permiso
de lectura:
$ chmod g=r,o-r documentos.tar.gz
Para incluir permisos de escritura para el grupo del archivo documentos.tar.gz
:
$ chmod g+w documentos.tar.gz
A pesar de tener el mismo modelo de permisos, archivos y directorios se comportan de maneras diferentes teniendo los mismos permisos. En directorios, el permiso r posibilita leer el contenido del directorio, el permiso w permite crear archivos dentro del directorio y x permite listar el contenido del directorio.
Permisos numéricos (octales)
Los permisos pueden ser manejados de modo más corto a través de un formato numérico, llamado octal. El número octal consiste en una secuencia de cuatro dígitos. El primer dígito representa un permiso especial, abordado más adelante. Los demás representan los permisos para el usuario, grupo y otros, en ese orden.
Cada dígito indica la presencia de permisos a partir de la suma de los valores 4, 2 y 1. Esos valores corresponden a lectura, escritura y ejecución. La siguiente tabla muestra todos los permisos posibles, desde 0 (ningún permiso) hasta 7 (todos los permisos).
Dígito | Lectura (valor 4) | Escritura (valor 2) | Ejecución (valor 1) |
0 | — | — | — |
1 | — | — | Si |
2 | — | Si | — |
3 | — | Si | Si |
4 | Si | — | — |
5 | Si | — | Si |
6 | Si | Si | — |
7 | Si | Si | Si |
De esa forma, el comando chmod 0664 documentos.tar.gz
cambiará los permisos del archivo documentos.tar.gz
a -rw-rw-r--
,
o sea, lectura y escritura para el usuario, lectura y escritura para el
grupo y solamente lectura para los demás.
Para cambiar recursivamente todos los archivos dentro de un directorio
especificado, se utiliza chmod
con la opción -R
.
Modificar propietarios y grupos de archivos
Para cambiar propietario y grupo de archivos y directorios, se utilizan
los comandos chown
y chgrp
. El primero
argumento es un nombre válido de usuario o grupo y el segundo es el
archivo o directorio a ser modificado. Sólo el usuario root puede usar
el comando chown
, pero cualquier usuario puede usar el
comando chgrp
en sus archivos y directorios, siempre que
sea parte del grupo que será atribuído.
Cambiar propietario de archivo usando el chown
:
# chown daniel documentos.tar.gz
Cambiar grupo de archivo:
$ chgrp users documentos.tar.gz
Para cambiar usuario y grupo simultaneamente:
# chown daniel.users documentos.tar.gz
o
chown daniel:users documentos.tar.gz
Tanto chown
como chgrp
poseen la opción -R
para cambiar contenidos de directorios recursivamente.
5.4: Archivos y Directorios Especiales
Peso: 1
Permisos suid y sgid
En un ambiente Unix, todos los processos son vinculados al usuario que
los inició. De esa forma, el programa heredará los mismos permisos de
lectura y escritura del usuario que lo ejecutó. Algunas tareas, sin
embargo, exigen que el proceso modifique o acceda a archivos para
los cuales el usuario no tiene los permisos necesarios. Por ejemplo,
cambiar la propia contraseña exige que el archivo /etc/shadow
sea modificado, pero los permisos de /etc/shadow
limitan
la escritura al usuario propietario de este archivo (el usuario root):
$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1172 May 15 2017 /etc/shadow
Para contornar esa condición, existe un tipo de permiso especial, llamado suid (set user id). Archivos ejecutables que posean permisos suid serán ejecutados con los mismas permisos del propietario del comando y no con los permisos del usuario que lo ejecutó. El permisos suid es representado por la letra s en lugar de la x en la porción referente al propietario del archivo:
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54192 Feb 24 2017 /usr/bin/passwd
Para incluir el permiso suid en un archivo ejecutable, se utiliza:
# chmod u+s comando
De manera semejante, el permiso sgid actúa en directorios. Es un permiso de grupo, por lo tanto aparece en el campo de permisos referente al grupo. En un directorio con permiso sgid, todos los archivos allí creados pertenecerán al grupo del directorio en cuestión, el que es especialmente útil en directorios donde trabajan usuarios pertenecientes al mismo grupo.
Cuando están activos, los permisos suid y sgid hacen aparecer la letra s en lugar de la letra x en los permisos de propietario del archivo y grupo del archivo, respectivamente. Si también existe permiso de ejecución, aparecerá la letra s minúscula. Si sólo existen los permisos suid y sgid, aparecerá la letra S mayúscula.
El permiso sticky
El inconveniente en usar directorios compartidos es que un usuario
podría eliminar algún o todo el contenido inadvertidamente. Para evitar
que eso suceda, existe el permiso sticky, que impide a los
usuarios eliminar archivos que no fueron creados por ellos mismos. Es el
caso del directorio /tmp
, cuyas propriedades pueden
ser verificadas con el comando ls -l
más la opción -d
,
que permite obtener información del propio directorio en cuestión y no
de su contenido:
$ ls -ld /tmp
drwxrwxrwt 17 root root 36864 Feb 27 11:32 /tmp
La letra t en los permisos para los demás usuarios demuestra el uso del permiso sticky. Si sólo existiera el permiso sticky, aparecerá a letra T mayúscula.
Para atribuir el permiso sticky a un directorio llamado trabajo
,
por lo tanto, puede ser utilizado un comando como chmod o+t
trabajo
.
Permisos especiales en formato numérico
Como las opciones convencionales, los permisos especiales también poden ser manipulados en formato octal (numérico). El permiso especial es el primero de los cuatro dígitos de la opción en el formato octal. La siguiente tabla detalla esa correspondencia.
Dígito | suid (valor 4) | sgid (valor 2) | sticky (valor 1) |
0 | — | — | — |
1 | — | — | Si |
2 | — | Si | — |
3 | — | Si | Si |
4 | Si | — | — |
5 | Si | — | Si |
6 | Si | Si | — |
7 | Si | Si | Si |
Crear y cambiar enlaces simbólicos y hardlinks
Los enlaces son archivos especiales que tienen la finalidad de atajo para otros archivos, facilitando la manera en que son acessados. Existen dois tipos de enlaces: el softlink (enlace simbólico) y el hardlink (enlace físico).
Hardlinks (enlaces físicos)
Los hardlinks son uno o más nombres que un inode del sistema
de archivos puede tener. Todo archivo creado e, necesariamente, un
hardlink a su inodo correspondiente. Los nuevos hardlinks son creados
usando el comando ln
:
$ ln documentos.tar.gz docs.tar.gz
¿Qué es un inodo?
Un inodo es el elemento básico que identifica el archivo en el sistema de archivos. El primer inodo de un archivo guarda sus propiedades e indica en cuales otros inodos del sistema de archivos se localizan los datos de este archivo.
La opción -i
del comando ls
muestra el
número de los inodos de los archivos:
$ ls -i
6534 documentos.tar.gz 6534 docs.tar.gz
Ambos documentos.tar.gz
y docs.tar.gz
son
hardlinks para el mismo inode 6534. Los hardlinks para el mismo inodo
poseen los mismos permisos, propietarios, tamaño y datos, pues esos
atributos son registrados directamente en los inodos.
$ ls -l documentos.tar.gz
-rw-r--r-- 2 daniel daniel 188 Oct 16 22:10 documentos.tar.gz
El número 2 en la segunda columna de información
demuestra que hay dos hardlinks para el inodo correspondiente al archivo
documentos.tar.gz
. Un archivo sólo se eliminará del sistema
de archivos cuando el último hardlink remanente es eliminado.
Los hardlinks sólo pueden ser creados dentro de un mismo sistema de
archivos. No es posible crear hardlinks a directorios. Los archivos
especiales .
y ..
son hardlinks al
directorio creados exclusivamente por el propio sistema.
Softlinks (enlaces simbólicos)
Los enlaces simbólicos pueden apuntar a cualquier objetivo, inclusive
en sistemas de archivos diferentes. Para crear un enlace simbólico, se
usa ln
con la opción -s
:
$ ln -s documentos.tar.gz atajo.tar.gz
Detalles del enlace:
$ ls -l atajo.tar.gz
lrwxrwxrwx 1 epet1 bmac 17 Feb 27 11:40 atajo.tar.gz -> documentos.tar.gz
Un enlace simbólico es indicado por la letra l
al inicio
de los permisos que, en ese caso, son siempre rwxrwxrwx
.
El tamaño del archivo de enlace es exactamente la cantidad de bytes
(caracteres) de la ruta al objetivo. La flecha al lado del nombre del
enlace simbólico indica la ruta hasta el objetivo.
Un enlace simbólico a una ruta relativa se romperá si el objetivo o el
propio enlace fuera movido. Un enlace simbólico a una ruta absoluta sólo
se romperá si el objetivo fuera movido o eliminado. Para actualizar la
información de objetivo de un enlace simbólico existente, pero “roto”,
se puede redefinir el objetivo del enlace con la opción -f
.
Las funciones comunes para enlaces simbólicos son indicar rutas largas frecuentemente usadas, crear nombres más simples para archivos ejecutables y nombres adicionales para librerías de sistema.