Permisos en Linux
Temario {#temario}
1. Concepto básico de permisos {#concepto-básico-de-permisos}
Cada archivo o carpeta tiene 3 tipos de permisos y 3 categorías de usuarios:
Tipos de permisos {#tipos-de-permisos}
Categorías {#categorías}
2. Ver permisos {#2-ver-permisos}
ls -l
Ejemplo:
-rwxr-xr-- 1 francisco users 1234 oct 21 script.sh
Significado:
- rwx → usuario
- r-x → grupo
- r— → otros
- francisco → dueño
- users → grupo
3. Cambiar permisos (chmod) {#3-cambiar-permisos-chmod}
a) Modo simbólico {#a-modo-simbólico}
chmod u+x script.sh # añadir ejecución al usuario
chmod g-w script.sh # quitar escritura al grupo
chmod o=r file.txt # solo lectura para otros
chmod a+r file.txt # todos pueden leer
b) Modo numérico {#b-modo-numérico}
chmod 755 script.sh
4. Cambiar dueño o grupo (chown, chgrp) {#4-cambiar-dueño-o-grupo-chown-chgrp}
chown usuario archivo
chgrp grupo archivo
chown usuario:grupo archivo
Ejemplo:
sudo chown francisco:users script.sh
5. Permisos especiales {#5-permisos-especiales}
Existen tres permisos especiales en Linux:
Sticky Bit {#sticky-bit}
El sticky bit se usa en directorios para evitar que otros borren archivos ajenos.
chmod +t /tmp/publico
# o modo numérico
chmod 1777 /tmp/publico
Ver resultado:
ls -ld /tmp/publico
drwxrwxrwt 9 root root 4096 oct 21 09:00 /tmp/publico
drwxrwxrwt → el “t” final indica el sticky bit activo.
Ejemplo típico: El directorio /tmp siempre lo tiene activado.
SUID y SGID {#suid-y-sgid}
SUID
Ejemplo: ```bash ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 54256 oct 21 /usr/bin/passwd ```- La s en lugar de la x del usuario indica SUID activo.
- Permite ejecutar con permisos del dueño del archivo (en este caso, root).
Activar o desactivar manualmente:
chmod u+s archivo # activar
chmod u-s archivo # desactivar
SGID
En ejecutables: ```bash chmod g+s archivo ```En directorios:
chmod g+s carpeta/
Efecto:
Los nuevos archivos heredan el grupo del directorio, útil para carpetas compartidas.---
6. Atributos de archivos (chattr, lsattr) {#6-atributos-de-archivos-chattr-lsattr}
Los atributos controlan cómo se comporta un archivo, más allá de los permisos.
Ver atributos {#ver-atributos}
lsattr archivo
Ejemplo:
----i--------e----- documento.txt
Cambiar atributos (chattr) {#cambiar-atributos-chattr}
Hacer un archivo inmutable:
sudo chattr +i archivo.txt
Solo root puede revertirlo:
sudo chattr -i archivo.txt
Modo append-only (solo añadir contenido):
sudo chattr +a log.txt
Atributos comunes {#atributos-comunes}
Ejemplo práctico en script Bash {#ejemplo-práctico-en-script-bash}
#!/bin/bash
# Proteger archivos del sistema
ARCHIVOS=("/etc/passwd" "/etc/shadow" "/etc/fstab")
for f in "$(ARCHIVOS[@])"; do
if [ -f "$f" ]; then
sudo chattr +i "$f"
echo "Protegido: $f"
fi
done
lsattr "$(ARCHIVOS[@])"