Files
guias_informatica/Guia_linux.md
T
2026-08-04 19:24:21 +02:00

942 lines
34 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AYUDA LINUX
**Navegación y Exploración**
clear ctrl+l limpiar terminalpwd Muestra el directorio actual (Print Working Directory).ls Lista archivos y directorios.
ls -R Lista filas y subdirectorios
ls -l Lista en formato largo (permisos, tamaño, fecha).
ls -a Muestra archivos ocultos (incluye . y ..).
tree Muestra la estructura de directorios en forma de árbol.
ls | wc -l Cuenta filas/archivos y directorios
ls -a | wc -l Cuenta tambien archivos ocultos
ls -R | wc -l Cuenta files en directorio atual y subdirectorios
ls \*.txt | wc -l Cuenta filas con determinada extension
**Creación y Manipulación de Archivos**
touch Crea un archivo vacío o actualiza su fecha de modificación.
Ejemplo: touch archivo.txt
mkdir Crea un directorio.
Ejemplo: mkdir carpeta
cp Copia archivos o directorios.
cp archivo.txt destino/
cp -r directorio/ destino/ (copia recursiva para directorios).
cp -r directorio/origen . (copia directorio origen al directorio donde estas situado usando con punto al final)
mv Mueve o renombra archivos.
mv archivo.txt nuevo\_nombre.txt (renombra).
mv archivo.txt /ruta/destino/ (mueve).
rm Elimina archivos.
rm archivo.txt
rm -r directorio/ (elimina recursivamente).
rm -f (fuerza eliminación sin confirmación).
**Visualización de Archivos**
cat Muestra el contenido de un archivo.
Ejemplo: cat archivo.txt
less / more Muestra el contenido paginado (para archivos largos).
head Muestra las primeras líneas (por defecto, 10).
head -n 5 archivo.txt (muestra 5 líneas).
tail Muestra las últimas líneas.
tail -f archivo.log (sigue cambios en tiempo real, útil para logs).
**Búsqueda de Archivos**
find Busca archivos por nombre, tipo, tamaño, etc.
find /ruta -name "\*.txt" (busca archivos .txt).
find / -type f -size +10M (archivos >10MB).
grep Busca texto dentro de archivos.
grep "palabra" archivo.txt
grep -r "texto" /directorio/ (búsqueda recursiva).
**Buscar y borrar duplicados**
sudo apt install fdupes
fdupes -r /ruta/de/la/carpeta        Buscar duplicados (sin borrar)
fdupes -rd \~/Documentos            Te pregunta cuáles borrar
fdupes -rdN \~/Documentos        Borra todos menos uno
**Permisos y Propiedad**chmod Cambia permisos (lectura, escritura, ejecución).chmod 755 archivo.sh (permisos en formato numérico).chmod -R 777 db permisos a carpeta y contenidochmod +x script.sh (agrega permiso de ejecución). chown Cambia el propietario de un archivo. chown usuario:grupo archivo.txt
**Compresión y Descompresión**
tar Empaqueta y descomprime archivos.
tar -cvf archivo.tar directorio/ (crea un .tar).
tar -xvf archivo.tar (extrae).
tar -czvf archivo.tar.gz directorio/ (comprime con gzip).
gzip / gunzip Comprime/descomprime archivos .gz.
zip / unzip Trabaja con archivos .zip.
**Transferencia y Descarga**
wget Descarga archivos desde la web.
Ejemplo: wget <https://ejemplo.com/archivo.zip>
curl Transferencia de datos desde/hacia servidores.
Ejemplo: curl -O <https://ejemplo.com/archivo.txt>
**Comparación de Archivos** diff Compara dos archivos línea por línea. Ejemplo: diff archivo1.txt archivo2.txt
**Enlace simbolico**
Enlaces ln Crea enlaces (links) entre archivos.
ln -s /ruta/origen /ruta/enlace (enlace simbólico).
**Puertos**
Mostrar os puertos ocupados
sudo ss -tulpn &#x20;
ejemplo resultado:
Netid Local Address:Port Process
tcp 0.0.0.0:22 sshd
tcp 0.0.0.0:80 nginx
tcp 0.0.0.0:443 nginx
**Buscar un puerto concreto**, por ejemplo el 8080:
sudo ss -ltnp | grep :8080
**Ver qué proceso usa un puerto:**
sudo lsof -i :8080
sudo lsof -i :443
**Formatear discos**
sudo fdisk /dev/sdX     Borrar el disco
Dentro de `fdisk`:
`g → GPT (recomendado) | n → nueva partición | w → guardar cambios`
lsblk para comprobar
sudo mkfs.ext4 /dev/sdX1 formatear particion en ext4
sudo mkfs.ext4 /dev/sdX formatear todo el disco en ext4
sudo mkfs.ext4 -L DATOS /dev/sdX1 formatear y asignar etiqueta
(mejor usars particiones y no todo el disco)
sudo e2label /dev/sdX1 DATOS asignar etiqueta
sudo mkdir /mnt/datos    crear punto de montaje
sudo mkdir /mnt/datos     montar el disco
df -h     verificar
Montaje automático de disco
blkid /dev/sdX1    obtener UUID
sudo nano /etc/fstab     editar fstab
UUID=xxxx-xxxx /mnt/datos ext4 defaults 0 2 añadir linea para el disco
Resumen rapido discos
lsblk sudo umount /dev/sdX1
sudo mkfs.ext4 /dev/sdX1
sudo mount /dev/sdX1 /mnt/datos
TERMINAL CTRL + ATL + T abrir terminal
ctrl + l = clear limpiar terminal
bash terminal normal
zsh terminal zsh
echo \$SHELL info shell activa chsh -s /bin/bash cambiar shell bash - cerrar sesion aplicar cambios chsh -s /bin/zsh cambiar shell zsh - cerrar sesion aplicar cambios
**USUARIOS** - GRUPOS
uname -a Datos instalacion linux
whoami Usuario actual
cut -d: -f1 /etc/passwd Ver usuarios del sistema sudo adduser nombre\_usuario Crear usuario sudo passwd nombre\_usuario Cambiar contraseña de usuario
id nombre\_usuario Informacion de usuario su - nombre\_usuario Cambiar a otro usuario sudo su cambiar a root (superusuario)
**HOSTS**
/etc/hosts
sudo nano /etc/hosts
**PATH**
Añadir al PATH
nano \~/.bashrc     Ver/editar path usando bash nano
\~/.zshrc                    Ver/editar path usando zshrc
export PATH=PATH:/opt/lampp/bin
Editar al final del archivo, ejemplo echo 'export LS\_COLORS="LS\_COLORS:di=36"' >> \~/.bashrc Escribir directamente en PATH source \~/.bashrc
**PARAR/MATAR PROCESOS**
ps aux Ver procesos
ps aux | grep gunicorn Localizar un proceso
kill \<PID> Matar proceso&#x20;
kill -9 \<PID> Forzar matar proceso&#x20;
sudo systemctl stop gunicorn Parar proceso iniciado como servicio systemd
**DIRECTORIOS Y ARCHIVOS**
ls listar directorio
ls -lah -l lista, -a ocultos, -h tamaño
ls -d \*/ mostrar solo directorios
ls -1 mostrar 1 columna
ls -lh -l lista, -h tamaño
Crear enlace simbólico/acceso directo:
ln -s /home/juan/Documentos/Proyectos \~/Escritorio/Proyectos
du -h Lista directorios y subdirectorios - tamaño
du -sh \* Archivos y directorios - tamaño (ruta actual)
du -sh \*/ Directorios - tamaño (ruta actual)
du -sh /home Directorios home - tamaño
du -sh Tamaño total de la carpeta actual
du -sh \* | sort -hr Tamaño archivos/directorios ordenados
crear alias tamaños archivos/directorios
alias size='du -sh \* 2>/dev/null | sort -hr'
source \~/.bashrc
lsblk Listar discos y particiones
df -h Ver discos y tamaño
sudo fdisk -l Detalle de particiones
free -h Saber memoria total y disponible del equipo
uname -r kernel en uso
dpkg --list | grep linux-image lista de kernels instalador en sistema
sudo reboot Actualizar a ultimo kernel si esta instalado
mkdir crear directorios rmdir o rm -d eliminar directorios vacíos. rm -r eliminar directorios no vacíos. mv nombreviejoarchivo1 nombrenuevoarchivo1 cambiar nombre de arhivos/directorios cat >> nombre\_del\_archivo.txt crear un archivo echo "Esto es un ejemplo" > nombre\_del\_archivo.txt crear un archivo
**Montar/Desmontar USB**
sudo mkdir -p /mnt/mi\_usb # Cambia "mi\_usb" por el nombre que prefieras
sudo mount /dev/sdb1 /mnt/mi\_usb # Reemplaza "/dev/sdb1" con tu dispositivo
sudo mount -t ntfs-3g /dev/sdb1 /mnt/mi\_usb # Para NTFS
sudo mount -t vfat /dev/sdb1 /mnt/mi\_usb # Para FAT32
sudo mount -o rw /dev/sdb1 /mnt/mi\_usb Si el dispositivo está en modo solo lectura, intenta montarlo con permisos de escritura
sudo apt install ntfs-3g Para dispositivos NTFS, ntfs-3g
sudo umount /dev/sdb1
sudo umount /mnt/mi\_usb
Montaje automático al recinicar (opcional)
sudo nano /etc/fstab
UUID=.... /mnt/mi\_usb ntfs-3g defaults 0 0
UUID=.... /mnt/externo ext4 defaults,nofail 0 2
Para obtener el UUID del dispositivo, usa: sudo blkid sudo blkid /dev/sdb1
**Servicios**
sudo systemctl start nombre\_del\_servicio     Iniciar servicio
sudo systemctl stop nombre\_del\_servicio Detener servicio
sudo systemctl restart nombre\_del\_servicio Reiniciar servicio
sudo systemctl status nombre\_del\_servicio Estado servicio
sudo systemctl enable nombre\_del\_servicio Habilitar el servicio al inicio del sistema
sudo systemctl disable nombre\_del\_servicio Deshabilitar arranque automatico
poweroff / sudo shutdown -h now Apagar
reboot / sudo shutdown -r now Reiniciar
systemctl suspend Suspender
ctrl + alt + sup cerrar sesion
gnome-session-quit --logout cerrar sesion terminal
alt + f2 ejecutar orden
alt + f4 cerrar ventana
super + h minimizar ventana
super + d mostrar escritorio
crtl + q cerrar ventana
sudo apt update && sudo apt upgrade -y     Actualizar sistema
lsb\_release -a Versión linux instalada
top Info procesos
htop Info procesos color
**ABRIR EDITOR DE TEXTO GNOME, GEDIT, NANO (terminal)**
gnome-text-editor Abrir editor gnome
gedit Abrir editor gedit (gedit prueba.txt)
nano Abrir editor nano
**BUSCAR ARCHIVOS**
find /ruta/de/busqueda -name "archivo.ext"
find / nombre\_archivo Busca en todo el sistema
sudo find / -type f -name "nombre\_programa" 2>/dev/null Buscar en todo el sistema ignora permisos whereis nombre\_archivo locate nombrearchivo sudo apt install plocate sudo updatedb actualiza la base de datos para buscar grep -r "texto a buscar" /ruta Buscar el texto dentro de archivos which nombre\_programa Buscar si esta dentro del PATH
**Clonar USB**
lsblk o fdisk -l Identificar unidades usb
sudo dd if=/dev/sdX of=/dev/sdY bs=4M status=progress     clonar directamente usb1 a usb2
sudo dd if=/dev/sdX of=backup\_usb.img bs=4M status=progress     clonar imagen sudo dd if=backup\_usb.img of=/dev/sdY bs=4M status=progress Restaurar imagen
opcion2 (utilizar gnome disks) abre discos - seleccionar usb origen - menu (...) - crear imagen disco. guardar archivo .img Para restaurar usasr "restaurar imagen de disco"
**Cambiar fecha/hora**
sudo date --set="Sep 30 08:55:00 2025"
**Instalar/Desinstalar paquete DEB desde la Terminal**
sudo dpkg -i google-chrome-stable\_current\_amd64.deb dpkg --list ver lista de paquetes instalados sudo dpkg remove teamviewer Desintalar paquete .deb sudo apt-get remove nombre\_del\_paquete Desinstalar paquete.deb
**APT**
sudo apt install nombre\_paquete Instalar programa
sudo apt list muestra los paquetes instalados
apt search nombre\_paquete Buscar paquete apt
apt-cache search nombre\_paquete Buscar más específicamente
apt show nombre\_paquete Información del paquete
sudo apt remove nombre\_paquete Eliminar programa
sudo apt purge auto-remove teamviewer Eliminar programa y dependencias
sudo apt-get autoclean Autolimpiar paquetes apt
sudo apt-get clean Eliminar cache
sudo apt-get autoremove Eliminar paquetes y dependencias que ya no hacen falta
apt-get download \<nombre\_del\_paquete> Descargar paquete apt
apt-cache depends \<nombre\_del\_paquete> Saber dependencias de un paquete / despues descargar
cada dependencias con apt-get download
sudo apt-get install -f resolver errores dependencias
Descargar paquetes con apt-offline
sudo apt install apt-offline
Instalar en el equipo con conexion
apt-offline set --install-packages solicitud.sig
Generar solicitud descarga en equipo sin conexion apt-offline get solicitud.sig --bundle paquetes.zip Copia solicitud.sig en equipo conexion apt-offline install paquetes.zip Ejecutar en equipo sin conexion
**INSTALAR PAQUETES SNAP**
sudo snap install nombre-del-paquete
sudo snap install nombre-del-paquete --channel=versión # Instalar una versión específica
snap find término-de-búsqueda # Buscar paquetes disponibles
snap info nombre-del-paquete # Ver información detallada de un paquete
snap list # Listar todos los paquetes instalados
snap list --all # Ver paquetes instalados con más detalles
sudo snap remove nombre-del-pquete # Eliminar un paquete
sudo snap remove --purge nombre-del-paquete # Eliminar completamente (incluyendo datos)
sudo snap revert nombre-del-paquete # Revertir a versión anterior
sudo snap refresh nombre-del-paquete # Actualizar un paquete específico
sudo snap refresh # Actualizar todos los paquetes snap refresh --list # Ver actualizaciones disponibles
**INSTALAR PAQUETES .AppImage** (autoejecutables)
Make it executable
chmod a+x Subsurface\*.AppImage
and run!
./Subsurface\*.AppImage
**INSTALAR .XZ**
unxz edit-1.0.0-x86\_64-linux-gnu.xz Descomprimir, dejara archivo ejecutable
chmod +x edit-1.0.0-x86\_64-linux-gnu Hacer archivo ejecutable
sudo mv edit-1.0.0-x86\_64-linux-gnu /usr/local/bin/edit Opcional-Mover para usar en cualquier parte del sistema
**INSTALAR tar.gz**
tar -xzf nombrearchivo.tar.gz --descomprimir el archivo
ejecutar el script, normalmente bin/nombrescript.sh
Nota: NO SE DEBE extraer una nueva instancia sobre una ya existente. La carpeta de destino debe estar vacía.
**ARCHIVOS COMPRIMIR/DESCOMPRIMIR RAR**
sudo apt update
sudo apt install unrar rar
unrar x archivo.rar Descomprimir archivo
unrar e archivo.rar Descomprimir sin estructura carpetas
rar a nombre\_archivo.rar archivo1 archivo2 directorio/ Crear archivo rar
rar a backup.rar /ruta/al/archivo.txt /ruta/al/directorio
rar a -m5 archivo.rar directorio/ Maxima compresion
unrar l archivo.rar Listar contenido archivo rar
unrar x -pcontraseña archivo.rar Extraer archivo con contraseña
**INSTALAR tar.xz DESDE LA TERMINAL**
tar -xf nombre\_del\_paquete.tar.xz
cd nombre\_del\_paquete
./configure
make
sudo make install
##### Instalar ZIP
Descomprimir: unzip nombrearchivo.zip
Cd a la carpeta descomprimida
./configure
make
sudo make install
INSTALAR GESTOR PAQUETES SYNAPTIC
sudo apt install synaptic
**INSTALAR CODECS MULTIMEDIA**
sudo apt install Ubuntu-restricted-extras
Instalar paquetes habituales en conjunto
sudo apt install idle python3-pip onedrive sqlite3 sqlitebrowser timeshift speedtest-cli gnome-shell-extension-manager neofetch
htop gdebi zsh nodejs npm filezilla apache2 mysql-client mysql-server php libapache2-mod-php php-mysql php-sqlite3 phpmyadmin
sudo snap install bitwarden spotify gitea nextcloud mysql-workbench-community
INSTALACION PROGRAMAS
sudo snap install bitwarden Bitwarden (también .deb en web)
sudo apt install wine Wine
gnome contacts (centro aplicaciones) contacts
wine /ruta/a/heidisql\_installer.exe Heidisql con wine
OhMyZsh
wget OhMyZsh sh -c "\$(wget -O- <https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/uninstall.sh>)" local-wp (descargar .deb/web)
sudo apt install nextcloud-desktop Instalar cliente escritorio nextcloud ubuntu-desktop (diferente aplicacion snap)
Desinstalar libreoffice
sudo apt update
sudo apt remove --purge libreoffice\*
sudo apt clean
sudo apt-get autoremove
##### INSTALAR/DESINSTALAR XAMPP
xampp (descargar .run de web) XAMPP
sudo chmod +x xampp-linux-x64-*-installer.run
sudo ./xampp-linux-x64-*-installer.run
Desinstalar Xampp
sudo /opt/lampp/lampp stop
sudo rm -rf /opt/lampp
sudo rm -f /usr/share/applications/xampp-control-panel.desktop
##### INSTALAR LAMP
sudo apt update && sudo apt upgrade
sudo apt install apache2
sudo apt install mysql-server
sudo mysql\_secure\_installation
sudo apt install php libapache2-mod-php php-mysql php-sqlite3
echo "" | sudo tee /var/www/html/info.php
sudo rm /var/www/html/info.php
sudo systemctl restart apache2
sudo apt install phpmyadmin
seleccionar apache - aceptar dbconfig-common
sudo snap install mysql-workbench-community
Crear usuario phpmyadmin para acceder:
sudo mysql Entrar mysql
CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'clave\_segura';
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON nombre\_basedatos.\* TO 'usuario'@'localhost'; # Acceso a una sola base datos
FLUSH PRIVILEGES; Aplicar canbios
EXIT;
<http://localhost/phpmyadmin> Iniciar sesion en phpmyadmin
Eliminar usuario
DROP USER 'nombre\_usuario'@'host';
FLUSH PRIVILEGES;
UBUNTU DESKTOP ACCESOS mysql root (no tiene contraseña) 123Passowrd! Contraseña de phpmyadmin para mysql (ojo se puso mal pero es 123Passowrd! admin - 123Password! Phpmyadmin usuario
**ACTUALIZAR DISTRO UBUNTU DESDE TERMINAL**
sudo apt update && sudo apt upgrade && sudo apt dist-upgrade
sudo do-release-upgrade
**PAPELEREA EN ESCRITORIO**
gsettings set org.gnome.shell.extensions.ding show-trash true gsettings set org.gnome.shell.extensions.ding show-trash false
**LIMPIAR EL SISTEMA**
sudo apt autoclean
sudo apt autoremove
sudo apt clean
**GRUB (cambiar orden)**
sudo gedit /etc/default/grub GRUB DEFAULT= y un número que empieza en cero, equivalente al sistema operativo que arrancará en primer lugar por defecto.
sudo update-grub -actualizar cambios
**CREAR LANZADOR PYTHON**
1. Abre una terminal y navega a tu directorio personal: cd \~
2. Crea un nuevo archivo `.desktop` en la carpeta de aplicaciones locales: nano \~/.local/share/applications/python3.desktop
3. En ese archivo, pega el siguiente contenido: \[Desktop Entry] Version=1.0 Name=Python3 Script Launcher Exec=/usr/bin/python3 %f Icon=utilities-terminal Terminal=true Type=Application MimeType=text/x-python;
4. Guarda y cierra el archivo con `CTRL + O`, luego `ENTER`, y finalmente `CTRL + X`.
5. Actualiza las asociaciones MIME. Para que el sistema reconozca los cambios, actualiza la base de datos de MIME: update-desktop-database \~/.local/share/applications
6. Selecciona Python3 como aplicación predeterminada
PIP UBUNTU 24
Atención instalar complementos pip en ubuntu 24.04:
1. Permitir instalar con PIP normal: Eliminar el archivo que indica cambio de criterio cd /usr/lib/python3.11 sudo rm EXTERNALLY-MANAGED Restaurar: sudo touch EXTERNALLY-MANAGED
ERRORES PYTHON CON IMAGENES PIL - PILLOW
sudo apt-get install python3-pil python3-pil.imagetk
**CREAR UN ACCESO DIRECTO:**
Si el programa es una aplicación gráfica y quieres ejecutarlo desde el menú de aplicaciones, puedes crear un archivo .desktop en \~/.local/share/applications/.
Ejemplo de archivo .desktop:
\[Desktop Entry]
Name=Nombre del Programa
Exec=/ruta/al/directorio/nombre\_del\_programa
Icon=/ruta/al/icono.png
Type=Application
Categories=Utility;Application;
Guarda con la extensión .desktop y hacer ejecutable:
chmod +x \~/.local/share/applications/nombre\_del\_programa.desktop (hacer ejecutable)
**COPIAR ACCESO A APLICACIONES EN ESCRITORIO**
Los accesos directos estan en /usr/share/applications/ hace falta copiar y pegar en carpeta Escritorio
**XAMPP**
sudo /opt/lampp/lampp start Iniciar Xampp
sudo /opt/lampp/lampp stop Detener Xampp
Panel de control lamp sudo /opt/lampp/manager-linux-x64.run
Php.ini ubicacion /opt/lampp/etc
Elige la arquitectura para tu Linux OS, versión de 32-bits o de 64-bits.
1. Cambia los permisos al instalador chmod 755 xampp-linux-\*-installer.run
2. Ejecuta el instalador sudo ./xampp-linux-\*-installer.run directorio /opt/lampp.
SQLITE En aplicaciones con Sqlite3 la carpeta donde está la base de datos tiene que tener permisos de lectura y escritura porque si no da error en las updates-delete,etc.. En cambio, sí que lee la base de datos
**PERMISOS**
Qué son los permisos en Linux?
Cada archivo o carpeta tiene tres tipos de permisos para tres tipos de usuarios.
Tipos de usuarios:
Propietario (owner) quien creó el archivo.
Grupo otros usuarios del mismo grupo.
Otros (others) todos los demás.
Tipos de permisos:
r = lectura (read) → ver contenido.
w = escritura (write) → modificar o eliminar.
x = ejecución (execute) → ejecutar como programa/script.
Representación numérica:
Cada permiso tiene un valor:
r = 4
w = 2
x = 1
Se suman por grupo. Ejemplo:
Permisos Valor
rwx 7 (4+2+1)
r-x 5 (4+0+1)
rw- 6 (4+2)
r-- 4
Entonces:
chmod 755 archivo
Significa:
7 (rwx) → dueño: todo permitido
5 (r-x) → grupo: leer y ejecutar
5 (r-x) → otros: leer y ejecutar
Comandos comunes:
chmod → cambia permisos
chown → cambia el propietario
ls -l → muestra los permisos de archivos
Supongamos que tienes esto:
mkdir proyecto
cd proyecto
touch script.sh
Paso 1: Ver los permisos actuales
ls -l
Salida típica:
-rw-r--r-- 1 usuario usuario 0 abr 29 12:00 script.sh
Esto significa:
-rw-r--r-- = el propietario puede leer y escribir, los demás solo leer.
No tiene permiso de ejecución (x), por eso no puedes correrlo como programa.
Paso 2: Dar permisos de ejecución al archivo
chmod +x script.sh
Ahora, ls -l muestra:
-rwxr-xr-x 1 usuario usuario 0 abr 29 12:00 script.sh
Ya puedes ejecutarlo:
./script.sh
Paso 3: Dar permisos de escritura a una carpeta (para copiar, crear o modificar dentro)
chmod 775 proyecto
Esto significa:
Dueño y grupo pueden leer, escribir y entrar (rwx).
Otros pueden leer y entrar, pero no escribir (r-x).
Paso 4: Hacer que Apache (u otro usuario) pueda escribir ahí
Si estás en un servidor web:
sudo chown -R www-data:www-data proyecto
sudo chmod -R 775 proyecto
chmod +x archivo.sh # hacer que un archivo sea ejecutable.
chmod 777 archivo.txt o ruta (Todos los permisos para todos)
sudo mkdir -m 777 /home/carpeta\_nueva crea una carpeta con permisos
chmod 755 script.sh Significa:7 (rwx) → El propietario puede leer, escribir y ejecutar. 5 (r-x) → El grupo y otros pueden leer y ejecutar, pero no modificar.
chmod 644 documento.txt Significa: 6 (rw-) → El propietario puede leer y escribir. 4 (r--) → El grupo y otros solo pueden leer.
chmod -R 755 /ruta/de/la/carpeta chmod -R (Aplicar permisos de forma recursiva)
Permisos de grupo a varios usuarios
sudo groupadd media # crear grupo
sudo usermod -aG media jesus # añadir usuario al grupo
sudo usermod -aG media transmission-daemon # añadir usuario al grupo
sudo chgrp media /mnt/Toshiba # cambiar el grupo de la carpeta
sudo chmod g+rw /mnt/Toshiba # Dar permisos de lectura y escritura al grupo:
newgrp media # Aplicar cambios (reinicia sesión o ejecuta):
Permisos con setfacl
sudo apt update && sudo apt install acl -y sudo setfacl -m u:jesus:rwx /mnt/Toshiba #asigna permisos de lectura y escritura -m: Modifica los permisos ACL. u:jesus:rwx: Da permisos de lectura (r), escritura (w) y ejecución (x) al usuario jesus. sudo setfacl -Rm u:jesus:rwx /mnt/Toshiba sudo setfacl -dm u:jesus:rwx /mnt/Toshiba -R: Aplica recursivamente en los archivos existentes. -d: Establece permisos por defecto para nuevos archivos. getfacl /mnt/Toshiba
CREAR ACCESOS DIRECTOS enlace simbolico ln -s /home/jesus/Documentos /home/jesus/Escritorio #este ejemplo crea acceso directo a documentos en escritorio ln -s /path destino /path colocacion acceso directo /home/jesus/Documentos
CARPETA FONDOS DE ESCRITO /usr/share/backgrounds
EXTENSIONES <https://extensions.gnome.org/> Blur my shell Add to desktop Dash to dock Caffeine Coverflow Alt-Tab ArcMenu Vitals Custom Hot Corners Extended Places status indicator Apps menu Bluetooth Quick connect Services Systemd show desktop applet
VELOCIDAD INTERNET desde terminal (speedtest) speedtest speedtest-cli // speedtest --simple
JUEGOS LINUX frozen bubble Cannonball Supertuxkart Supertux Killbots Kapman Quadrapassel Trackmania Nations Forever Chess gnome kobodeluxe (apt) open-invaders (apt) astromenace (apt) chromium-bsu (sudo apt)
WINE wine aplicacion.exe #ejecutar una aplicacion .exe
PDF HERRAMIENTAS sudo apt install pdfarranger pdfarranger sudo dpkg -i pdfsam\_\*.deb pdfSam Basic (descargar del sitio web) sudo apt install ghostscript ghostscript (comprimir pdf) gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=salida.pdf entrada.pdf Puedes cambiar /screen por /ebook, /printer o /prepress según el nivel de calidad/ tamaño.
INSTALAR GNOME
Para instalar GNOME con la menor cantidad de utilidades de GNOME, tendrías que instalar un paquete llamado vanilla-GNOME usando el comando dado: sudo apt install vanilla-gnome-desktop Y si quieres tener una experiencia GNOME completa, puede simplemente instalar el gnome paquete: sudo apt install gnome desintalar gnome ubuntu sudo apt-get remove --auto-remove gnome-shell sudo apt-get purge --auto-remove gnome-shell
ENTORNOS DE ESCRITORIO
Sudo apt-get install Ubuntu-mate-desktop Sudo apt-get install cinnamon-desktop-environment Sudo apt-get install kde-standard
REINICIAR EL DOCK
dconf reset -f /org/gnome/shell/extensions/dash-to-dock/ dconf reset -f /org/gnome/shell/extensions/favorite-apps
DOCK UBUNTU MINIMIZAR APLICACIÓN
gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize' gsettings reset org.gnome.shell.extensions.dash-to-dock click-action #quitar gsettings range org.gnome.shell.extensions.dash-to-dock click-action #opciones
REINICIAR UBUNTU POR DEFECTO (DOCK, FONDOS, ETC... como recien instalado) dconf reset -f /
**ACTUALIZAR LA APP UBUNTU STORE**
snap refresh snap-store --channel=latest/stable/ubuntu-24.04 This command may fail and output something look like: snap snap-store has running apps, pids: 2205. In the case, just kill snap-store using the ID number (replace 2205 to yours): Sudo kill 9 2205 (o el numero que salga) Then, re-run the snap refresh command.
DOCK TRANSPARENTE
gsettings set org.gnome.shell.extensions.dash-to-dock transparency-mode 'FIXED'
gsettings set org.gnome.shell.extensions.dash-to-dock background-opacity 0.2
Change 0.0 to any number between 0 and 1.
To reset to the default setting:
gsettings reset org.gnome.shell.extensions.dash-to-dock background-opacity
MAME Ruta: /usr/share/games
CONFIGURAR TECLADO
KALI LINUX
Poner idioma español
sudo dpkg-reconfigure localeses\_ES.UTF-8 UTF-8
reiniciar
Unbuntu, etc. sudo dpkg-reconfigure keyboard-configuration Desde Ajustes Teclado y poner español
Cambiar permisos desde la consola
Nos vamos a Aplicaciones -> Accesorios -> Terminal
Por ejemplo yo le quiero dar permisos de lectura, escritura y ejecución para los 3 grupos a una carpeta llamada Prueba que está en el Escritorio, así que navego hasta el escritorio:
cd Escritorio
Y tengo dos opciones,la numérica y la alfabética:
1.- chmod 777 Prueba
2.- chmod rwx Prueba
Si la carpeta pertenece a root, tendremos que hacerlo asi:
1.- sudo chmod 777 Prueba
2.- sudo chmod rwx Prueba
Si queremos que se haga de manera recursiva, es decir, que los ficheros y carpetas contenidos en Prueba, también reciban estos cambios, hacemos esto:
1.- chmod -R 777 Prueba
2.- chmod -R rwx Prueba
Cualquiera de las dos y teniendo en cuenta lo de sudo.
Un par de ejemplos más:
Queremos que el usuario tenga RWX, el grupo RW y los demás R, en la carpeta Prueba:
1.- chmod 764 Prueba
2.- chmod u=rwx,g=rw,o=r Prueba
u equivale a usuario (user) g a grupo (group) y o a otros (others). También sirve lo de -R y sudo.
Queremos que el usuario tenga RW, el grupo R y los demás R, en la carpeta Prueba:
1.- chmod 644 Prueba
2.- chmod u=rw go=rw Prueba
Igualmente sirve lo de -R y sudo.
Para quitar permisos, realmente es cambiarlos por otros, asi que es lo mismo que aquí se explica.
SOLUCION FALTA DE SONIDO ubuntu (no reconoce audio)
sudo apt-get install --reinstall alsa-base pulseaudio
sudo alsa force-reload
SOLUCION ERROR PYTHON PYSIDE6
sudo apt install libxcb-cursor0 libxcb-xinerama0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0
AÑADIR PROGRAMA/CARPETA AL PATH
nano \~/.bashrc - nano \~/.zshrc
export PATH=PATH:HOME/ruta/al/directorio - Guardar y cerrar.
Ejemplo - export PATH=PATH:HOME/python/venv/lib/python3.12/site-packages/PySide6\`\`
source \~/.bashrc - Actualizar
Verificar path
echo \$PATH
**GITEA**
Gitea (arrancar y parar) Instalado desde snap
localhost:3000 (puerto 3000)
Iniciar Gitea sudo snap start gitea
Detener Gitea sudo snap stop gitea
Verificar estado sudo snap services gitea
Deshabilitar inicio sudo snap disable gitea
Reiniciar Gitea sudo snap restart gitea
Eliminar Gitea sudo snap remove gitea
**LOCAL-WP (solucion problema)**
Local-wp ubuntu 24.04 (solucionar problemas de instalación con dependencias)
curl -O <http://launchpadlibrarian.net/648013231/libtinfo5_6.4-2_amd64.deb>
sudo dpkg -i libtinfo5\_6.4-2\_amd64.deb
curl -O <http://launchpadlibrarian.net/648013227/libncurses5_6.4-2_amd64.deb>
sudo dpkg -i libncurses5\_6.4-2\_amd64.deb
curl -O <http://launchpadlibrarian.net/646633572/libaio1_0.3.113-4_amd64.deb>
sudo dpkg -i libaio1\_0.3.113-4\_amd64.deb
sudo apt install ./local-9.1.1-linux.deb (o bien)
sudo dpkg -i local-9.1\*.deb
resolver error: sudo apt install libxapp-gtk3-module sudo apt install libxapp-gtk3-module
**DOCKER**
Para instalar Docker en Ubuntu, sigue estos pasos:
1. Eliminar versiones antiguas (si existen) sudo apt remove docker docker-engine docker.io containerd runc
2. Instalar dependencias necesarias sudo apt update sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
3. Agregar el repositorio oficial de Docker curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb \[arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] <https://download.docker.com/linux/ubuntu> \$(lsb\_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. Instalar Docker Engine sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io
5. Verificar que Docker esté funcionando sudo systemctl status docker (Deberías ver active (running)). Para probarlo, ejecuta: sudo docker run hello-world (Si funciona, verás un mensaje de confirmación).
6. (Opcional) Evitar usar sudo con Docker Para no tener que escribir sudo cada vez, agrega tu usuario al grupo docker: sudo usermod -aG docker \$USER newgrp docker # Recarga los grupos sin reiniciar sesión Ahora puedes probar sin sudo: docker run hello-world
docker ps # Ver contenedores en ejecución docker stop mi-web # Detener el contenedor docker start mi-web # Iniciar el contenedor nuevamente docker rm mi-web # Eliminar el contenedor (cuando ya no lo necesites)
**ARREGLAR GRUB**
Confirmar si se usa UEFI y ver archivo .efi
ls -l /boot/efi/EFI/ubuntu/
Verificar modo de arranque
\[ -d /sys/firmware/efi ] && echo "UEFI" || echo "BIOS"
Archivo BIOS para grub - uefi.
/boot/efi/EFI/ubuntu/grubx64.efi - Sin secure boot
/boot/efi/EFI/ubuntu/shimx64.efi - Con secure boot
Reinstalar grub EN UEFI
sudo grub-install --target=x86\_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
Reparar el arranque UEFI
sudo mount /dev/sdXY /mnt # Reemplaza sdXY con tu partición raíz (ej: sda2)sudo mount /dev/sdXZ /mnt/boot/efi # Reemplaza sdXZ con tu partición EFI (ej: sda1)sudo grub-install --efi-directory=/mnt/boot/efisudo update-grubsudo update-grub
sudo fdisk -l -para identificar particion y la de linux/ubuntu
sudo mount /dev/nvme0n1p6 /mnt --Particion linux
sudo mount /dev/nvme0n1p1 /mnt/boot/efi --Particion efi
sudo mount --rbind /dev /mnt/dev
sudo mount --rbind /proc /mnt/proc
sudo mount --rbind /sys /mnt/sys
sudo chroot /mnt --Entrar como root
grub-install /dev/nvme0n1 --Instala grub en efi
update-grub
exit
sudo reboot
script automatico
\#!/bin/bash
echo "📦 Montando particiones..."
sudo mount /dev/nvme0n1p6 /mnt
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
echo "🔧 Entrando a chroot para instalar GRUB..."
sudo chroot /mnt /bin/bash -c "
grub-install /dev/nvme0n1 &&
update-grub &&
echo '✅ GRUB instalado correctamente dentro de chroot'
"
echo "🚀 Reparación completa. Puedes reiniciar ahora."
nano reparar-grub.sh
chmod +x reparar-grub.sh
sudo ./reparar-grub.sh
Saber si se esta en UEFI o Legacy BIOS
ls /sys/firmware/efi - Si hay contenido esta en UEFI
\[ -d /sys/firmware/efi ] && echo "Estás en modo UEFI" || echo "Modo legacy bios"
Añadir windows a Grub si ha desaparecido
Actualiza GRUB con detección de otros sistemas operativos:
sudo apt install os-prober
sudo update-grub
Esto ejecutará os-prober, que buscará otros sistemas instalados, como Windows, y regenerará el menú de GRUB.
⚠️ Si Windows no aparece aún, puede que os-prober esté deshabilitado (desde Ubuntu 22.04):
Edita el archivo de configuración de GRUB:
sudo nano /etc/default/grub
GRUB\_DISABLE\_OS\_PROBER=false
sudo update-grub
sudo reboot
**CRON**
systemctl status cron Estado servicio cron
crontab -e Tabla de cron propio de cada usuario
crontab -u www-data -e cron del usuario www-data
sudo crontab -e Cron de sudo
crontab -l Lista las tareas cron
grep CRON /var/log/syslog Logs cron
###### Sintaxis de una regla en `cron`
Cada línea en `crontab` sigue este formato:
* comando\_a\_ejecutar │ │ │ │ │ │ │ │ │ └── Día de la semana (0-6, donde 0 = domingo) │ │ │ └──── Mes (1-12) │ │ └────── Día del mes (1-31) │ └──────── Hora (0-23) └────────── Minuto (0-59)
* Ejecutar un script cada día a las 2:30 AM 30 2 \* \* \* /ruta/al/script.sh
* Ejecutar cada 5 minutos: \*/5 \* \* \* \* /ruta/al/script.sh
* Ejecutar todos los lunes a las 8:00 AM: 0 8 \* \* 1 /ruta/al/script.sh
######
minuto hora día\_mes mes día\_semana
###### Ubicación de los crontabs
1. **Usuario actual:** `crontab -e` → se guarda en `/var/spool/cron/crontabs/usuario`
2. **Global (para todos los usuarios):**
* `/etc/crontab`
* Archivos en `/etc/cron.d/`
* Directorios especiales:
* `/etc/cron.daily/` (se ejecuta una vez al día)
* `/etc/cron.hourly/` (cada hora)
* `/etc/cron.weekly/` (una vez a la semana)
* `/etc/cron.monthly/` (una vez al mes)
#### GENERAR TOKENS
**Linux / macOS**
OpenSSL
openssl rand -hex 32
Genera 32 bytes aleatorios en hexadecimal (64 caracteres).
/dev/urandom
cat /dev/urandom | tr -dc 'a-f0-9' | head -c 64
echo
UUID
uuidgen
Ejemplo:
550e8400-e29b-41d4-a716-446655440000
**Windows**
PowerShell
\[guid]::NewGuid()
O un token más largo:
-join ((48..57) + (97..102) | Get-Random -Count 64 | % {\[char]$\_})
OpenSSL en Windows
Si tienes instalado OpenSSL
openssl rand -hex 32
**Python (multiplataforma)**
Funciona igual en Linux, macOS y Windows:
import secrets
token = secrets.token\_hex(32)
print(token)