Saltar al contenido principal

Linux-CheatSheet

Estructura de directorios:

PathContenido
/Raíz del sistema.
/binBinarios del usuario.
/bootArchivos para el arranque del sistema.
/devDispositivos de almacenamiento conectados.
/etcArchivos de configuración de los paquetes.
/homeDirectorio personal del usuario.
/libLibrerías esenciales y módulos del kernel.
/mediaPunto de montaje para almacenamiento externo.
/mntPunto de montaje para almacenamiento interno.
/procArchivos y procesos del sistema actuales.
/rootSimilar a /home del usuario root.
/sbinBinarios del usuario root.
/srvDirectorio para servicios del sistema (Por ej: FTP)
/tmpAlmacenamiento de archivos temporales.
/usrArchivos de solo lectura de las aplicaciones.
/varArchivos de info del sistema (Por ej: Logs)

Comandos básicos de Linux:

ComandoEjemploDescripción
lsls /DIRECTORIOListar los archivos y directorios.
ls -laListar archivos ocultos.
-lFormato de lista.
-rOrden inverso.
-RRecursivo.
-SOrdenar por tamaño.
cdcd /DIRECTORIOChange directory. Cambiar de directorio.
cd ..Volver un directorio hacía atrás.
cdDirectorio home del usuario.
pwdpwdVer directorio actual de trabajo.
mkdirmkdir CARPETA_1Crear un directorio.
rmrm ARCHIVO.txtEliminar archivos o directorios.
rm -rf /DIRECTORIOElimina la carpeta con todo el contenido.
cpcp ARCHIVO.txt /DIRECTORIO_DESTINOPermite copiar un archivo.
mvmv ARCHIVO.txt /home/video.mkvMover o cambiar el nombre de un archivo.
touchtouch DOCUMENTO.txtCrea un archivo vacío o actualiza fecha de acceso.
catcat DOCUMENTO.txtMuestra contenido de un archivo.
grepgrep "patrón" ARCHIVO.txtBusca patrones de texto en archivos.
headhead ARCHIVOMuestra las primeras 10 líneas de un archivo.
head -n 5 ARCHIVOMuestras las primeras 5 líneas.
tailtail ARCHIVOMuestra las últimas 10 líneas de un archivo.
tail -n 5 ARCHIVOMuestra las últimas 5 líneas.
wcwc ARCHIVO.txtContar palabras, líneas, caracteres y más.
wc -l ARCHIVO.txtContar líneas.
wc -w ARCHIVO.txtContar palabras.
wc -c ARCHIVO.txtContar caracteres.
sortsort ARCHIVOOrdena.
uniquniq ARCHIVODetectar líneas duplicadas.
uniq -d ARCHIVOMuestra solo las líneas duplicadas.
diffdiff ARCHIVO1 ARCHIVO2Compara dos archivos.
diff -q ARCHIVO1 ARCHIVO2Ver solamente si difieren.
diff -u ARCHIVO1 ARCHIVO2Ver las diferencias.
awkawk ‘{pint $1}’Extraer la primera columna.
sedsed 's/gato/perro/g'Cambiar palabras.
trtr ‘.’ ‘-’Sustituir el punto por un guión.
>ls -l /usr/bin 2> /dev/nullRedirigir stderr al /dev/null

Gestión de Usuarios, Permisos y Propietarios:

ComandoEjemploDescripción
useradduseradd -m -s /bin/bash USUARIOAñadir un usuario, crear el home y asignarle un terminal.
passwdpasswd USUARIOCambiar contraseña del usuario.
usermodusermod -aG GRUPO USUARIOAñadir al usuario Y al grupo X.
userdeluserdel -r USUARIOEliminar un usuario y su carpeta personal.
gpasswdgpasswd -d USUARIO GRUPOEliminar a un usuario de un grupo
chmodchmod 755 ARCHIVOCambia los permisos de archivos o directorios.
chmod -x ARCHIVOAsigna permiso de ejecución al archivo.

| chown | chown USUARIO:GRUPO ARCHIVO | Cambia el propietario de archivos o directorios. |

Monitoreo y Gestión de Procesos:

ComandoEjemploDescripción
psps auxMuestra información sobre los procesos en ejecución.
toptopMuestra información en tiempo real sobre el uso de recursos.
jobs
bg
fg
kill
killall

Gestión de Espacio en Disco:

ComandoEjemploDescripción
fdiskfdisk -lListar los discos físicos.
dfdf -hMuestra el espacio en disco utilizado y disponible en particiones.
dudu -sh DIRECTORIOMuestra el uso del espacio en disco de directorios y archivos.

Compresión y Archivos:

ComandoEjemploDescripción
tartar -czvf archivo.tar.gz DIRECTORIOCrea o extrae archivos comprimidos en formato tar.
findfind /ruta -name "archivo.txt"Busca archivos o directorios en el sistema de archivos.
find /var/www -name '*.css'Buscar todos los archivos que tienen extensión .css de la carpeta /var/www/
mountmount -t tipo ruta_unidad ruta_destinoMontar sistema de archivos.
mount -t ntfs /dev/sdb2 /media/win/
sudo mount -t iso9660 /Ruta_ISOMontar un ISO.
sudo mount /Ruta_USB /Ruta_destinoMontar USB.
umountumount ruta_unidadDesmontar sistema de archivos.
umount /dev/sdb2

Red y Conexiones Remotas:

ComandoEjemploDescripción
sshssh usuario@hostnameInicia una sesión segura de shell remoto.
ssh -p 20 usuario@IPConectar por otro puerto.
ssh -L puerto_local:Host_remoto:puerto_remoto usuario@IPCrear un túnel SSH local.
ssh-keygenssh-keygen -t rsa -b bitsCrear claves.
ssh-copy-idCopiar claves en el servidor SSH para modo desatendido.
scpscp user@remotehost.com:/remote/path/to/foobar.md /local/destCopy local file to remote dir
scp foobar.md user@remotehost.com:/remote/destKey files can be used (just like ssh)
scp -i my_key.pem foobar.md user@remotehost.com:/remote/destTransferir archivos con SSH.
openssh-serversudo apt-get install openssh-serverInstalar servidor SSH.
Editar el archivo /etc/ssh/sshd_config
wgetwget URLDescarga archivos desde la web a través de la línea de comandos.
netstatnetstat -ntlp # open TCP socketsVer las diferentes conexiones de red.
netstat -nulp # open UDP socketsVer conexiones UDP.
netstat -nxlp # open Unix sockets

Comandos de Sistema:

ComandoEjemploDescripción
unameuname -aMuestra información sobre el sistema operativo.
datedateMuestra la fecha y hora actual.
uptimeuptimeMuestra el tiempo de actividad del sistema.
whowhoMuestra quién está conectado al sistema.
dmesgdmesgMuestra registros del kernel.
hostnamehostnameNombre del equipo.
hostname -IIP del equipo.
lsb_releaselsb_release -aDetectar versión y distribución de Linux.
cat /etc/issueIgual que el anterior.
aliasalias install='sudo apt-get -y install’Permite crear un alias para los comandos. Poder ejecutar un comando largo con uno mas corto.
locatelocate archivoLocalizar un archivo en el sistema.
lshwgrep cpuVer configuración de hardware del sistema.

Servicios del sistema:

ComandoEjemploDescripción
systemctlsystemctl start SERVICIOGestionar servicios del sistema.
systemctl enable SERVICIOActivar el servicio al arrancar el sistema.
systemctl disable SERVICIODesactivar servicio al arrancar el sistema.

Gestores de paquetes:

ComandoEjemploDescripción
aptapt-get updateActualizar lista de repositorios.
apt-get upgradeActualizar dependencias.
apt-get dist-upgradeActualizar distribución.
apt-get --purge remove paqueteDesinstalar paquete y sus archivos.
apt-get autoremoveEliminar dependencias innecesarias.
apt show cronMostrar info de un paquete.
apt list --installedMostrar paquetes instalados.
dpkgsudo dpgk -i paquete.debInstalar paquete .DEB
yumyum install PAQUETE [-y]Instalar paquete.
yum check-updateVerificar actualizaciones disponibles.
yum updateActualizar todos los paquetes.
yum upgrade PAQUETEActualizar un paquete específico.
yum remove PAQUETEDesinstalar un paquete.
yum autoremoveEliminar paquetes huérfanos.

Redes y Conectividad:

ComandoEjemploDescripción
ifconfigifconfigMuestra información de las interfaces de red.
pingping ejemplo.comPrueba la conectividad con un host remoto.
netstatnetstat -tulnMuestra información sobre puertos de red abiertos.
traceroutetraceroute ejemplo.comRastrea la ruta de paquetes hacia un host remoto.
ssh-keygenssh-keygen -t rsaGenera pares de claves SSH para autenticación segura.
ipip aVer parámetros de red.

GPG:

EjemploDescripción
gpg --gen-keyGenerar claves.
gpg --keyserver pgp.mit.edu --send-keys NNNNNNNNExportar claves al servidor.
gpg --keyserver pgp.mit.edu --recv-keys NNNNNNDescargar claves del servidor.
gpg --list-keysListar anillo de claves.

Bash:

Comando BashEjemploDescripción
echoecho "Hola, mundo"Imprime texto en la pantalla.
$(ls)$(ls)Ejecutar comandos a nivel de sistema.
variablesnombre="Juan"; edad=30Declaración y asignación de variables.
if…elsebash if [ condición ]; then comando; else otro_comando; fiEstructura condicional.
for loopbash for i in {1..5}; do echo $i; doneBucle que itera a través de elementos.
while loopbash while [ condición ]; do comando; doneBucle que se ejecuta mientras se cumple una condición.
funcionesbash function saludo() { echo "Hola, $1"; }; saludo "Juan"Declaración y uso de funciones.
readbash read -p "Ingresa un valor: " valor; echo "Ingresaste: $valor"Lee la entrada del usuario.
casebash case $opcion in 1) echo "Opción 1";; 2) echo "Opción 2";; *) echo "Opción no válida";; esacEstructura de selección múltiple.
arreglos (arrays)bash colores=("rojo" "verde" "azul"); echo ${colores[0]}Declaración y uso de arreglos.
grepgrep "patrón" archivoBusca patrones de texto en archivos.
sedsed 's/antiguo/nuevo/g' archivoEdita y transforma texto en archivos.
awkawk '{print $1}' archivoProcesa y formatea texto en archivos.
pipescomando1 | comando2
redireccióncomando > archivo.txtRedirige la salida estándar a un archivo.
condicional ternariobash edad=20; resultado=$((edad >= 18 ? "Mayor de edad" : "Menor de edad"))Operador ternario para condicionales.

SSH

El archivo de configuración se encuentra en /etc/ssh/sshd_config.

Recargar el servicio después de configurar con systemctl reload sshd para aplicar los cambios.

ParámetroOpciónDescripción
PermitRootLoginnoNo permite conexiones root.
yesPermite conexiones root.
without-password
AllowUsersuser1 user2Permite al usuario1 y usuario2.
DenyUsersuser1 user2Deniega solo a los usuario1 y usuario2.
AllowGroupsgroup1 group2Permite a los usuarios de los grupos 1 y 2.
DenyGroupsgroup1 group2Deniega todos los usuarios salvo a los de los grupos 1 y 2.

Crontab

Usamos crontab -e para configurar las tareas de Cron. The locations are as follows:

  • /var/spool/cron/username user specific
  • /etc/crontab system wide crontab

Formato de las tareas:

.---------------- minutos (0 - 59 | */5 [cada 5 minutos])
| .------------- horas (0 - 23)
| | .---------- día del mes (1 - 31)
| | | .------- mes (1 - 12) OR jan,feb,mar,apr ...
| | | | .---- día de la semana (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,etc
| | | | |
* * * * * user-name comando a ejecutar
ComandoDescripción
systemctl status crond.serviceComprobar el estado del servicio
crontab -l
crontab -e
crontab -e -u username
crontab -r

Carpetas de scripts

Los scripts que se encuentren en uno de los siguientes directorios se ejecutarán en el intervalo especificado por el nombre del directorio:

  • /etc/cron.hourly
  • /etc/cron.daily
  • /etc/cron.weekly
  • /etc/cron.monthly

Permitir / Denegar uso

Añadir nombres de usuario, uno por línea a los siguientes archivos:

  • /etc/cron.allow Whitelist
  • /etc/cron.deny Blacklist

Logs

La ejecución de cronjobs se registra en /var/log/cron. Los resultados se envían al correo de los usuarios /var/spool/mail/username.

Samba

Server

Archivo de configuración situado en /etc/samba/smb.conf.

Las cuentas locales deben registrarse en Samba mediante smbpasswd.

yum install samba samba-client samba-common # Samba installation
systemctl start smb # Start service
systemctl enable smb # Start service on system start
vi /etc/samba/smb.conf # Change config
testparm # Check if config is ok
systemctl restart smb # Reload config
smbpasswd -a username # Register user with samba

Ejemplo de /etc/samba/smb.conf:

[global]
workgroup = WORKGROUP # workgroup of smb server
netbios name = centos # name of smb server
security = user # security mode (user / ads / domain)
unix password sync = yes # sync unix password with smb password
invalid user = root bin daemon # deny access globally (config in share section overrides this)

[Transfer] # name of share
path = /transfer # path of directory to be shared
comment = File transfer # description
read only = no # access permissions
guest ok = no # allow guest access (no password)
browsable = yes # visible or hidden?
valid users = username @groupname # allow user/group to access the share

La sección especial [homes] comparte automáticamente el directorio personal del usuario bajo las siguientes condiciones:

  • Un usuario intenta acceder a un recurso compartido con el nombre de su cuenta de usuario
  • No existe una sección explícita para este recurso compartido en smb.conf.
  • La cuenta de usuario existe en /etc/passwd.

La opción browsable tiene un significado diferente en esta sección y especifica si la parte personal debe ser listada. La opción habitual browsable se hereda de la sección [global]. Se pueden utilizar variables para cambiar la ruta, por ejemplo:

  • %U nombre de usuario actual
  • %H directorio personal del usuario actual

Ejemplo:

[homes]
browsable = no
writable = yes
path = %H/smb

Client

yum install samba-client cifs-utils                       # Install client and tools
smbclient -L //server # Show SMB shares
mkdir /targetdir # Create mountpoint
mount.cifs -o username=jenkins //server/james /mountpoint # Mount manually
umount.cifs /mountpoint # Unmount manually
vi /etc/fstab # Mount on system start
vi /root/cifs/.username # Create credential file
mount -a # Test fstab
init 0 # Auto mount

FTP

El archivo de configuración se encuentra en /etc/vsftpd/vsftpd.conf

Ejemplo:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
tcp_wrappers=YES
use_localtime=YES
dirlist_enable=YES
pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=192.168.1.10
apt install vsftpd          # Instalación
systemctl start vsftpd # Iniciar servicio
systemctl enable vsftpd # Iniciar servicio al arrancar
nano /etc/vsftp/vsftpd.conf # Cambiar configuración
systemctl restart vsftpd # Reiniciar servicio

MySQL Server

yum install mariadb-server  # Instalar servidor
systemctl start mariadb # Iniciar servicio
systemctl enable mariadb # Iniciar servicio al arrancar
mysql_secure_installation # Run security wizard
mysql -u root -p # Conectar con MySQL