Permisos y propiedades de archivos (RSA-04)

La ruta del SysAdmin 15 de jul. de 2025

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 }'

Etiquetas

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux