De Wiki Applesana
Permisos en Mac OS
Los permisos se dividen en 3 grupos:
U (user): usuario propietario.
G (group): grupo propietario.
O (other): resto de usuarios.
Para cada grupo tenemos tres tipos de permisos:
r (read): permiso de lectura.
w (write): permiso de escritura.
x (execute): permiso de ejecución.
Nota: el permiso "x" es imprescindible en directorios para por ejemplo poder hacer un ls del mismo.
De esta manera los permisos asignados a un archivo que daría de la siguiente manera:
******U*****G*****O*****
_ / _ _ _ / _ _ _ / _ _ _
Donde debajo de cada grupo podemos ver irían las tres opciones para los distintos tipos de permisos asociados a cada grupo. Y un hueco/espacio delante de todos ellos destinado a indicar si se trata de:
d (dir): un directorio.
l (link): un enlace.
- : un archivo regular.
**Comandos asociados:
#chmod.- Para cambiar los permisos a un fichero/directorio.
#chown.- Para cambiar el usuario y el grupo a un fichero/directorio.
#chgrp.- Para cambiar el usuario y el grupo a un fichero/directorio.
Sintaxis:
#chmod "permisos" "fichero/directorio"
#chown "usuario[:grupo]" "fichero/directorio"
#chgrp "grupo" "fichero/directorio"
Formatos para la sintaxis de los permisos:
"permisos" = u = rw; g = r; o = r .-De esta manera quedan asignados los permisos que se indican únicamente.
"permisos" = u + rw; g - r; o - r .-De esta manera con el "+" asignamos permiso/s y con el "-" desasignamos permiso/s.
"permisos" = + x .-De esta manera asignamos el permiso "x" a todos los grupos y por lo tanto a todos los usuarios.
El modificador "-R" justo detrás del comando haría que dicho comando fuese recursivo, lo que quiere decir, que para el caso de un directorio, aplicaría los mismos permisos a todos los archivos y subcarpetas y archivos dentro de subcarpetas y así recursivamente... es decir, a todo lo que este dentro de ese directorio y al directorio en sí.
Asignación de permisos mediante números:
Esenciales:
4 = r
2 = w
1 = x
0 = _
Mediante estos, los esenciales, podemos sacar el resto:
7 = rwx (7 = 4+2+1)
6 = rw (6 = 4+2)
5 = rx (5 = 4+1)
3 = wx (3 =2+1)
Por lo tanto una asignación que sea 644, corresponde a u=rw; g=r; o=r.
Concepto de UMASK:
#umask "permisos en formato números"
Permisos por defecto 644 (para el root) para archivos.
Permisos por defecto 755 (para el root) para directorios.
La mascara (UMASK) se obtiene restando los permisos ABSOLUTOS a los nuestros (POR DEFECTO). de esta manera obtenemos los perisos EFECTIVOS que en realidad es la mascara (UMASK). Y por lo tanto, según le asociemos una u otra mascara, al realizar la operación se obtendrán los permisos absolutos que son los que realmente tendrán nuestros archivos y directorios.
Esto es:
UMASK = ABSOLUTOS - POR DEFECTO
0022 = 0666 - 0644
Esto sería si quisiéramos que al crear cualquier archivo este tuviese permisos 0666, por lo tanto, tendríamos que asignar a umask el valor 0022 de la siguiente forma:
#umask 0022
Permisos Especiales:
SUID.-El usuario toma la id del propietario cuando se ejecuta un archivo con este permiso => x=S
SUGID.-El usuario toma el id de grupo del grupo del propietario cuando se ejecuta un archivo con este permiso => x=l
STICKY.-Se aplica a directorios para proteger sus ficheros => x=T
Javier G.