Permisos y propiedades de archivos (RSA-04)
En este apartado te explico cómo funcionan los permisos en Linux. Aprenderás a ver quién puede leer, escribir o ejecutar archivos, y cómo modificar propietarios o grupos para controlar el acceso.
Comando: ls -l
Sintaxis Básica
Muestra los permisos, propietarios, tamaño y fechas de los archivos y carpetas.
Ejemplos:
$ ls -l
$ ls -l archivo.txt
$ ls -l /etc/passwd
Sintaxis Avanzada
Usado para auditar el sistema, filtrar por permisos, o como parte de scripts de control.
Ejemplos:
$ ls -l | grep "^d" # Lista solo los directorios
$ find . -type f -perm 644 -exec ls -l {} \;
$ ls -lh --time-style=long-iso > informe_archivos.txt
Comando: chmod
Sintaxis Básica
Cambia los permisos de lectura, escritura y ejecución de archivos y carpetas.
Ejemplos:
$ chmod 755 script.sh
$ chmod u+x programa # Agrega permiso de ejecución al usuario
$ chmod go-w documento.txt
Sintaxis Avanzada
Se usa en automatización, ajustes masivos o control detallado por scripts.
Ejemplos:
$ find /logs -name "*.log" -exec chmod 640 {} \;
$ chmod -R a+X proyecto/ # Agrega ejecución a carpetas y archivos ejecutables
$ [ -f install.sh ] && chmod +x install.sh
Comando: chown
Sintaxis Básica
Cambia el propietario y/o grupo de archivos o carpetas.
Ejemplos:
# chown luisgulo:luisgulo archivo.txt
# chown root archivo.conf
# chown usuario:grupo /var/www/html/ -R
Sintaxis Avanzada
Ideal para gestión de permisos en entornos multiusuario, cambios masivos o scripts post-instalación.
Ejemplos:
# find /var/www -type f -exec chown www-data:www-data {} \;
# chown --reference=plantilla.txt nuevo_archivo.txt # Copia propiedad
# for f in *; do chown luisgulo "$f"; done
Comando: stat
Sintaxis Básica
Muestra información detallada sobre permisos, propietario y fechas de modificación.
Ejemplos:
$ stat archivo.txt
$ stat /etc/passwd
$ stat -c "%U %G %A %n" archivo.txt
Sintaxis Avanzada
Ideal para extraer metadatos en scripts y decisiones condicionales basadas en permisos o fechas.
Ejemplos:
$ if [[ "$(stat -c %A archivo.txt)" == "-rw-r--r--" ]]; then echo "Permisos correctos"; fi
$ stat -c "%n %U %G" * | grep "root"
$ find . -type f -exec stat -c "%n %a" {} \; | sort -k2
Comando: chattr
Sintaxis Básica
Permite establecer atributos especiales en archivos, como hacerlos inmodificables.
Ejemplos:
# chattr +i documento.txt # Impide modificar, renombrar o eliminar el archivo
# chattr -i documento.txt # Quita el atributo de inmodificable
# chattr +a registro.log # Solo se puede añadir contenido, no sobrescribir
Sintaxis Avanzada
Útil para proteger archivos críticos contra cambios accidentales o malware.
Ejemplos:
# chattr +i /etc/resolv.conf # Protege configuración de DNS
# find /etc -type f -name "*.conf" -exec chattr +i {} \; # Protección masiva
# chattr -V +i documento.txt # Muestra los cambios realizados
Comando: lsattr
Sintaxis Básica
Muestra los atributos especiales aplicados con chattr
.
Ejemplos:
$ lsattr documento.txt
$ lsattr -d carpeta/
$ lsattr /etc/* | grep "----i"
Sintaxis Avanzada
Ideal para auditoría y control de integridad de archivos protegidos.
Ejemplos:
$ for f in /etc/*; do lsattr "$f"; done | grep "+i"
$ lsattr -R /etc > atributos.log
$ lsattr | awk '$1 ~ /i/ { print $2 }'