Introducción a Linux parte 2¶
Introducción a los Permisos en Linux¶
Los permisos en Linux controlan el nivel de acceso que los usuarios y grupos tienen a los archivos y directorios. Existen tres tipos básicos de permisos:
Lectura (r): Permite leer el contenido del archivo o listar los archivos de un directorio.
Escritura (w): Permite modificar el archivo o añadir/eliminar archivos de un directorio.
Ejecución (x): Permite ejecutar el archivo como un programa o acceder al contenido de un directorio.
Cada archivo y directorio en Linux tiene permisos definidos para tres tipos de usuarios:
Propietario (user): Generalmente el usuario que crea el archivo o directorio.
Grupo (group): Un conjunto de usuarios que pueden compartir ciertos permisos sobre el archivo o directorio.
Otros (others): Todos los demás usuarios que no son ni el propietario ni parte del grupo.
Visualización de Permisos¶
El comando ls -l muestra una lista de archivos y directorios,
incluyendo sus permisos, número de enlaces, propietario, grupo, tamaño,
fecha de modificación y nombre. Los primeros 10 caracteres en la salida describen el tipo y los permisos del archivo:
El primer carácter indica el tipo de archivo:
-para archivos regulares.dpara directorios.lpara enlaces simbólicos, entre otros tipos especiales.
Los siguientes nueve caracteres se agrupan en tres conjuntos de tres, representando los permisos para el propietario (user), el grupo (group) y otros (others), en ese orden:
r: lectura (read).
w: escritura (write).
x: ejecución (execute).
-: indica que el permiso correspondiente no está asignado.
Ejemplo de Salida de ls -l¶
Para ilustrar cómo interpretar los permisos, considera el siguiente ejemplo de salida de ls -l:
-rw-r--r-- 1 usuario grupo 4096 jul 28 14:00 ejemplo.txt
En esta salida:
``-rw-r–r–``: Los permisos del archivo
ejemplo.txtse desglosan de la siguiente manera:El primer carácter es
-, indicando que es un archivo regular.Los siguientes tres caracteres
rw-muestran que el propietario tiene permisos de lectura y escritura, pero no de ejecución.Los siguientes tres caracteres
r--indican que el grupo solo tiene permiso de lectura.Los últimos tres caracteres
r--muestran que otros también tienen permiso de lectura únicamente.
``1``: Número de enlaces duros al archivo, lo que indica cuántos nombres tiene asignados en el sistema de archivos.
``usuario``: Nombre del propietario del archivo.
``grupo``: Nombre del grupo asignado al archivo.
``4096``: Tamaño del archivo en bytes.
``jul 28 14:00``: Fecha y hora de la última modificación.
``ejemplo.txt``: Nombre del archivo.
Cambio de Permisos con chmod: Entendiendo «ugoa»¶
El comando chmod permite cambiar los permisos de archivos y directorios. La notación «ugoa» se refiere a quién se le aplican los cambios:
u: Propietario (user).
g: Grupo (group).
o: Otros (others).
a: Todos (all); es equivalente a «ugo» y permite aplicar el cambio a todos los usuarios simultáneamente.
En la notación simbólica, se especifican los permisos con letras y símbolos:
+ Agrega un permiso sin alterar los permisos existentes.
- Quita un permiso específico sin afectar los otros permisos establecidos.
= Establece los permisos exactos, sobrescribiendo los anteriores, eliminando cualquier otro permiso previamente configurado.
Permisos en Formato Octal¶
Otra forma de utilizar chmod es con la notación octal, en la cual los permisos se representan mediante números:
4: Lectura (r)
2: Escritura (w)
1: Ejecución (x)
Cada grupo de permisos (propietario, grupo y otros) se expresa como una suma de estos valores. Por ejemplo:
``chmod 755 archivo``: Asigna permisos de lectura, escritura y ejecución al propietario (7 = 4+2+1), y permisos de lectura y ejecución para el grupo y otros (5 = 4+1).
``chmod 644 archivo``: Otorga permisos de lectura y escritura al propietario (6 = 4+2) y solo de lectura para el grupo y otros (4).
Ejemplos de Uso¶
A continuación, se presentan algunos ejemplos prácticos del uso de chmod en notación simbólica y octal.
Para agregar el permiso de ejecución al propietario y al grupo, pero quitarlo de otros:
chmod ug+x,o-x nombre_del_archivo
Para establecer los permisos de lectura y escritura solo para el propietario, eliminando cualquier permiso para el grupo y otros:
chmod u=rw,go= nombre_del_archivo
Para otorgar permisos completos al propietario, de solo lectura al grupo y ninguno a otros usando la notación octal:
chmod 740 nombre_del_archivo
Ejercicio: Modificar Permisos con chmod¶
Añade el permiso de ejecución para el grupo en un archivo.
chmod g+x nombre_del_archivo
Quita el permiso de escritura para otros.
chmod o-w nombre_del_archivo
Establece los permisos de un archivo para que solo el propietario tenga acceso total, mientras que el grupo y otros no tengan ningún permiso.
chmod 700 nombre_del_archivo
Usa la notación octal para otorgar permisos de lectura y escritura al propietario y permisos de lectura al grupo y otros.
chmod 644 nombre_del_archivo
Este ejercicio te permitirá observar cómo chmod maneja los permisos de manera flexible y cómo se aplican las distintas notaciones simbólica y octal.
Ejercicio: Configurar Acceso y Asegurar la Carpeta Home¶
Este ejercicio te guiará para modificar los permisos de tu carpeta home para permitir acceso a otros usuarios, verificar que el cambio se haya realizado correctamente, y luego restaurar la seguridad de la carpeta.
Permitir Acceso a Otros Usuarios:
Primero, cambia los permisos de tu carpeta home para permitir que otros usuarios puedan acceder a ella.
chmod o+rx /home/tu_usuario
o+rx: Este comando da permisos de lectura (r) y ejecución (x) a otros usuarios, permitiendo que puedan acceder a tu carpeta y listar su contenido.
Verificar los Permisos Cambiados:
Para verificar que el cambio ha sido exitoso, accede a otro computador en la sala donde puedas iniciar sesión con una cuenta diferente (un usuario distinto al tuyo).
Desde la sesión de ese otro usuario, intenta acceder a tu carpeta home y listar su contenido utilizando el siguiente comando:
ls /home/tu_usuarioSi los permisos fueron aplicados correctamente, el otro usuario debería poder ver el contenido de tu carpeta home. Esto confirmará que los permisos de lectura y ejecución han sido otorgados a «otros» en tu carpeta.
Restaurar Seguridad en la Carpeta Home:
Después de verificar que el acceso es funcional, asegúrate de que tu carpeta home esté protegida de accesos no autorizados. Quita los permisos otorgados a otros usuarios.
chmod o-rx /home/tu_usuario
o-rx: Este comando elimina los permisos de lectura y ejecución para otros, asegurando que solo el propietario (tú) y, posiblemente, el grupo tengan acceso a la carpeta.
Verificar la Seguridad Restaurada:
Para comprobar que los permisos fueron restaurados, intenta listar el contenido de tu carpeta desde la cuenta del otro usuario.
Deberías recibir un mensaje de error indicando que el usuario no tiene permiso para acceder a la carpeta, confirmando que la carpeta está nuevamente segura.
Este ejercicio te ayudará a entender cómo configurar permisos para permitir y restringir el acceso a tu carpeta home, asegurando la privacidad de tus archivos personales.
Gestión de Procesos en Linux¶
Los procesos son instancias de programas en ejecución. La gestión de procesos implica monitorear y controlar los procesos activos en un sistema Linux.
Listar Procesos con ps y top¶
``ps`` muestra los procesos actuales.
``top`` proporciona una vista dinámica de los procesos en ejecución, actualizando en tiempo real el uso de CPU y memoria.
ps -ef
top
Para salir de ``top``, presiona la tecla ``q``.
Uso de htop¶
``htop`` es una herramienta interactiva avanzada que mejora
topy ofrece una interfaz gráfica de línea de comandos con opciones de filtrado y navegación intuitiva.Permite gestionar procesos de manera interactiva, facilitando tareas como el cambio de prioridad y el envío de señales de terminación.
htop
Para salir de ``htop``, presiona la tecla ``q``.
Enviar Señales con kill y pkill¶
``kill`` envía señales a procesos específicos por su número de identificación de proceso (PID).
``pkill`` permite enviar señales a procesos seleccionados por su nombre, simplificando la tarea cuando se desconoce el PID.
Para obtener el PID (identificador de proceso) de un programa en ejecución, puedes usar los siguientes comandos:
``ps``: Lista los procesos actuales con sus respectivos PIDs. Puedes filtrar por el nombre del proceso para encontrarlo más fácilmente.
ps -ef | grep nombre_del_proceso
Esto mostrará el PID del proceso especificado (sustituye ``nombre_del_proceso`` por el nombre real del programa).
``pgrep``: Obtiene directamente el PID de un proceso dado su nombre.
pgrep nombre_del_procesoEste comando devolverá el PID del proceso especificado si está en ejecución.
Una vez que tengas el PID, puedes enviar señales con kill o pkill:
kill -SIGTERM <PID> # Envía una señal al proceso usando su PID
pkill -SIGTERM nombre_del_proceso # Envía una señal a todos los procesos con el nombre dado
Nota: Ejecuta man signal para obtener una lista detallada de señales y sus efectos.
Ejercicio 1: Listar Procesos¶
Usa
ps -efpara listar todos los procesos en el sistema y observa los detalles de cada proceso, como el usuario y el PID.Usa
toppara monitorear los procesos en tiempo real, observando el uso de recursos del sistema.
Ejercicio 2: Usar htop¶
Abre un editor de texto como ``nano`` en un terminal.
Desde un segundo terminal, ejecuta ``htop`` y localiza el proceso
nanoen la lista.Termina (KILL) tu proceso
nanodesdehtopseleccionando el proceso y usando la opción para enviar una señal de terminación.
Ejercicio 3: Enviar Señales¶
Abre un editor de texto como ``nano`` en un terminal.
Desde un segundo terminal, encuentra el PID de tu proceso
nanousandopsy termina el proceso conkill.Pregunta: ¿Qué sucede si intentas matar un proceso
nanoque pertenece a otro usuario?Respuesta esperada: Recibirás un mensaje de «Permiso denegado» debido a la falta de permisos, ya que los procesos son protegidos por el sistema y solo el propietario (o root) puede terminarlos.
Repite el paso 2 utilizando ``pkill`` en lugar de
kill.Pregunta: ¿Qué sucede si tienes más de un proceso
nanoen ejecución y usaspkill?Respuesta esperada:
pkillterminará todos los procesos con el nombrenanoque pertenezcan al usuario actual. Si tienes múltiples instancias denanoabiertas, todas serán cerradas. Losnanode otros usuarios no se verán afectados.
Manipulación Avanzada de Archivos y Directorios¶
Búsqueda de Archivos con find¶
find es un potente comando que permite buscar archivos y directorios dentro de un árbol de directorios de acuerdo a diversos criterios, como el nombre, tipo de archivo, tamaño, propietario, permisos, y fechas de modificación o acceso.
Opciones Comunes de ``find``
``-type``: Especifica el tipo de archivo a buscar. Los tipos más comunes son:
``f``: Archivos regulares.
``d``: Directorios.
``-name``: Busca archivos o directorios que coincidan con un patrón específico (usa comillas dobles para caracteres especiales, como
*).``-mtime``: Busca archivos modificados en los últimos n días. Valores negativos indican archivos modificados en menos de n días.
``-size``: Filtra archivos según su tamaño. Puedes usar valores como
+100k(mayores a 100 KB),-10M(menores a 10 MB), etc.
Ejemplos
Buscar todos los archivos .txt en el directorio actual y sus subdirectorios:
find . -type f -name "*.txt"
Buscar todos los archivos .conf en la carpeta
/etc/y sus subcarpetas:find /etc/ -type f -name "*.conf"
Buscar todos los archivos en el directorio home que hayan sido modificados en el último día:
find ~ -mtime -1
Buscar archivos mayores a 100 MB en el directorio actual y subdirectorios:
find . -type f -size +100M
Buscar directorios llamados
backupen el sistema:find / -type d -name "backup"
Buscar archivos con permisos específicos, como archivos con permisos
777en el directorio actual:find . -type f -perm 777
Ejecutar Comandos en Archivos Encontrados
Puedes utilizar -exec para ejecutar comandos en cada archivo encontrado. Por ejemplo, para eliminar todos los archivos .log en el directorio actual y subdirectorios:
find . -type f -name "*.log" -exec rm {} \;
Nota: Usa esta opción con precaución, especialmente si el comando rm está involucrado, ya que puede eliminar archivos sin confirmación.
Ejercicio: Búsqueda de Archivos
Usa
findpara buscar todos los archivos .pdf en tu carpeta home.find ~ -type f -name "*.pdf"
Encuentra todos los archivos en /tmp que hayan sido modificados en los últimos 7 días y anota sus rutas.
find /tmp -type f -mtime -7
Usa
findpara buscar todos los archivos mayores a 50 MB en tu home y redirige la salida a un archivo llamadoarchivos_grandes.txt.find ~ -type f -size +50M > archivos_grandes.txt
Este ejercicio te ayudará a comprender la versatilidad de find para localizar archivos y gestionar tu sistema de manera más eficiente.
Filtrado de Contenido con grep¶
grep es una herramienta útil para buscar coincidencias de patrones dentro de archivos, permitiendo localizar líneas específicas que contienen palabras o expresiones regulares. Además, grep ofrece varias opciones para ajustar la búsqueda, como ignorar mayúsculas o mostrar el número de línea donde se encuentra cada coincidencia.
Opciones Comunes de ``grep``
``-i``: Ignora mayúsculas y minúsculas durante la búsqueda.
``-r``: Realiza una búsqueda recursiva en todos los archivos de un directorio y sus subdirectorios.
``-c``: Muestra solo el número de coincidencias encontradas en cada archivo.
``-n``: Muestra el número de línea donde se encuentra cada coincidencia.
``-v``: Invierte la búsqueda, mostrando solo las líneas que no contienen el patrón especificado.
Ejemplos
Buscar la palabra «error» en todos los archivos .log contenidos en la carpeta
/var/log:grep "error" /var/log/*.log
Contar el número de veces que aparece la palabra «error» en el archivo
/var/log/dpkg.log:grep -c "error" /var/log/dpkg.log
Buscar la palabra «warning» en todos los archivos del directorio actual y sus subdirectorios, ignorando mayúsculas y minúsculas:
grep -ri "warning" .
Mostrar las líneas que contienen la palabra «failed» en el archivo
/var/log/syslogjunto con el número de línea correspondiente:grep -n "failed" /var/log/syslog
Buscar todas las líneas en
/etc/passwdque no contengan la palabra «root»:grep -v "root" /etc/passwd
Ejercicio: Filtrado de Contenido con ``grep``
Usa
greppara buscar la palabra «user» en todos los archivos de configuración de la carpeta /etc y muestra el número de línea de cada coincidencia.grep -n "user" /etc/*.conf
Realiza una búsqueda recursiva de la palabra «critical» en el directorio /var/log e ignora mayúsculas y minúsculas.
grep -ri "critical" /var/log
Encuentra todas las líneas en el archivo /etc/passwd que no contengan la palabra «nologin» y redirige el resultado a un archivo llamado
usuarios_activos.txt.grep -v "nologin" /etc/passwd > usuarios_activos.txt
Este ejercicio te permitirá dominar el uso de grep para buscar patrones de texto en archivos y comprender cómo emplear sus opciones para refinar los resultados.
Uso de los Comandos cp y mv¶
Copiando Archivos y Directorios con cp¶
El comando cp se utiliza para copiar archivos y directorios de un lugar a otro. Algunas opciones adicionales permiten copiar los permisos y atributos de los archivos.
Opciones Comunes de ``cp``
``-r``: Copia un directorio de manera recursiva, incluyendo todos los archivos y subdirectorios.
``-i``: Solicita confirmación antes de sobrescribir archivos en el destino.
``-p``: Preserva los atributos del archivo (como permisos, propietario y marcas de tiempo).
``-v``: Muestra un mensaje para cada archivo copiado, útil para seguimiento en copias grandes.
Ejemplos
Copiar un archivo a otro directorio:
cp archivo_origen /ruta/al/directorio_destino
Copiar un directorio de manera recursiva:
cp -r directorio_origen /ruta/al/directorio_destino
Copiar un archivo y preservar sus atributos:
cp -p archivo_origen /ruta/al/directorio_destino
Moviendo y Renombrando con mv¶
El comando mv puede mover archivos y directorios a otras ubicaciones, o renombrarlos si el destino está en el mismo directorio. Al mover archivos, mv también sobrescribirá archivos en el destino si ya existen, sin pedir confirmación a menos que se use la opción ``-i``.
Opciones Comunes de ``mv``
``-i``: Solicita confirmación antes de sobrescribir archivos en el destino.
``-v``: Muestra un mensaje para cada archivo o directorio movido.
Ejemplos
Mover un archivo a otro directorio:
mv archivo_origen /ruta/al/directorio_destino
Renombrar un archivo en el mismo directorio:
mv archivo_origen nuevo_nombre
Ejemplo Práctico¶
Imagina que tienes un archivo llamado reporte.txt que deseas mover a un directorio llamado Documentos y luego renombrarlo a reporte_final.txt:
Mover el archivo al directorio Documentos:
mv reporte.txt ~/Documentos/
Renombrar el archivo dentro del directorio Documentos:
mv ~/Documentos/reporte.txt ~/Documentos/reporte_final.txt
Copiar y Mover Múltiples Archivos
Para copiar varios archivos al mismo directorio:
cp archivo1 archivo2 archivo3 /ruta/al/directorio_destino
Para mover múltiples archivos a un directorio específico:
mv archivo1 archivo2 archivo3 /ruta/al/directorio_destino
Ejercicio: Uso de cp y mv¶
Copia un archivo llamado
informe.txta un directorio llamadoRespaldo, preservando los permisos y atributos del archivo.cp -p informe.txt ~/Respaldo/
Mueve el archivo
informe.txtal directorioRespaldoy luego renómbralo ainforme_backup.txt.mv informe.txt ~/Respaldo/ mv ~/Respaldo/informe.txt ~/Respaldo/informe_backup.txt
Copia el contenido del directorio
Proyectosa un nuevo directorio llamadoProyectos_Respaldode forma recursiva, y verifica que los archivos se hayan copiado correctamente conls.cp -r Proyectos Proyectos_Respaldo ls Proyectos_Respaldo
Enlaces Simbólicos y Duros¶
Introducción a Enlaces en Linux¶
En Linux, los enlaces son referencias que permiten acceder a archivos y directorios desde diferentes ubicaciones. Existen dos tipos principales de enlaces:
Enlaces Duros: Referencias directas a la ubicación física de los datos en el disco.
Enlaces Simbólicos (Soft Links): Referencias a la ruta de un archivo o directorio, similares a accesos directos.
Diferencias Clave¶
Enlaces Duros:
No pueden cruzar sistemas de archivos; solo funcionan dentro del mismo sistema de archivos.
Solo pueden apuntar a archivos, no a directorios (excepto con permisos especiales de administrador).
Los enlaces duros son independientes del archivo original; si se borra el archivo original, el enlace duro sigue funcionando, ya que ambos comparten el mismo bloque de datos en el disco.
Enlaces Simbólicos:
Pueden apuntar a cualquier archivo o directorio, incluso si están en diferentes sistemas de archivos.
Si se borra el archivo o directorio original, el enlace simbólico se rompe y se convierte en un «enlace roto» que ya no apunta a datos válidos.
Almacenan solo la ruta del archivo o directorio objetivo, no los datos directamente, por lo que ocupan menos espacio en el disco.
Creando Enlaces Duros¶
Para crear un enlace duro, utiliza el comando ln seguido del archivo original y el nombre del enlace:
ln archivo_original enlace_duro
Ejemplo:
ln documento.txt copia_documento.txt
En este ejemplo, tanto documento.txt como copia_documento.txt apuntan a los mismos datos en el disco. Cualquier cambio en uno de ellos se reflejará en el otro.
Creando Enlaces Simbólicos¶
Para crear un enlace simbólico, utiliza ln con la opción -s:
ln -s archivo_original enlace_simbólico
Ejemplo:
ln -s /path/to/documento.txt enlace_documento.txt
En este caso, enlace_documento.txt solo apunta a la ruta /path/to/documento.txt. Si documento.txt se elimina o se mueve, enlace_documento.txt ya no funcionará.
Verificando Enlaces¶
Usa el comando
ls -lpara verificar los enlaces. Un enlace simbólico se identificará con una flecha->que muestra el destino del enlace.Los enlaces duros no tienen esta flecha, ya que son indistinguibles del archivo original en la salida de
ls.
Ejercicio: Crear y Observar Enlaces¶
Crea un enlace duro y un enlace simbólico a un archivo de tu elección en tu directorio home.
ln archivo.txt enlace_duro.txt ln -s archivo.txt enlace_simbólico.txt
Modifica el contenido del archivo original (por ejemplo,
archivo.txt) y observa cómo se refleja el cambio en ambos enlaces.echo "Texto adicional" >> archivo.txt
Borra el archivo original y observa qué sucede con cada tipo de enlace:
rm archivo.txtEnlace duro: El archivo
enlace_duro.txtseguirá funcionando y contendrá los datos originales, ya que el enlace duro es una copia directa de los datos en el disco.Enlace simbólico: El archivo
enlace_simbólico.txtestará roto, y cualquier intento de acceso mostrará un error, ya que el enlace simbólico depende de la ruta del archivo original.
Este ejercicio te ayudará a comprender las diferencias entre enlaces duros y simbólicos y a observar cómo se comportan en diferentes situaciones.