grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd



Estructura

Crear Grupo

sudo groupadd mi_grupo

Crear Usuario

sudo useradd mi_usuario

Asignar Usuario a Grupo

sudo usermod -a -G nombre_del_grupo nombre_de_usuario

getfacl

Al ejecutar getfacl en un archivo o directorio, la salida típica incluye:

Comando

getfacl nombre_archivo

Salida

# file: Muestra el nombre del archivo o directorio.
# owner: Muestra el nombre del propietario.
# group: Muestra el nombre del grupo asociado.
user::rwx: Muestra los permisos del propietario (donde rwx puede variar según los permisos actuales).
group::r-x: Muestra los permisos del grupo (los permisos pueden variar).
other::r--: Muestra los permisos para otros (pueden variar).

Claro, aquí tienes un resumen sobre cómo se aplican y priorizan los diferentes tipos de permisos en sistemas Unix y Linux, incluyendo permisos tradicionales y ACL (Listas de Control de Acceso):


1. Permisos Tradicionales (chmod):

  • Propietario (u): Los permisos del propietario tienen la prioridad inicial sobre el archivo o directorio. Si el propietario tiene permisos de lectura, escritura o ejecución, estos se aplican directamente al propietario, sin interferencia de las ACL.
  • Grupo (g): Los permisos de grupo se aplican a todos los usuarios que son miembros del grupo asociado al archivo o directorio. Si hay permisos de grupo específicos (como lectura o escritura), estos afectan a todos los miembros del grupo.
  • Otros (o): Los permisos para “otros” se aplican a todos los demás usuarios del sistema que no son ni el propietario ni miembros del grupo asociado.

2. Listas de Control de Acceso (ACL):

  • ACL de Usuario: Si se define una ACL específica para un usuario (con setfacl -m u:nombredeusuario:permisos archivo), estos permisos tienen prioridad sobre los permisos de grupo y “otros” para ese usuario específico, pero no necesariamente sobre los permisos del propietario si el usuario es el propietario.
  • ACL de Grupo: Si se establece una ACL para un grupo específico (con setfacl -m g:nombredelgrupo:permisos archivo), estos permisos afectan a todos los miembros de ese grupo específico, pero solo si son más permisivos que los permisos del grupo definidos por chmod.
  • Máscara (mask): La máscara de una ACL limita los permisos máximos que pueden ser otorgados por las ACL de usuario y grupo. La máscara actúa como un tope máximo para los permisos de ACL, pero no afecta los permisos del propietario establecidos por chmod.
  • Otros y ACL por defecto: Las ACL también pueden definir permisos para “otros” y establecer ACL predeterminadas para directorios, que afectan la creación de nuevos archivos y subdirectorios.

Prioridades y Resolución de Conflictos:

  1. Permisos del Propietario: Los permisos de chmod para el propietario siempre se respetan para el propietario del archivo o directorio.
  2. ACL de Usuario vs. Permisos de Grupo de chmod: Para usuarios específicos, las ACL de usuario tienen prioridad sobre los permisos de grupo establecidos por chmod.
  3. ACL de Grupo vs. Permisos de Grupo de chmod: Los permisos de las ACL de grupo solo se aplican si son más permisivos que los permisos de grupo de chmod o si no hay conflictos directos.
  4. Permisos para “Otros”: Se respetan según chmod a menos que se especifiquen explícitamente mediante ACL.
  5. Máscara (mask): Limita los permisos efectivos de las ACL de usuario y grupo, pero no afecta los permisos del propietario de chmod.
  6. Permisos Más Restrictivos: En cualquier conflicto entre diferentes tipos de permisos, los permisos más restrictivos prevalecen.

Mientras que las ACL permiten una granularidad mayor, no pueden conceder más permisos que los establecidos por los permisos base (chmod). Además, la resolución de permisos efectivos depende de una combinación de estos controles, aplicando reglas específicas para resolver qué permisos prevalecen en diferentes situaciones.


Conclusión

Los permisos primarios como los permisos de usuario y grupos secundario son los principales. Mas que los permisos del ACK

Si un usuario tiene varios grupos ACK, toma los permisos del grupo mas permisivos que tenga. Siempre conviene que el grupo no tenga permisos para nada, mas que los justos

setfacl -R -m g::--- carpeta
redes@debian:~/Desktop$ ls -l ISO
total 48
drwxr-xr-x  2 redes users  4096 Feb 19 11:01 Documentos
drwxr-xr-x  2 redes users  4096 Feb 19 11:01 Ejemplos
drwxr-xr-x  7 redes users  4096 Feb 19 11:01 Otros
drwxr-xr-x  2 redes users  4096 Feb 19 11:01 PracticaNormalParciales
drwxr-xr-x 10 redes users  4096 Feb 19 11:01 Practicas
-rw-r--r--  1 redes users 23639 Feb 19 11:01 README.md
drwxr-xr-x  9 redes users  4096 Feb 19 11:01 Teoria
redes@debian:~/Desktop$ find ISO -type d \( -path ISO/Teoria -o -path ISO/Practicas \) -prune -o -exec setfacl -m g:Director:--- {} \;
redes@debian:~/Desktop$ ls -l ISO
total 48
drwxr-xr-x+  2 redes users  4096 Feb 19 11:01 Documentos
drwxr-xr-x+  2 redes users  4096 Feb 19 11:01 Ejemplos
drwxr-xr-x+  7 redes users  4096 Feb 19 11:01 Otros
drwxr-xr-x+  2 redes users  4096 Feb 19 11:01 PracticaNormalParciales
drwxr-xr-x  10 redes users  4096 Feb 19 11:01 Practicas
-rw-r--r--+  1 redes users 23639 Feb 19 11:01 README.md
drwxr-xr-x   9 redes users  4096 Feb 19 11:01 Teoria
redes@debian:~/Desktop$ 


Comandos

Comandos Practica 1

Sudo

Sudo es un programa diseñado para facilitar a los administradores del sistema permitir a algunos usuarios ejecutar órdenes como root (u otro usuario).

ComandoFuncion
apt install sudoInstala el sudo en debian 11
cat /var/log/syslogMuestra el contenido dentro del fichero
more /var/log/syslogIgual que cat solo que muestra linea por linea
less /var/log/syslogLimita la cantidad de lineas visibles
vi nomArchivoi para cambiar de modo, escribirmos, luego esc y despues :wq
file nombreArchivoMuestra que tipo de contenido posee
cd DesktopPermite meternos en un directorio
cd ..Para retroceder en el directorio
mkdir "ISO 2022"Crea carpetas
touch ISO2022-1 ISO2022-2Crea dos archivos
lsLista el contenido del directorio actual
pwdVisualiza la ruta donde estoy situado
find ./'ISO 2022' -name "ISO*"Busca todos los archivos en los que su nombre contiene la cadena “iso*”
dfInforma la cantidad de espacio libre en disco
whoVerifica los usuarios conectados al sistema
tail ISO2022-1Muestra en pantalla las últimas líneas de un archivo


⚠️ Peligrosos ⚠️

Antes de usar un comando sudo, primero tenes que entrar como super-usuario con el comando su

ComandoFuncion
shutdownPermite apagar, reiniciar y detener tu sistema
sudo shutdownApaga el sistema luego de 2 minutos aprox
sudo shutdown nowApaga el sistema ahora
sudo shutdown -rReinicia el sistema luego de 2 minutos aprox
sudo shutdown -cCancela el reinicio/apagado
sudo rebootReinicia el equipo
sudo haltDetiene la CPU del ordenador
locate nomArchivoComo el find pero mas canchero
sudo apt install locateInstalar el locate
uname -letraVerifica la información del sistema (s, r, v, n, m, p, i, o, a)
gmesgNo lo pude hacer funcionar (puede ser el dmesg?)
lspciLista todos los componentes tipo pci
at 10:00 PM accion(se sale con Ctrl + D) Nos permite programar tareas
sudo apt update, sudo apt install atinstalar el at
netstatMuestra información sobre las conexiones de red
sudo apt install net-toolsInstala netstat
mountPermite montar dispositivos/particiones para su uso por el so
sudo apt install nfs-commonInstala el mount
umount -VPermite eliminar un sArch remoto que esté montando en la actualidad
head nomArchivoPuestra el principio de un archivo
losetupSe utiliza para fijar el dispositivo de bucle


Comandos Practica 2

ComandoFuncion
ls /etc/rc0.dmiramos el conenido de la runlevel 0. Estos scripts
sudo runlevelnos muestra la runlevel actual
sudo telinit 2nos cambia a la runlevel 2
sudo adduser usuarioNuevoCrea un usuario
sudo groupadd grupode5Crea un grupo
sudo groupdel grupode5Elimina un grupo
sudo usermod -a -G grupode5 pepeAgrega usuarios a un grupo
id -nG iso2022Muestra los grupos a los que pertenece un usuario
sudo login iso2022Logueo como otro usuario
sudo userdel iso2022Elimina un usuario
groupsPermite ver los grupos a los que pertenece mi usuario
suEntrar como super usuario
whoVerifiqua los usuarios conectado al sistema
passwdCambia la constraseña del usuario actual
chmod (u,g,o)(+,=)(w,rw,rwx) archivo.txtNos permite modificar cualquier permiso
chown nombreUsuario nombreArchivoCambia el propietario de un archivo
chgrpIgual que chwon sintaxis mas simple
duMuestra tamaño de ficheros y carpetas (actual)
rmdir nombreCarpetaElimina una carpeta
cp nombreArchivo nombreCarpetaSirve para copiar archivos y directorios dentro del sArch
mve utiliza para mover o renombrar los archivos y directorios
psposee algunas opciones para mostrar los procesos en ejecución
ls | more Se ejecuta el comando ls y la salida del mismo, es enviada como entrada del comanda more
grep -iRl .conf Buscar todos los archivos de usuarios en los que su nombre contiene la cadena “.conf”
tar cvf ejercicio6.tar directorioNuevoComprime el directorio o archivo marcado
gzipcomprime/descomprime archivos (Parametros que puede recibir)
zgreplo mismo que grep pero puede estar comprimido el archivo
wccuenta nuevas líneas, palabras y bytes para los archivos

Find

El comando find en Linux es una herramienta poderosa y flexible utilizada para buscar archivos y directorios en el sistema de archivos. Permite realizar búsquedas basadas en una amplia variedad de criterios como nombre, tipo, permisos, tamaño, fecha de modificación y más. Aquí se presenta una explicación detallada del comando find, incluyendo su sintaxis, opciones comunes, y ejemplos prácticos.

Sintaxis Básica

find [ruta] [expresiones]
  • ruta: El directorio donde se iniciará la búsqueda. Si se omite, find busca en el directorio actual.
  • expresiones: Condiciones que determinan qué archivos o directorios se buscarán.

Opciones y Expresiones Comunes

1. Buscar por Nombre

  • -name: Busca archivos y directorios que coincidan exactamente con el nombre especificado (sensible a mayúsculas y minúsculas).

    find /ruta -name "archivo.txt"
  • -iname: Busca archivos y directorios sin diferenciar entre mayúsculas y minúsculas.

    find /ruta -iname "archivo.txt"

2. Buscar por Tipo

  • -type: Especifica el tipo de archivo a buscar.

    find /ruta -type f    # Archivos regulares
    find /ruta -type d    # Directorios
    find /ruta -type l    # Enlaces simbólicos
    find /ruta -type c    # Dispositivos de caracteres
    find /ruta -type b    # Dispositivos de bloques

3. Buscar por Tamaño

  • -size: Busca archivos según su tamaño.

    find /ruta -size +100M   # Más de 100 megabytes
    find /ruta -size -50k    # Menos de 50 kilobytes
    find /ruta -size 10M     # Exactamente 10 megabytes

4. Buscar por Permisos

  • -perm: Busca archivos con permisos específicos.

    find /ruta -perm 644    # Archivos con permisos 644
    find /ruta -perm -u+x   # Archivos ejecutables por el propietario
    find /ruta -perm /a+w   # Archivos escribibles por cualquier usuario

5. Buscar por Propietario y Grupo

  • -user: Busca archivos pertenecientes a un usuario específico.

    find /ruta -user nombre_usuario
  • -group: Busca archivos pertenecientes a un grupo específico.

    find /ruta -group nombre_grupo

6. Buscar por Fecha

  • -mtime: Busca archivos modificados hace un cierto número de días.

    find /ruta -mtime -7   # Modificados en los últimos 7 días
    find /ruta -mtime +30  # Modificados hace más de 30 días
  • -atime: Busca archivos accedidos hace un cierto número de días.

    find /ruta -atime -7
  • -ctime: Busca archivos cuyo estado (metadatos) ha cambiado hace un cierto número de días.

    find /ruta -ctime -7

7. Acciones

  • -exec: Ejecuta un comando en cada archivo encontrado.

    find /ruta -name "*.txt" -exec rm {} \;   # Elimina todos los archivos .txt encontrados
    find /ruta -type f -exec chmod 644 {} \;  # Cambia permisos de todos los archivos a 644
  • -ok: Similar a -exec, pero pide confirmación antes de ejecutar el comando.

    find /ruta -name "*.txt" -ok rm {} \;
  • -delete: Elimina los archivos encontrados.

    find /ruta -name "*.bak" -delete   # Elimina todos los archivos .bak encontrados
  • -print: Imprime la ruta de los archivos encontrados (comportamiento por defecto si no se especifica ninguna acción).

    find /ruta -name "*.txt" -print

8. Buscar en Archivos y Subdirectorios Específicos

  • -maxdepth: Limita la profundidad máxima de búsqueda.

    find /ruta -maxdepth 2 -name "*.txt"   # Busca solo en los primeros dos niveles de subdirectorios
  • -mindepth: Limita la profundidad mínima de búsqueda.

    find /ruta -mindepth 2 -name "*.txt"   # Busca en subdirectorios a partir del segundo nivel

9. Buscar por Varios Criterios

  • -and o -a: Combina criterios (implícito).

    find /ruta -name "*.txt" -type f   # Busca archivos .txt que son archivos regulares
  • -or o -o: Busca archivos que cumplen uno u otro criterio.

    find /ruta -name "*.txt" -o -name "*.md"   # Busca archivos .txt o .md
  • -not o !: Excluye archivos que cumplen un criterio.

    find /ruta -not -name "*.bak"   # Busca archivos que no son .bak

Ejemplos Prácticos

  1. Buscar archivos con extensión .log modificados en los últimos 7 días:

    find /var/log -name "*.log" -mtime -7
  2. Eliminar todos los archivos .tmp en el directorio actual y sus subdirectorios:

    find . -name "*.tmp" -delete
  3. Buscar archivos mayores de 100 MB en el directorio /home:

    find /home -size +100M
  4. Buscar archivos con permisos 755 y cambiarles los permisos a 644:

    find /home -perm 755 -exec chmod 644 {} \;
  5. Buscar y listar archivos de un usuario específico:

    find / -user username -print
  6. Buscar archivos de un cierto tipo (por ejemplo, archivos regulares) y ejecutar un comando (por ejemplo, ls -l):

    find /ruta -type f -exec ls -l {} \;
  7. Buscar archivos que no pertenecen a un usuario específico:

    find /ruta -not -user username

Resumen

El comando find es extremadamente versátil y puede utilizarse para buscar archivos y directorios según una amplia variedad de criterios. Al combinar múltiples opciones y expresiones, se puede realizar búsquedas muy específicas y ejecutar acciones sobre los archivos encontrados. Esta flexibilidad hace de find una herramienta esencial para la administración de sistemas en Linux.

image


Comandos en Linux: Explicación Detallada

1. grep

Descripción:

grep es una herramienta utilizada para buscar patrones de texto en archivos o flujos de datos. Es muy poderoso y flexible, permitiendo buscar cadenas simples o expresiones regulares complejas.

Sintaxis:

grep [opciones] patrón [archivo...]

Ejemplos Prácticos:

  • Buscar una cadena en un archivo:

    grep "cadena" archivo.txt

    Esto buscará “cadena” en archivo.txt y mostrará las líneas que la contengan.

  • Buscar sin diferenciar mayúsculas y minúsculas:

    grep -i "cadena" archivo.txt
  • Buscar recursivamente en un directorio:

    grep -r "cadena" /ruta/al/directorio
  • Mostrar número de línea:

    grep -n "cadena" archivo.txt

2. sort

Descripción:

sort ordena las líneas de texto en archivos o flujos de datos según diferentes criterios.

Sintaxis:

sort [opciones] [archivo...]

Ejemplos Prácticos:

  • Ordenar un archivo alfabéticamente:

    sort archivo.txt
  • Ordenar de forma inversa:

    sort -r archivo.txt
  • Ordenar numéricamente:

    sort -n archivo.txt

3. uniq

Descripción:

uniq filtra líneas repetidas consecutivas en un archivo o flujo de datos. Se suele usar después de sort.

Sintaxis:

uniq [opciones] [archivo]

Ejemplos Prácticos:

  • Eliminar líneas duplicadas consecutivas:

    sort archivo.txt | uniq
  • Contar ocurrencias de líneas únicas:

    sort archivo.txt | uniq -c

4. strings

Descripción:

strings imprime las cadenas de caracteres legibles en un archivo binario. Es útil para extraer texto de archivos binarios o ejecutables.

Sintaxis:

strings [opciones] archivo

Ejemplos Prácticos:

  • Mostrar cadenas legibles en un archivo binario:
    strings archivo.bin

5. base64

Descripción:

base64 se utiliza para codificar o decodificar datos en formato Base64, que es una representación de datos binarios en texto.

Sintaxis:

base64 [opciones] [archivo]

Ejemplos Prácticos:

  • Codificar un archivo en Base64:

    base64 archivo.bin > archivo.b64
  • Decodificar un archivo en Base64:

    base64 -d archivo.b64 > archivo.bin

6. tr

Descripción:

tr traduce o elimina caracteres en un flujo de datos. Es muy útil para manipular texto.

Sintaxis:

tr [opciones] set1 [set2]

Ejemplos Prácticos:

  • Convertir minúsculas a mayúsculas:

    echo "hola mundo" | tr 'a-z' 'A-Z'
  • Eliminar caracteres específicos:

    echo "hola mundo" | tr -d 'o'

7. tar

Descripción:

tar se utiliza para crear, extraer y manipular archivos tarball, que son archivos de archivo comúnmente usados en Unix y Linux.

Sintaxis:

tar [opciones] [archivo]

Ejemplos Prácticos:

  • Crear un archivo tar:

    tar -cvf archivo.tar directorio/
  • Extraer un archivo tar:

    tar -xvf archivo.tar
  • Crear un archivo tar comprimido con gzip:

    tar -czvf archivo.tar.gz directorio/

8. gzip

Descripción:

gzip se utiliza para comprimir archivos, reduciendo su tamaño.

Sintaxis:

gzip [opciones] [archivo]

Ejemplos Prácticos:

  • Comprimir un archivo:

    gzip archivo.txt
  • Descomprimir un archivo:

    gzip -d archivo.txt.gz

9. bzip2

Descripción:

bzip2 es similar a gzip, pero utiliza un algoritmo de compresión diferente que a menudo proporciona una mejor compresión.

Sintaxis:

bzip2 [opciones] [archivo]

Ejemplos Prácticos:

  • Comprimir un archivo:

    bzip2 archivo.txt
  • Descomprimir un archivo:

    bzip2 -d archivo.txt.bz2

10. xxd

Descripción:

xxd crea un volcado hexdump de un archivo o puede revertir un hexdump a su formato binario original.

Sintaxis:

xxd [opciones] [archivo]

Ejemplos Prácticos:

  • Crear un hexdump de un archivo:

    xxd archivo.bin
  • Convertir un hexdump de nuevo a binario:

    xxd -r archivo.hex archivo.bin

Conclusión

Estos comandos son herramientas fundamentales en la administración y manipulación de archivos y datos en sistemas Unix y Linux. Cada comando tiene un conjunto específico de funcionalidades y opciones que lo hacen adecuado para tareas particulares. La comprensión y el uso efectivo de estos comandos pueden mejorar significativamente la eficiencia y productividad al trabajar con sistemas Linux.

awk: Un Potente Procesador de Texto

awk es una herramienta de procesamiento de texto muy poderosa y versátil en Unix y Linux. Se utiliza para manipular, analizar y generar informes basados en archivos de texto. awk funciona por medio de patrones y acciones, y puede realizar tareas complejas en archivos de texto con una sintaxis relativamente simple.

Sintaxis Básica

awk 'programa' archivo
  • programa: Un conjunto de instrucciones awk, usualmente en formato de patrón {acción}.
  • archivo: El archivo de entrada que awk procesará.

Componentes Principales

1. Patrón

Define cuándo se debe ejecutar una acción. Puede ser una expresión regular, una condición lógica, o una combinación de ambas.

2. Acción

Define qué hacer cuando se encuentra un patrón. Se coloca entre llaves {} y puede contener varias declaraciones separadas por punto y coma.

Estructura de un Programa awk

Un programa awk puede consistir en uno o más patrones y acciones. También puede tener secciones especiales para inicialización (BEGIN) y finalización (END).

BEGIN { declaraciones de inicialización }
patrón { acción }
patrón { acción }
END { declaraciones de finalización }

Parámetros y Opciones Comunes

-F: Especificar el Separador de Campos

awk -F ':' '{print $1}' archivo.txt
  • Descripción: Establece el separador de campos. En este ejemplo, : es el separador.

-v: Definir Variables de Usuario

awk -v var=valor 'BEGIN {print var}'
  • Descripción: Define variables antes de ejecutar el programa awk.

-f: Especificar un Archivo de Programa

awk -f programa.awk archivo.txt
  • Descripción: Lee el programa awk desde un archivo en lugar de la línea de comandos.

Campos y Registros

  • Campos ($1, $2, … $n): Cada campo en una línea de entrada. $0 representa la línea completa.
  • Registros: Por defecto, una línea de entrada es un registro.

Ejemplos Prácticos

1. Imprimir el Primer Campo de Cada Línea

awk '{print $1}' archivo.txt
  • Descripción: Imprime el primer campo de cada línea en archivo.txt.

2. Imprimir Líneas que Contienen un Patrón Específico

awk '/patrón/' archivo.txt
  • Descripción: Imprime las líneas que contienen “patrón”.

3. Imprimir el Número de Líneas y Palabras

awk 'BEGIN {lineas=0; palabras=0}
{
    lineas++;
    palabras += NF;
}
END {print "Líneas:", lineas; print "Palabras:", palabras}' archivo.txt
  • Descripción: Cuenta el número de líneas y palabras en archivo.txt.

4. Sumar los Valores de una Columna

awk '{suma += $2} END {print "Suma:", suma}' archivo.txt
  • Descripción: Suma los valores del segundo campo y los imprime al final.

5. Filtrar y Modificar Contenido

awk '$2 > 50 {print $1, $2 * 2}' archivo.txt
  • Descripción: Imprime el primer campo y el doble del segundo campo solo si el segundo campo es mayor que 50.

Funciones Incorporadas

awk tiene muchas funciones incorporadas para manipular y procesar datos:

  • Funciones de Texto: length(), substr(), index(), split().
  • Funciones Numéricas: sqrt(), sin(), cos(), rand(), srand().
  • Funciones de Fecha y Hora: strftime(), systime().

Ejemplos de Funciones

1. length(): Longitud de una Cadena
awk '{print $1, length($1)}' archivo.txt
  • Descripción: Imprime cada palabra y su longitud.
2. substr(): Subcadena
awk '{print substr($0, 2, 5)}' archivo.txt
  • Descripción: Imprime una subcadena que empieza en la posición 2 y tiene una longitud de 5 caracteres.
3. split(): Dividir Cadena en Partes
awk '{split($0, partes, ":"); print partes[1], partes[2]}' archivo.txt
  • Descripción: Divide cada línea en partes usando : como delimitador e imprime las primeras dos partes.

Variables Internas de awk

awk proporciona varias variables internas que son útiles para procesar datos:

  • FS: Separador de campos (por defecto es espacio o tabulación).
  • OFS: Separador de campos de salida.
  • RS: Separador de registros (por defecto es nueva línea).
  • ORS: Separador de registros de salida.
  • NR: Número de registro (línea) actual.
  • NF: Número de campos en el registro actual.

Ejemplo con Variables Internas

awk 'BEGIN {FS=","; OFS=";"} {print $1, $2}' archivo.csv
  • Descripción: Usa , como separador de campos de entrada y ; como separador de campos de salida.

Conclusión

awk es una herramienta extremadamente poderosa para procesar y analizar datos en archivos de texto. Su capacidad para manejar patrones y acciones permite realizar tareas complejas con comandos relativamente simples. Al comprender los parámetros, las variables internas y las funciones incorporadas de awk, puedes aprovechar al máximo su potencial para manipular y analizar datos de manera eficiente.

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image