Permisos, niveles de procesos y privilegios de ejecución

Clase 21 de 32Fundamentos de Ingeniería de Software

Resumen

Aprende a controlar quién puede ver, modificar o ejecutar tus archivos con precisión. Entender permisos, grupos y comandos como chmod y sudo te ayuda a evitar errores críticos y a mantener la seguridad en Linux, Mac, Android y Windows sin complicaciones.

¿Qué son los permisos y grupos de archivos?

En cualquier sistema operativo existen usuarios con diferentes niveles. Puedes organizar a las personas en grupos para decidir quién accede a cada archivo: por ejemplo, un grupo interno llamado Team, un público externo Public y un Admin que gestiona todo. Esto se puede configurar en un servidor, en una laptop o en hosting compartido.

En Linux y otros sistemas Unix, estos ajustes suelen verse en la consola; en Windows, se observan en Propiedades con clic derecho. Es común asignar al Admin la capacidad de leer y escribir; al Team, leer y escribir; y al Public, solo lectura. Además, existe un permiso especial de ejecución que convierte un archivo en ejecutable y permite al sistema operativo pasar instrucciones al procesador y elevar privilegios según los anillos de seguridad.

  • Grupo Admin: puede leer y escribir. Puede todo.
  • Grupo Team: puede leer y escribir. No ejecuta en el ejemplo.
  • Grupo Public: solo puede leer.
  • Puedes crear tantos grupos como necesites. Los grupos son donde se asignan permisos.

En hosting compartido, cada quien trabaja en su subcarpeta y no puede leer o escribir archivos de otros. Incluso es posible tener una carpeta visible solo para Admin, donde el resto de grupos queda con guiones (sin permisos) y ni siquiera puede leer.

¿Cómo se gestiona en Windows y Unix?

En Windows, al cambiar propiedades que requieren administrador, aparece una ventana con el icono de administración. En Unix (Linux, BSD, Mac, Android), para cambiar propiedades de archivos se necesitan permisos de administrador y, de ser necesario, se recurre a sudo.

¿Cómo funcionan read, write, execute y sus números (chmod)?

Los permisos se expresan como R (read, leer), W (write, escribir) y X (execute, ejecutar). En sistemas Unix/ Linux, se cambian con la instrucción chmod. Internamente, cada permiso se representa en binario y se traduce a un número decimal por grupo.

  • R: permite leer.
  • W: permite escribir.
  • X: permite ejecutar como programa.

El patrón binario por grupo es RWX. Así, 111 equivale a 7 y 110 equivale a 6. Por eso verás valores como 666 o 777 aplicados a archivos o directorios.

  • 7 = 111 = rwx: leer, escribir y ejecutar.
  • 6 = 110 = rw-: leer y escribir, sin ejecutar.
  • 666: todos los grupos pueden leer y escribir; nadie ejecuta.
  • 777: todos pueden leer, escribir y ejecutar.
  • Verás tantos conjuntos RWX como grupos definidos para ese recurso.

¿Por qué ejecutar X vuelve un archivo programa?

En Unix y Linux, cualquier archivo puede ser ejecutable si tiene el permiso X: un .sh, .py, .doc o cualquier extensión. En Windows, suele asociarse a extensiones como .exe, pero lo que realmente determina la ejecución en Unix es el permiso X, no el nombre del archivo.

¿Qué riesgo implica 777 para seguridad?

Dar 777 a “todos los grupos” convierte cualquier archivo (incluso texto o imágenes) en ejecutable, abriendo un hueco de seguridad severo que puede afectar al servidor. En cambio, 666 comunica “puedes leer y escribir, pero no ejecutar”, que es lo esperado para archivos de datos.

¿Cuándo usar sudo y qué significa root en Unix?

Para cambiar propiedades de un archivo en Unix (Linux, BSD, Mac, Android) se requieren permisos de administrador. Con sudo, un usuario normal puede elevar privilegios por una sola vez usando la clave de administrador o de root. La palabra root (R-O-O-T) significa administrador.

  • sudo: eleva privilegios temporalmente con la clave de admin o root.
  • root: usuario administrador del sistema en Unix.
  • En tu laptop, servidor dedicado o VPS, normalmente tienes clave de root.
  • En hosting compartido, aunque tengas consola, lo más probable es que no tengas root y que ni con sudo accedas a privilegios del sistema.

En Windows, al ejecutar algo con privilegios, aparece una ventana de confirmación con el icono de administración, para decidir si otorgar esos permisos. En Unix, lo decides invocando sudo al inicio del comando y validando con la clave correspondiente.

¿Tienes dudas sobre qué permisos aplicar en tu entorno o cómo organizar tus grupos? Comparte tu caso y comenta cómo gestionas rwx, 666/777 y sudo en tus proyectos.