Linux Flashcards
PWD
lista el directorio actual
whoami
lista el usuario actual
exec comando
exec comando
time comando (no confundir con DATE)
lista el tiempo que ha tardado en ejecutarse el comando
date
te devuelve fecha y hora
history
lista los últimos comandos tecleados (~/.bash_history)
id
muestra UID y GID del usuario especificado + grupos secundarios
touch nombreFichero
Tocar un fichero (lo modifica) y si no existe lo crea.
(-a solo fecha acceso | -m solo fecha modificación | -c no crear fichero si no existe)
man comando
manual del comando
$USER
Variable usuario que ha iniciado sesión actualmente
$PWD
la ruta directorio actual
$OLDPWD
la ruta al del directorio anterior
$HOME
directorio de inicio del usuario actual
cd
Cambiar Directorio. Ir a un directorio (Videos) a cd Videos | a cd /home/gsus/Documents/Videos
Ir a la carpeta de inicio a cd | Sube un nivel à cd .. (espacio entre d y ..) | Volver al directorio anterior cd -
ls
Listar contenido. (-a ocultos | -l largo | -R recursivo (directorios&sub) | -F marca al final | -d directorios
| – archivos | -S tamaño | -t marca de tiempo | -r inverso | -X extensión | -i muestra inodos)
cp
Copiar ficheros. (-u update si es más nuevo | -r recursivo | -l crea hard link)
mv
Mueve ficheros y renombra. El archivo original lo borra. (-i pregunta antes de sobrescribir)
rm
Remove (-i interactivo | -r recursivo | -f no preguntes) (rm -fr / == muerte)
tar
Empaquetar/desempaquetar. Se combina con parámetros xa comprimir: (-c crear archivo | -f especificar nombre
tar cfvz /ficherocomprimido.tar.gz(.tgz) ~/my-work –> crea tar comprimido verbose ¡¡OJO!! destino origen
tar xfvz /ficherocomprimido.tar.gz(.tgz) –> descomprime el fichero en ‘.’ verbose
tar cvfz file.tar.gz *.c (crea un fichero emaquetado y comprimido con gzip)
# tar cvfj Phpfiles-org.tar.bz2 /home/php (crea un fichero emaquetado y comprimido con bzip2)
-r (actualiza o añade un fichero en un empaquetado concreto)
-f (para poder especificar el nombre del fichero resultante)
-J (para usar el algoritmo de compresion xz)
-t (lista el contenido del archivo empaquetado o comprimido)
-v ver progreso | -z comprime gzip | -x extraer | -tf ver contenido | -rf añadir ficheros al final del .tar)
cpio
Copia ficheros entre directorios. Para copias de seguridad. Se suele encadenar con otros flujos. Parecido a tar
(-i extraer | -o create)
Ejemplo: find ./my-work | cpio –o | gzip > /tmp/backup.cpio.gz
gunzip -c /tmp/backup.cpio.gz | cpio –i
dd
Copia entre dispositivos a bajo nivel. O transformando formatos.
dd if=/dev/zero of=empty.img bs=1024 count=720 –> genera fichero vacío tamaño 720KB
dd if=/dev/cdrom of=/tmp/image.iso
dd if=/dev/hda of=/dev/hdb bs=blocksize à forma rudimentaria de clonar un disco de misma geometría
of=/media/mbr bs=512 count=1
rsync
Copia remota de ficheros (sincronizar ficheros entre 2 máquinas)
mkdir
Crear un directorio (-p con los directorios necesarios o intermedios) mkdir -p c1/c2
rmdir
Eliminar un directorio VACIO (-p árbol entero) rmdir -p c1/c2
chown
Change Owner. Cambia el propietario (-R recursivo) (Solo puede ROOT!!!)
chown user:group | user | :group files (chown siempre borra los bits setuid y setgid)
chown -R pepe:dev /path (establece como usuario y grupo propietario a todos los ficheros y directorios recursivamente )
chgrp
Change group. Cambie el grupo
chmod
Change mode bits. Cambia los bits de permisos
find
Busca ficheros en una jerarquía de ficheros
( / todo el sistema | . à directorio actual | ~ desde directorio home)
find/ -type d (f=regular) | -name my-file | -perm 0777 | -user gsus | -exec
-atime nºdias (tiempo acceso) / ± nºdias
-mtime nºdias (tiempo modificación) / ± nºdias
-ctime nºdias (actualización (cambio) metad) / ± nºdias
-size 10c bytes | k kb | M mb | G gb | b trozos 512 bytes / [Opción: -size +5G (mayor que…)]
ejemplo
comando opciones {} \;
Ej: find -perm 777 -exec chmod 755 {} \;
Busca files con perm 777 y los pasa a 755
locate
Encuentra archivos por su nombre en una BBDD que crea (updatedb à para actualizar BBDD manual)–>HACERLO 1º
whereis
Localizar el archivo binario, el código fuente y la página del manual de un determinado comando
whereis [-bms] comando ( -b –> solo binario | . -m –> solo página manual | -s –> solo código fuente)
type
Muestra que tipo de elemento esta asociado a un comando determinado y alguna información adicional sobre él
stat
Mucha información de fichero o de sistema de ficheros
ln
Crea enlaces ( -d –> duro NO directorios) crear soft y hard links sobre ficheros/directorios
( -s –> simbólico/blando)
si no, es HARD por defecto
Ejemplos:
# ln -s origen nombre_enalce (enlace simbolico, funciona con directorios y
fichero)
# ln origen nombre_enlace (enlace duro, no vale para directorios)
split
Genera ficheros en trozos x bytes x líneas
tr
Translate (cambiar caracteres, borrarlos, etc)
uniq
Eliminar líneas duplicadas
cat / nl
Mostrar por pantalla, Imprimir o concatenar contenido. NL es como cat, pero mostrando números de línea
| -b a numera también las líneas vacías
Ejemplo
cat /etc/redhat-release
head/tail -n
(-n 200 = -200)
Ver las primeras o últimas n líneas. SI NO ESPECIFICAS nº SACA LAS PRIMERAS/ULT. 10
à tail -200f fichero.log / –> tail fichero.txt (imprime las 10 últimas líneas)
(tail -f lo mantiene abierto, para ver “logs” como nuevas líneas)
more / less
Información paginada
cut
Corta en vertical
-b bytes
-f fields/campos
-c chars
wc
Word Count, para contar
wc -w –> palabras
wc -l –> líneas
wc -m –> caracteres <–ojo!
wc -c –> bytes <– ojo!
sed
Stream editor. Por ejemplo para sustituir (no interactiva) ‘s/texto_a_buscar/texto_a_reemplazar/’
à sed ‘s/2020/2021/’ fichero.txt >fichero_nuevo.txt
grep
Extraer líneas que cumplen criterios o filtrar. ( -n –> ver nº línea | -i à no distingue MAY/min | -R recurs)
Variantes: egrep (soporte para expresiones regulares extendidas) –> grep -e
fgrep (no permite expresiones regulares) –> grep -f
tee
El comando tee redirecciona la salida (stdout) a ambos; un archivo y a la terminal.
ps -ef | tee procesos.txt (La salida de ps se muestra en la terminal y al mismo tiempo se redirecciona
al archivo procesos.txt. Con la opción -a (tee -a) concatena (añade al final) al archivo.)
xargs
colocado detrás de una tubería, recupera las cadenas pasadas por argumento de la entrada estándar y ejecuta
comando2 pasándole estas cadenas como argumento
comando1 | xargs [opciones] comando2
–> find ./ -name “*~” | xargs -d “\n” rm
cat
paste
join
cat concatena en vertical, paste en horizontal
paste en horizontal
sobre un campo común (≈ join sql en texto)
sort
Para ordenar líneas de texto
–> -k 3 lista.txt
campo
-b Ignorar los espacios en blanco iniciales
-g Comparar según el valor numérico general
-r Invertir el orden
-n Ordenar por número
-f Ignora distinción mayúsculas/minúsculas
-M Ordenar por mes
-u Permite eliminar las líneas repetidas
-c Compruebe si el archivo de entrada ha sido ordenado
-k campo Ordena considerando campos o columnas específicas. (Delimitador por defecto espacio en blanco)
–> -t “delimidador” En un .csv (separado por comas à -k campo -t ,).
/bin
aplicaciones binarias importantes
/boot
Ficheros de configuración del arranque, núcleos y otros ficheros necesarios para el arranque (boot) del equipo.
/dev
los ficheros de dispositivo
/etc
ficheros de configuración, scripts de arranque, etc.
/home
directorios personales (home) para los diferentes usuarios.
/mnt
sistemas de archivos montados manualmente en el disco duro.
/sbin
binarios importantes del sistema
/var
archivos variables como archivos de registros y bases de datos
df
(display filesystems) –> dispositivos (df -h –> legible humano)
Muestra capacidad, espacio disponible, ocupado
du
(disk usage) –> fichero / directorios (du -sh)
Muestra espacio ocupado (-s total sin subdirect | -c con subdirc)
fsck
(fs check) –> Chek and repair file system
lsof
lista ficheros abiertos por un proceso
Ejemplo:
lsof -u pepe (lista los ficheros abiertos por el usuario)
# lsof -p PID (lista los ficheros abiertos por el proceso con PID)
# lsof -c nombre (lista los ficheros abiertos por el proceso con nombre)
# lsof /path/fichero (muestra los procesos que tiene abierto el fichero)
# lsof -t /path/fichero (muestra solo los PID de los procesos que tiene abierto
el fichero)
mount -t FileSystem origen destino
Montaje de sistemas de ficehros
/etc/fstab à (montajes permanentes)
#device mount point FileSystem options
/dev/sda1 /var/log xfs,nfs,cifs… …..
/etc/mtab à Se registra cada montaje (montajes actuales)
ps
Process Snapshot. Muestra los procesos en ejecución del usuario
Ejemplo:
ps -eF (todos los procesos y formato largo extendido). Con –forest o -H
saca el arbol padres/hijos
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 1 0 0 34749 6684 0 Dec21 ? 00:00:06 /sbin/init
…
mysql 1041 1 0 163468 74540 0 Dec21 ? 00:02:47
/usr/sbin/mysqld
# ps -eLf (informacion sobre los threads). Con -H tambien saca info de threads
UID PID PPID LWP C NLWP STIME TTY TIME CMD
…
www-data 23807 1868 23807 0 27 06:25 ? 00:00:00 /usr/sbin/apache2 -
k start
www-data 23807 1868 23837 0 27 06:25 ? 00:00:00 /usr/sbin/apache2 -
k start
www-data 23807 1868 23838 0 27 06:25 ? 00:00:00 /usr/sbin/apache2 -
k start
otras opciones interesantes:
-p –> PID (muestra un proceso concreto)
-u –> UID/user (muestra los procesos del usuario efectivo)
-U –> UID/user (muestra los procesos del usuario real)
-g –> GID/grupo (muestra los procesos del grupo efectivo)
-G –> GID/grupo (muestra los procesos del grupo real)
-eo lista_columnas_a_mostrar
top
Muestra dinámicamente una tabla con los procesos en ejecución
nice
Establece prioridad a un comando (cuanto menor, más prioridad)
vmstat
Muestra información de procesos, memoria, paginación, io, cpu, disk…
pstree
Muestra el árbol de procesos (para ver como se han ido ‘forkeando’ y sus dependencias)
kill
Manda una señal a un proceso. Si se manda la señal -9, lo ‘mata’. Pero hay más…
nohup comando
Lanza un comando que sobrevive a la destrucción de tu shell (logout)
fork
Duplicado del proceso actual.
Crea un nuevo proceso (se hace fork de uno existente). En Linux todo son procesos con su “PID”
(system call) (Process ID)
jobs
Listar procesos en segundo y primer plano.
Controlar la ejecución de procesos. Puede estar en primer plano (FOREGROUND), o en segundo
plano (BACKGROUND). Los enumera: [1],[2],[3]… Usar ese numero con fg y bg
fg
(foreground o primer plano) Trae a primer plano un trabajo que está ejecutándose en segundo
plano. También para reanudar en primer plano un trabajo que está suspendido o detenido.
bg
(background o segundo plano) Reanudar un trabajo que está suspendido en segundo plano
at
Ejecuta un comando en un momento concreto (at ese momento). Solo vale para una vez.
cron (demonio)
Utilidad de línea de comandos. Es un programador de tareas.
* Una hoja por usuario /etc/crontab (crontab -e –> para editar)
* Un directorio /etc/cron.d o daily, weekly, monthly)
anacron
Programa que complementa a Cron. Ejecuta tareas que se han quedado pendientes de realizar.
* Si al realizar la tarea el equipo está parado, esta se realizará cuando se encienda y Cron llame a
Anacron
dmesg
Lista mensajes de consola cuando arranca el sistema operativo
/etc/hosts
define nombres de equipos con sus direcciones IP. (“DNS LOCALES”)
/etc/hostname
muestra o establece el nombre de nuestro host
/etc/resolv.conf
se configuran aquí el dominio DNS por defecto y los servidores DNS que resuelve para el equipo.
/etc/host.conf
indica cómo (en que orden) se resuelven los nombres de equipo o de dominio.
/etc/network/interfaces
para configurar tarjeta de reden en Debian
NetworkManager
Para configuración de red de Red Hat, se usa nmcli como comando y ficheros de tipo
clave=valor en /etc/sysconfig/network-scripts/ifcfg-name.
ip / ifconfig (obsoleto)
Muestra configuración de red del interface (Obsoleto. Ahora se usa ip)
ifconfig -a (muestra todos los interfaces de red)
# ifconfig eth0 192.168.56.5 netmask 255.255.255.0 (asignar una IP)
# ifconfig eth0 up/down (activar o desactivar un interface)
# ip addr show (muestra los interfaces de red). Version corta –> ip a s
# ip addr add 192.168.56.1 dev eth0 (asignacion temporal de ip)
# ip addr del 192.168.56.15/24 dev eth0 (eliminacion de ip)
# ip neigh (mostrar la tabla de vecinos). Sustituye al comando arp
# ip link set eth1 up/down (activar/desactivar interfaces)
# ip route show (muestra tabla de encaminamiento, como netstat -nr)
# ip route add 10.10.20.0/24 via 192.168.50.100 dev eth0 (añade un ruta
estatica)
# ip route add default via 192.168.50.100 (añade un gateway por defecto)
Fichero de configuración en RedHat
———————————-
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=”p2p1”
BOOTPROTO=”static” o BOOTPROTO=”dhcp” (asignacion dinamica)
IPADDR=”192.168.29.39”
NETMASK=”255.255.255.0”
NETWORK=”192.168.29.0”
BROADCAST=”192.168.29.255”
GATEWAY=”192.168.29.1”
ONBOOT=”yes”
Fichero de configuración en Debian
———————————-
/etc/network/interfaces
iface eth0 inet6 auto
iface eth0 inet dhcp
iface eth0 inet static
address 172.104.158.196/24
gateway 172.104.158.1
ifup / ifdown
ip
Activar / Desactivar interface (Obsoleto. Ahora se usa ip)
Ejemplo:
# ifup eth0 / ifdown eth0
ping <host></host>
Envía Paquetes ICMP ECHO REQUEST a un destino de red (para que conteste si está vivo)
nslookup
Busca un nombre en el servidor DNS
nslookup mocedent.es
dig
Hace consultas DNS
host
Resuelve un nombre de host (o reverso desde la IP)
route
Gestión de routing
traceroute/path
Descubrimiento de ruta entre dos IP’s
Envía paquetes ICMP a todos los equipos de red de camino a la dirección destino (jugando con
el TTL del ECHO REQUEST)
opciones interesantes:
-g direccion_ip (especificar el gateway de salida)
-i direccion_ip (especificar el interface de salida)
-f first_ttl (en lugar de empezar por 1)
-m max_ttl (maximo numero de saltos)
-n (no resuelva las IP a nombres)
netstat
Muestra conexiones de red, tablas de routing, estadísticas de interfaces de red
lsof –i
Repetido pero importante, muestra ficheros abiertos… de internet (conexiones, sockets)
dhclient
Renueva dirección IP
dhclient -r
Libera dirección IP
tcpdump
Es un sniffer de red. Vuelca tráfico de red por pantalla, a fichero… etc
lp / lpr
Envíar trabajos a la impresora
lpq
Informa sobre el estado de la cola de impresión
/etc/passwd
Contiene una línea por usuario, tiene las cuentas de usuario
/etc/group
Contiene una línea por grupo:
grupo:x:gid:member1,member2…
/etc/shadow
Contiene una línea por usuario:
user:password:lastchanged:min_days:max_days:warn_days:inactive_days:expire_date
/etc/sudoers
Configuración del comando sudo para hacer operaciones como otro usuario (un equivalente a un RunAs)
/etc/pam.d/files
Directorio con las configuraciones de PAM (pluggable authentication modules)
useradd
Crea un nuevo usuario o actualiza la información de otro
userdel
Elimina un usuario y sus ficheros
adduser
Añade un usuario al sistema (con preguntas) à SCRIPT
addgroup
Añade un grupo al sistema
delgroup
Elimina un grupo del sistema
gpasswd
Administrar administradores, miembros y contraseñas de grupos
usermod
Modifica una cuenta de usuario
chage
Cambia la información de expiración de una cuenta y contraseñas con preguntas
sudo
Permite ejecutar un comando como otro usuario
Ejemplo:
sudo -u carlos comando (ejecuta comando como si fuera “carlos”)
Fichero de configuracion /etc/sudoers
————————————-
Defaults badpass_message=”Password is wrong, please try again”
Defaults passwd_tries=5
…
QUIEN DONDE=(COMO QUIEN) COMANDOS
o
USER MACHINE=(EFECTIVE_USER) COMANDOS (restricciones)
su
Switch User. Cambiar de usuario, para ejecutar comandos
* su gsus –> cambia a user “gsus” permaneciendo carpeta actual. Hereda variables entorno
* su - gsus –> cambia a user “gsus”. Te posiciona en /home/gsus. No hereda variables entorno
ulimit
Comando para limitar el uso de recursos, como por ejemplo:
- Cantidad de ficheros que puede abrir (hard y soft)
- Cantidad de memoria máxima a consumir
Ejemplo:
cat /proc/sys/fs/file-max (maximo numero de ficheros abiertos para todo el
sistema)
# su - oracle (poder ver los limites de un user concreto)
$ ulimit -Hn (ver el hard limit)
$ ulimit -Sn (ver el soft limit)
Podemos cambiar estos parametros en el fichero /etc/security/limits.conf
Ej.
httpd soft nofile 4096
httpd hard nofile 10240
NOTA: un ususario puede cambiar su limite soft pero nunca el hard (ej. $ ulimit -S -s 8192 – > cambia el stack size a 8192)
Cgroups
Control de grupos:
- Característica del Kernel para limitar, controlar y aislar el uso de recursos (CPU, I/O, disk, red)
- Usado por tecnologías de contenedores (Docker)
fdisk
crear particiones
fdisk /dev/sdb (para discos SATA o SCSI)
mdadm
trabajar con RAID
mdadm -Cv /dev/md0 -l0 -n2 -c128 /dev/sdb1 /dev/sdc1
opciones interesantes:
-C (crear el RAID de discos )
-lx (x es el nivel de RAID deseado)
-ny (y es el numero de discos empleados)
-cz (z es tamaño del chunk)
lvm
gestion de volumenes logicos o gestion de almacenamiento flexible/virtual
# pvcreate / pvdisplay / pvmove (crear un volumen fisico a partir de un disco
entero o particion)
# vgcreate / vgdisplay / vgextend / vgreduce (crear un grupo de volumenes
fisicos)
# lvcreate / lvdisplay /lvextend / lvreduce (crear un volumen logico a partir
de un grupo de volumenes)
mkfs.ext4
formatear dispositivos con sistemas de ficheros
mkfs.ext4 /dev/sdb1
resize2fs dispositivo [nuevo-tamaño] (si no se pone toma el maximo
posible)
reducir o ampliar un sistemas de ficheros
resize2fs /dev/sdb1 50g
opciones interesantes:
-M (shrink o reduce hasta el minimo posible el filesystem)
e2fsck
reparar sistemas de ficheros
umount /dev/vdb1 (requisito previo)
# e2fsck /dev/vdb1
rsync
copia/sincronizacion remota de ficheros / backup inteligente de ficheros usando el
algoritmo delta
# rsync -avzh /root/rpmpkgs /tmp/backups/ (en local)
# rsync -avzh rpmpkgs/ root@192.168.0.101:/home/ (en remoto contra el rsync daemon - puerto 873 por defecto)
setfacl / getfacl
establecer/consultar permisos/acl sobre ficheros/directorios
Ejemplo
# setfacl -m u:pepe:rw /path/fichero (añade acl de permiso de rw para el usuario
pepe sobre el fichero)
# setfacl -m g:developers:rwx /path/fichero (añade acl de permiso de rwx para el
grupo developers sobre el fichero)
# setfacl -b ficharo (borrar todas las acl’s del fichero)
# setfacl -x “acl” fichero (elimina una acl concreta sobre el fichero)
stat
informacion de detalle sobre el fichero/directorio
ejemplo:
root@miegi_linux:~# stat f3.txt
File: f3.txt
Size: 32 Blocks: 8 IO Block: 4096 regular file
Device: 800h/2048d Inode: 555 Links: 3
Access: (1644/-rw-r–r-T) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-13 12:03:23.768504851 +0000
Modify: 2019-12-03 19:13:44.736114591 +0000
Change: 2019-12-10 17:36:02.232820347 +0000
Birth: -
nice/renice
nice Ejecuta un comando con una prioridad distintas ala de por defecto.
(modifica la prioridad de planificacion de un proceso)
renice Cambia la prioridad de un proceso ejecutándose. No se puede aumentar la urgencia.
Ejemplo:
nice -n valor-de-nice comando argumentos (solo el root puede usar los valores negativos)
$ nice -n NUMERO_PRIORIDAD COMANDO
$ renice -n NUMERO_PRIORIDAD COMANDO
ldd
(listar las depenencias (librerias dinamica) que usa un determinado programa/libreria)
Ejemplos:
ldd /usr/sbin/nginx
linux-vdso.so.1 (0x00007ffc9bb6f000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0dd7b41000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
kill
enviar señales a un proceso
ejemplo:
# kill -l (muestra todas las señales)
# kill SIGKILL 63772 o kill -9 63772 (este numero es un pid)
NOTA: existen variantes que lo hacen en base al nombre del proceso como: pkill,killall
whereis, which, type
localización de la ruta del binario
Ejemplo:
whereis -b netstat
# type netstat
# which netstat
nohup
si queremos que nuestro comando “sobreviva” a la señal SIGHUP tenemos que ejecutarlo asi:
Ejemplo:
nohup sh your-script.sh > /path/to/custom.out &
watch
monitorizar la salida de un comando en tiempo real
watch -n segundos_para_refrescar -d (resaltar cambios en la salida)
watch -n 1 -d ‘ps -e -o pid,ppid,cmd,%mem=USO_MEMORIA,%cpu=USO_CPU –sort=-
%mem | head’
crontab / cron
planificacion de procesos
Ejemplo:
crontab -e (para editar el fichero con la planificacion)
# crontab -l (lista el crontab actual)
# crontab -r (borrar el crontab actual)
Formato del fichero:
m h dom mon dow usario comando (n lineas)
m –> minuto (0-59)
h –> hora (0-23)
dom –> dia del mes (1-31)
mon –> mes (1-12)
dow –> dia de la semana (0-7 son domingo)
at
planificacion de procesos en un momento concreto unicamente
Ejemplo:
at now + 1 minute -f script.sh
# atq (ver los trabajos encolados)
# atrm (eliminar un trabajo encolado)
nmap
herramienta de analisis de red / seguridad
ejemplos:
nmap server2.ruinosa.com (escaneo de puertos)
# nmap 192.168.0.* (escaneo de una subred)
# nmap -A 192.168.0.101 (escanea informacion del SO y traceroute)
# nmap -O server2.ruinosa.com (detectar sistema operativo)
# nmap -sA 192.168.0.101 (para detectar reglas del firewall)
# nmap -sS 192.168.0.101 (escaneo de puertos basa en el envio de TCP SYN, Half-
Open scan)
# nmap -p 80 server2.ruinosa.com (escanear un puerto especifico)
# nmap -sV 192.168.0.101 (descubrir versiones de los servicios)
ss / netstat (obsoleto)
muestra información sobre conexiones de red, encaminamiento, etc
netstat -at (solo conexiones TCP). Con -au serían UDP
# netstat -atn (no resuelva las IP a nombres)
# netstat -l (solo conexiones en estado LISTEN)
# netstat -ltnp (muestra el PID/ProgramName)
# netstat -ltne (muestra el UID)
# netstat -nr (muestra tabla de encaminamiento, como ip route show)
# netstat -ie (muestra los interfaces de red)
# ss -atun (muestra todos los puertos TCP y UDP y en formato numérico)
# netstat -ac (modo promiscuo, se refresca cada 5 segundos)
# ss -at ‘( dport = :22 or sport = :22 )’ (permite filtros)
NOTA: con lsof -i obtenemos una información muy similar
dig / nslookup / host
consultas dns
ejemplo:
host -t AAAA www.ruinosa.com (localiza la ipv6 de ese nombre)
# dig yahoo.com (consulta registros A y AAAA)
# dig yahoo.com MX (consulta registro MX)
# dig -x 72.30.38.140 +short (resolucion inversa)
# nslookup yahoo.com (consulta registro A)
# nslookup 209.191.122.70 (resolucion inversa)
# nslookup -query=mx yahoo.com (consulta registro MX)
# nslookup -type=mx yahoo.com 8.8.8.8 (idem, usando el DNS de Google)
ping / ping6
chequeo de host con ICMP en IPv4 e IPv6
Ejemplo:
ping -c 4 192.168.0.103 (lanza unicamente 4 ECHO_REQUEST)
otras opciones interesantes:
-f (flood, envia 100 o mas paquetes por segundo)
-i segundos (incrementa el intervalo de envio entre paquetes)
-6 (solo usa IPv6)
route (obsoleto)
gestión de tabla de encaminamiento
Ejemplo:
route add default gw 192.168.29.1
tcpdump
analisis del trafico de red
Ejemplo:
tcpdump -i eth0 (capturar trafico del interface eth0)
# tcpdump -c 5 -i eth0 (capturar solo 5 paquetes)
# tcpdump -A -i eth0 (mostrar captura en modo ASCII)
# tcpdump -D (mostrar interfaces disponibles)
# tcpdump -w 0001.pcap -i eth0 (guardar en un fichero la captura)
# tcpdump -i eth0 tcp (captura trafico tcp)
# tcpdump -i eth0 port 22 (captura trafico del puerto 22)
# tcpdump -i eth0 src/dst 192.168.0.2 (captura hacia/desde una IP)
nmcli (paquete network-manager) + iw (wifi)
Gestión de interfaces de red
iw dev (muestra tus interfaces wifi. Ej. wlp2s0)
# iw wlp2s0 link (estado de conexion de ese dispositivo)
# iw wlp2s0 scan (escanea la redes wifi)
# nmcli dev wifi connect MiegiWifi password 1234 (conectar a una wifi)
# nmcli dev show (listado los dispositivos de red)
# nmcli connection (listado de conexiones activas)
nc (paquete nc en RedHat y Netcat en Debian)
Navaja suiza de red
Ejemplo:
nc -v -w 2 z 192.168.56.1 22 #scan a single port
-v (verbose)
-w timeout_segundos
-z (simplemente que haga un escaneo)
# nc -l -vv -p 5000 (crear un servidor de chat)
-l (listen mode)
-vv (more verbose)
shutdown / poweroff
parada del sistema
Ejemplo:
shutdown now (con -P apaga de la maquina)
# shutdown -H now (para la maquina: procesos y cpu. Ej: mantenimiento/cambio
tarjeta PCI)
# shutdown -c (cancela un shutdown pendiente)
# poweroff (apaga la maquina)
# poweroff –reboot (reinicia la maquina)
# halt (para la maquina)
# halt -p (apaga la maquina)
# halt –reboot (reinicia la maquibna)
systemctl (SystemD) / service (SysVinit)
gestion de servicios
systemctl status firewalld.service (chequea que el estado del
servicio/unidad)
# systemctl status firewalld (idem sin el “.service”)
# systemctl list-unit-files –type=service –state=active (lista todos los
servicios activos)
# systemctl start/restart/stop/reload httpd.service (inicio,reinicio,parada y
recarga)
# systemctl enable/disable httpd.service (activar el servicio al arranque)
# systemctl reboot (reiniciar la maquina)
# systemctl poweroff (apagar la maquina)
# systemctl halt (parar la maquina)
# service miservicio start/stop/restart/reload/status
# chkconfig miservicio on/off (activar el servicio al arranque)
apt / dpkg / aptitude /yum / dnf / rpm
apt-cache search vsftpd (busca el paquete vsftpd en tu catalogo local)
instalación de paquetes
FAMILIA DEBIAN (repositorios en /etc/apt/sources.list)
# apt-cache search vsftpd (busca el paquete vsftpd en tu catalogo local)
# apt-cache show vsftpd (info del paquete)
# apt-get update (actualiza el indice de paquetes usando los repositorios)
# apt-get upgrade (actualiza los paquetes instalados en el sistema)
# apt-get install vsftpd (instala el paquete vsftpd online)
# apt-get remove vsftpd (elimina el paquete)
# apt-get purge vsftpd (elimina el paquete y ficheros de configuracion)
# apt-get autoremove (elimina paquetes huerfanos, que ya no son necesarios)
# dpkg -i flash_2.8.2+squeeze1_i386.deb (instalación offline)
# dpkg -l (lista paquetes instalados)
# dpkg -r nombre_paquete (remove, con -p hace un purge)
# dpkg -c flash_2.8.2+squeeze1_i386.deb (listar el contenido)
# dpkg -s nombre_paquete (chequea si está instalado)
# dpkg -L nombre_paquete (localizacion/directorios de la instalacion)
# dpkg -P nombre_paqueta (elimina el paquete y ficheros de configuración)
FAMILIA REDHAT (repositorios en /etc/yum.repos.d/)
# yum install firefox (instala el paquete firefox)
# yum remove firefox (elimina el paquete)
# yum update mysql (actualiza ese paquete)
# yum list openssh (busca el paquete llamado exactamente openssh)
# yum list installed (muestra paquetes instalados)
# yum search openssh (busca el paquete openssh)
# yum info firefox (muestra info del paquete)
# yum repolist (muestra lista de repositorios activos)
# yum –enablerepo=epel install phpmyadmin (para instalar desde un repo
concreto)
# rpm -ivh pidgin-2.7.9-5.el6.2.i686.rpm (instalación offline verbose)
# rpm -Uvh nx-3.5.0-2.el6.centos.i686.rpm (hacer un upgrade)
# rpm -qpR BitTorrent-5.2.2-1-Python2.4.noarch.rpm (chequear dependencias
antes de la instalacion)
# rpm -ql BitTorrent (lista los ficheros de la instalación)
# rpm -evv nombre_paquete (elimina el paquete)
# rpm -qi vsftpd (muestra información del paquete instalado)
# rpm -qip sqlbuddy-1.3.3-1.noarch.rpm (muestra información del paquete)
useradd / usermod / userdel
creacion/modificacion/borrado de usuarios
Ejemplos:
# useradd -m -d /home/pepe -s /usr/bin/zsh -G devs,admins pepe (crea el
usuario pepe, crea el directorio home especificado, le configura el shell zsh
y le asocia a esa lista de grupos)
# useradd -e 2022-01-22 pepe (fecha de expiracion de la cuenta)
# useradd -f 45 (bloquea la cuenta pasados esos dias de inactividad)
# useradd -r nginx (crea una cuenta de sistema)
# usermod -l pepeito pepe (cambia el login de “pepe” a “pepito”)
# usermod -a -G Marketing pepe (añade a pepe al grupo de Marketing)
# usermod -L pepe (bloquea la cuenta). Con -U (desbloquea)
# userdel -r pepe (borra la cuenta y todos sus ficheros asociados)
who
muestra informacion de usuario conectados
Ejemplo:
who -q (muestra los login y el numero total de usuarios logados)
# who -m (muestra el hostname desde donde está conectandose el usuario)
root pts/0 2020-01-21 21:40 (77.224.114.94)
otras opciones “peculiares”:
# who -r (muestra el runlevel actual)
# who -b (fecha y hora del ultimo inicio del sistema)
id [usuario]
(muestra información del usuario: uid, gid, grupos)
dmesg
muestra mensajes de diagnostico
Ejemplo:
dmesg –level=alert,crit,… (filtrar por el nivel de cada mensaje)
# dmesg -k (mensajes del kernel)
# dmesg -T (muestra la fecha y hora en un formato legible)
# dmesg -w (se queda esperando a nuevos mensajes)
# dmesg -u (mensajes del espacio de usuario)
uname
muestra información del sistema
Ejemplo:
uname -a (muestra toda la informacion).
equivalente a # cat /proc/version
# uname -s (nombre del kernel)
Linux (similar a # cat /proc/sys/kernel/ostype)
# uname -n (nombre del host)
miegi_linux (similar a # cat /proc/sys/kernel/hostname o /etc/hostname)
# uname -v (version del kernel)
#1 SMP Debian 4.9.189-3+deb9u2 …(similar a # cat /proc/sys/kernel/version)
# uname -r (release del kernel)
4.9.0-11-amd64 (similar a # cat /proc/sys/kernel/osrelease)
# uname -p (tipo de procesador)
tipo de cpu o “unknown”
# uname -m (nombre de hardware)
x86_64 (similar al comando “arch”)
# uname -o (sistema operativo)
GNU/Linux
sysctl
configurar parametros del kernel en tiempo de ejecucion
sysctl -a (ver una lista completas de los parametros del kernel)
# sysctl -w net.ipv4.ip_forward=1 (ej. capacidad de routing, aunque temporal)
# echo “net.ipv4.icmp_echo_ignore_all = 1”»_space; /etc/sysctl.conf (es definitivo)
# sysctl -p (aplicar los cambios)
NOTA: si queremos que el cambio sea permanente hay que editar el fichero /etc/sysctl.conf
lscpu
muestra informacion del procesador: arquitectura, cores, virtualizacion, cache L1,L2, etc, equivalente a # cat /proc/cpuinfo
lsusb / lspci
muestra los dispositivos conectados al USB o al PCI
modprobe
añadir o borrar modulos del kernel
Ejemplo:
lsmod (listado de modulos cargados actualmente)
# modprobe cifs (añadir un modulo)
# modprobe -r cifs (eliminar un modulo)
# modinfo cifs
filename: /lib/modules/4.9.0-11-amd64/kernel/fs/cifs/cifs.ko
version: 2.09
description: VFS to access servers complying with the SNIA CIFS depends:
fscache,dns_resolver
free
muestra información de la memoria RAM
Ejemplo:
free -h (formato legible)
# free -b/m/g/k (información en bytes/kibi/mebi/gibibyte –> base 2)
# free –si (aplica las unidades del sistema internacional –> base 10)
obtiene la informacion de # cat /proc/meminfo
ip route show
muestra la tabla de routing completa
cat /etc/redhat-release
Muestra la versión de Redhat RHEL
Comando Vi
:q
Salir si no hubo cambios del editor vi
Comando Vi
:q!
Salir sin guardar cambios del editor vi
Comando vi
:w
Guardar cambios
Comando vi
:wq
Guardar cambios y salir
comando vi
a
Inserta texto a la derecha del cursor