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