Home » Tecnología » Asignar permisos en Unix

Asignar permisos en Unix

Publicado en: Tecnología

Hola afición!

En Unix el modo de dar permisos a nuestros ficheros es un poco peculiar, y si uno está acostumbrado a otros sistemas operativos, en ocasiones le puede resultar un poco limitado en opciones, pero agrupando usuarios en grupos, e incluso grupos en grupos, podemos dar auténtica seguridad a todo el sistema.

Ocurre que el man (manual de los comandos que podemos consultar en nuestra interfaz de comandos) y la documentación extensa en sitios de internet suele estar o bien en inglés o ser demasiado enrevesada y complicada, e intentado aglutinar todos esos términos y modos de poder dar permisos y sobre todo calcular qué parámetros hemos de pasarle al comando para que los permisos se propaguen adecuadamente.

Primero, unos conceptos preliminares:
owner -> propietario
user -> usuario
group -> grupo
other -> otro
r -> read -> lectura
w -> write -> escritura
x -> execute -> ejecución

Leyendo el man del comando chmod, podemos ver cómo juega con los parámetros y vemos que es equivalente:

chmod 777 archivo
chmod ugo=rwx archivo
chmod 000 archivo
chmod ugo= archivo

Los permisos sobre un archivo se pueden considerar como un conjunto de 9 bits, su orden es:
usuario r,w,x; grupo r,w,x; otro r,w,x

ur uw ux gr gw gx or ow ox

Asignando valores:

100 000 000 = leer para usuario
010 000 000 = escribir para usuario
...
...
000 000 010 = escritura para otro
000 000 001 = ejecutar para otro

Para el comando chmod la convención de dígitos es en grupos de 3 cifras, el primero para el usuario, el segundo para el grupo y el tercero para otros. Puede tomar valores de 0 a 7, de la siguiente forma:

400 = leer para usuario
200 = escribir para usuario
100 = ejecutar (buscar directorio) para usuario
040 = leer para grupo
020 = escribir para grupo
010 = ejecutar (buscar directorio) para grupo
004 = leer para otro
002 = escribir para otro
001 = ejecutar (buscar directorio) para otro

Para calcular el valor de los bits del chmod, se puede ver un ejemplo. Si queremos darle rwx al usuario, rx al grupo, y x a otros:

400+
200+
100+
040+
010+
001
---
751

De esa forma, desde la consola de comandos (Terminal en OS X), ejecutamos el comando sobre el archivo o carpeta que deseemos modificar:

chmod 751 nombre_archivo

que es equivalente a hacer:

chmod u=rwx,g=rx,o=x nombre_archivo

SaludoX