Curso de Linux
de novato a experto en la línea de comandos
2.2. Gestión de archivos y permisos en Linux
Uno de los aspectos fundamentales para trabajar eficientemente en la consola de Linux es la gestión de archivos y permisos. A través de comandos específicos, puedes crear, eliminar, y gestionar archivos y directorios, así como controlar quién tiene acceso a ellos y qué acciones pueden realizar.
Creación, eliminación y gestión de archivos y directorios: touch, rm, mkdir, rmdir
1. Creación de archivos: touch
El comando touch se utiliza principalmente para crear archivos vacíos o actualizar la marca temporal (timestamp) de un archivo ya existente.
- Crear un archivo vacío:
touch archivo.txt
Esto crea un archivo llamadoarchivo.txten el directorio actual. - Actualizar la fecha de modificación de un archivo existente:
touch archivo_existente.txt
2. Eliminación de archivos y directorios: rm y rmdir
- Eliminar archivos: El comando
rmse usa para eliminar archivos y directorios.
Ejemplos:rm archivo.txt
Esto elimina el archivoarchivo.txt. El archivo no se envía a la papelera, se borra definitivamente. - Eliminar directorios:
- Para eliminar un directorio vacío, usa
rmdir:rmdir directorio_vacio - Para eliminar un directorio con contenido, usa
rm -r:rm -r carpeta_con_contenido
-rsignifica recursivo, lo que permite eliminar el contenido del directorio de forma profunda. - Para eliminar un directorio vacío, usa
- Eliminar archivos sin confirmación: Para eliminar archivos sin que el sistema pida confirmación:
rm -f archivo.txt
El argumento-f(force) fuerza la eliminación.
3. Creación de directorios: mkdir
El comando mkdir (make directory) crea directorios en la ubicación deseada. Algunos usos comunes incluyen:
- Crear un directorio simple:
mkdir nuevo_directorio - Crear varios directorios a la vez:
mkdir dir1 dir2 dir3Esto crea tres directoriosdir1,dir2ydir3en la ubicación actual. - Crear directorios anidados: Si necesitas crear un árbol de directorios, puedes usar la opción -p
mkdir -p proyectos/2024/linux
Esto creará todos los directorios intermedios si no existen (en este casoproyectos,2024ylinux).
Permisos y propiedad: chmod, chown
En Linux, cada archivo y directorio tiene asociado un conjunto de permisos que determina quién puede leer, escribir o ejecutar el archivo. Estos permisos se asignan a tres tipos de usuarios: el propietario (usuario), el grupo y otros.
1. Permisos de archivo: chmod
El comando chmod se utiliza para cambiar los permisos de archivos o directorios. Los permisos en Linux se dividen en tres categorías:
- r (read): Lectura.
- w (write): Escritura.
- x (execute): Ejecución.
Y se aplican a:
- u (user): El propietario del archivo.
- g (group): El grupo al que pertenece el archivo.
- o (others): Todos los demás usuarios.
Cambiar permisos mediante notación simbólica:
- Para otorgar permiso de ejecución al propietario de un archivo:
chmod u+x archivo.sh
Esto permite que el usuario (u) pueda ejecutar (+x) el archivoarchivo.sh. - Para quitar permiso de escritura a otros usuarios:
chmod o-w archivo.txt
Cambiar permisos mediante notación octal:
Los permisos también se pueden expresar mediante números octales:
- 4: Lectura.
- 2: Escritura.
- 1: Ejecución.
Cada categoría (usuario, grupo, otros) tiene un valor que se suma para definir los permisos. Por ejemplo:
- 755 significa:
- Propietario (usuario) tiene permisos de lectura, escritura y ejecución (
7= 4+2+1). - El grupo y otros tienen permisos de lectura y ejecución (
5= 4+1).
- Propietario (usuario) tiene permisos de lectura, escritura y ejecución (
Para aplicar estos permisos:
chmod 755 script.sh
Esto otorga al propietario todos los permisos, mientras que el grupo y otros pueden leer y ejecutar el archivo.
2. Cambiar la propiedad de archivos y directorios: chown
El comando chown se usa para cambiar el propietario y el grupo de un archivo o directorio.
- Cambiar el propietario de un archivo:
sudo chown nuevo_usuario archivo.txt - Cambiar el propietario y el grupo al mismo tiempo:
sudo chown nuevo_usuario:nuevo_grupo archivo.txt - Cambiar de forma recursiva la propiedad de todos los archivos y directorios dentro de una carpeta:
sudo chown -R nuevo_usuario carpeta
El argumento-Rcambia el propietario de todos los archivos dentro del directorio.
Enlaces simbólicos y duros: ln
En Linux, existen dos tipos de enlaces a archivos: enlaces simbólicos y enlaces duros. Ambos te permiten crear accesos alternativos a un archivo o directorio, pero funcionan de manera diferente.
1. Enlaces simbólicos (soft links)
Un enlace simbólico es como un atajo que apunta a otro archivo o directorio. Si el archivo original es eliminado, el enlace simbólico queda roto. Para crear un enlace simbólico se usa la opción -s:
- Crear un enlace simbólico:
ln -s archivo_original enlace_simbólico
Por ejemplo:ln -s /home/usuario/documentos/archivo.txt enlace.txt
Esto crea un enlace simbólico llamadoenlace.txtque apunta aarchivo.txt.
2. Enlaces duros (hard links)
Un enlace duro es otro nombre para el mismo archivo en el sistema de archivos. Los enlaces duros apuntan directamente a los datos en el disco, por lo que si se elimina el archivo original, los datos aún son accesibles a través del enlace duro.
- Crear un enlace duro:
ln archivo_original enlace_duro - Ejemplo:
ln archivo.txt enlace_duro.txt
Esto crea un archivo llamadoenlace_duro.txtque es esencialmente otro nombre paraarchivo.txt. Si eliminas uno de los archivos, el otro seguirá existiendo y mantendrá acceso a los mismos datos.
Diferencias clave entre enlaces simbólicos y duros:
- Enlaces simbólicos: Funcionan como accesos directos. Si el archivo original es eliminado, el enlace simbólico deja de funcionar.
- Enlaces duros: Son una referencia directa al archivo en el disco, y mantienen el acceso a los datos incluso si el archivo original es eliminado.
Ejemplo práctico de gestión de archivos y permisos:
- Crear un archivo y un directorio:
touch archivo.txt mkdir mi_directorio - Cambiar los permisos para que solo el propietario pueda leer y escribir en el archivo:
chmod 600 archivo.txt - Cambiar el propietario del archivo a otro usuario:
sudo chown nuevo_usuario archivo.txt - Crear un enlace simbólico al archivo:
ln -s archivo.txt enlace_simbólico.txt - Eliminar el archivo original y comprobar el enlace simbólico:
rm archivo.txt cat enlace_simbólico.txtEl último comando dará un error porque el archivo original ha sido eliminado y el enlace simbólico se ha roto.
Estos conceptos son esenciales para gestionar de manera eficaz los archivos y sus permisos en un sistema Linux, permitiendo a los usuarios mantener control sobre la seguridad y accesibilidad de los datos.