|
Permisos en Mac OS X
Vamos a revisar (a modo de recordatorio) cómo funcionan los permisos de los archivos en el OSX y a ver si entendemos porqué el OSX nos pide la contraseña de administrador para realizar ciertas operaciones.
En Unix (y por tanto en OSX) existen distintos usuarios (que pueden ser físicos o no). Cada usuario posee sus archivos y sus carpetas. ¿Por qué? Pues por la sencilla razón de que un usuario puede (o no) desear que el resto de usuarios del ordenador lea sus mails, vea sus películas o ejecute sus programas. Normalmente, como el Mac se utiliza de forma personal, sólo tendrá un usuario físico, que es el que creamos cuando instalamos el OSX por primera vez.
Cada usuario debe pertenecer a un grupo. El grupo es un conjunto de usuarios con ciertas ventajas sobre ciertos ficheros, carpetas y programas. Estas “ventajas” o reestricciones pueden modificarse. Por ejemplo, puedo permitir a los miembros de mi grupo que lean mis mails, pero que no los borren. Puedo darles “permisos” para que ejecuten mis programas, pero no para que los modifiquen.
De todos los usuarios, el usuario llamado root puede hacer TODO. Por ello se llama el superusuario. En OSX este usuario está de alguna manera oculto. En Unix/Linux puede uno entrar en el sistema como root sin ningún problema, pero en OSX es algo distinto. Mediante esta técnica, Apple consigue que sea más difícil meter la pata. Si nos dejara entrar al sistema como super usuarios en cualquier momento, más de uno se cargaría su ordenador en pocos minutos.
Los grupos existen siempre. De hecho, cuando damos de alta nuestro usuario en OSX, automáticamente nos incluye en varios grupos por defecto. Si somos nosotros los que instalamos el operativo, el OSX nos incluirá en los siguientes grupos: (suponiendo que nuestro usuario Unix es pepito)
$ groups pepito
pepito appserveradm appserverusr admin
pepito es un grupo con el mismo nombre que nuestro usuario. El sistema nos crea un grupo para nosotros solitos y también nos incluye en otros grupos. Estos grupos (admin, etc.) son grupos que poseen permisos especiales para arrancar ciertos programas, editar ciertos ficheros importantes y modificar el sistema en cierta medida. Es un apaño que ha hecho Apple para que los makeros no lo pasemos tan mal a la hora de hacer pequeños cambios en el sistema. Es como si nuestro usuario fuera un superusuario en pequeñito…, el hijo del superusuario, por así decirlo. De esta forma, tenemos permiso directamente para realizar ciertas operaciones cotidianas que en otros sistemas Unix estarían tajantemente prohibidas (y sólo podrían hacerse como root).
Cuando el sistema nos pide que tecleemos nuestra contraseña para realizar ciertas operaciones (por ejemplo, al instalar un paquete con el instalador), lo que en realidad está ocurriendo es que vamos a ejecutar dicha operación como si por un momento nos convirtiéramos en papá, en el superusuario o root. ¿Pero cómo? ¿Por qué me pide el sistema mi contraseña para que el usuario root haga ciertas operaciones? ¿No tiene el usuario root su propia contraseña?
Cierto. Lo que pasa es que el OSX le asigna la misma que la nuestra (la del usuario con el que instalamos el operativo) por motivos de comodidad. Si queremos que el usuario root pueda entrar en el sistema de forma normal y corriente (por ejemplo, desde la pantalla de login), debemos activarlo y asignarle una contraseña personal, pero eso es algo que no recomiento y no voy a explicar aquí.
El OSX permite añadir y modificar grupos de forma gráfica con el Gestor NetInfo, que poca gente utiliza, o accediendo directamente a la base de datos NetInfo a través de ciertos comandos (más complicado todavía). De esta forma Apple consigue un Unix “simplificado” a base de enmascarar y ocultar ciertas operaciones.
Así como los usuario pueden pertenecer a distintos grupos, los ficheros o carpetas sólo pueden pertenecer a uno.
Cuando ejecutáis el comando de terminal ls -la en cualquier directorio veréis un resultado parecido a este.
$ ls -laa
total 104
drwxr-xr-x 32 pepito pepito 1088 Jul 19 13:58 .
drwxrwxr-t 8 root admin 272 Jul 14 11:45 ..
-rw-r--r-- 1 pepito pepito 3 Jul 4 12:37 .CFUserTextEncoding
-rw-r--r-- 1 pepito pepito 12292 Jul 12 10:38 .DS_Store
drwx------ 39 pepito pepito 1326 Jul 19 13:21 .Trash
-rw------- 1 pepito pepito 0 Jul 19 13:58 .Xauthority
drwxr-xr-x 3 pepito pepito 102 Jul 19 13:58 .anjuta
Las d, x, r y demás guiones significan lo siguiente:
permiso de lectura del usuario
|permiso de escritura del usuario
||permiso de ejecución para el usuario
||| permiso de lectura para el resto de usuarios
||| |permiso de escritura para el resto de usuarios
||| ||permiso de ejecución para el resto de usuarios
||| |||
-rw-r--r--
| |||
| ||permiso de ejecución para el grupo
fich/dir |permiso de escritura para el grupo
permiso de lecturura para el grupo
Es decir, si existe una r o una x o una w, significa que o el usuario (nosotros) y/o el grupo y/o el resto de usuarios tiene permisos de lectura y/o de escritura y/o de ejecución (si se trata de un programa o fichero ejecutable).
El primer carácter de todos indica si es un fichero (f) o directorio (d) o enlace simbólico o alias a la unix (s).
Las dos columas siguientes indican el usuario (poseedor) y el grupo al que pertence el archivo o carpeta. Por defecto, cuando creamos un fichero, el sistema le asigna permisos de lectura y escritura a nuestro usuario y a nuestro grupo y al resto, sólo de lectura:
$ ls -l ejemplo.txt
-rw-r--r-- 1 pepito pepito 0 Jul 20 10:44 ejemplo.txt
En el caso de las carpetas es algo distinto: por defecto se deja que todo el mundo pueda leer de ella y ejecutar programas, pero no modificarla.
$ ls -l carpeta
drwxr-xr-x 1 pepito pepito 0 Jul 20 10:44 carpeta
Esta información también puede consultarse en la ventana de información del fichero (Cmd + I) en la sección de detalles.
Otro ejemplo: la carpeta de aplicaciones (/Applications). Cuando listamos el directorio raíz de nuestro disco, vemos:
$ ls -l /
total 9626
drwxrwxr-x 41 root admin 1394 Jul 19 11:43 Applications
...
podemos comprobar cómo su usuario es root y su grupo es admin. El usuario (root) tiene permisos de lectura, escritura y ejecución. El grupo también, y los demás sólo de lectura y ejecución. ¿Qué quiere decir esto? Pues que el root lo puede hacer todo y los usuarios que están en el grupo admin tambien. ¿Y quién es el guapo que está en el grupo admin? Pues nosotros… es decir, los usuarios principales de nuestros Macs… los que hemos instalado el operativo, lo hemos configurado y presumido ante las visitas y amigos de nuestro increible buen gusto respecto a ordenadores, decoración y ante la vida en general. Los demás usuarios sólo pueden leer los contenidos de la carpeta Aplicaciones y ejecutar programas, pero no borrarlos ni cambiarlos ni realizar cambios en esta carpeta. Este “resto de usuarios” puede ser nuestro primo al que le prestamos el Mac… o bien puede ser alguien que accede a nuestro Mac ocasionalmente, bien física o remotamente. Los usuarios del grupo admin pueden modificar la carpeta Aplicaciones, por eso podemos arrastrar y soltar programas sin el menor problema e incluso borrarlos.
Y bien, ¿cómo se cambian los permisos? Pues puede hacerse desde la misma ventana de información del Finder, aunque yo no lo recomiento. A mí me da bastantes problemas y además, no permite dar permisos de ejecución a scripts, etc. Yo prefiero el terminal, que para eso lo creó un chico listo con gafas.
Pero antes de hablar del comando chmod, os digo que aparte de los símbolos x, w, d, r, y s, existe también el símbolo t. Si encontramos una t en la posición de permiso de ejecución para el resto del grupo, se está indicando que los ficheros incluídos dentro de la carpeta en cuestión (sólo carpetas) sólo pueden borrarse (o cambiar de nombre) por su usuario correspondiente y nadie más. Este símbolo t se llama por ello pegajoso, pues el fichero permanece pegado dentro del directorio sin que nadie (excepto) su creador, pueda borrarlo o cambiarle el nombre.
Y ahora hablemos de chmod. chmod cambia los permisos de los usuarios y grupos respecto a ficheros o carpetas. Su uso es muy sencillo. Al comando chmod a de seguirle las letras u, g y/o o para indicar que el cambio afectará al usuario del fichero (u), al grupo (g) y/o al resto de usuarios (o). Y luego le sigue una expresión indicatoria de qué permisos estamos añadiendo o quitando. Ejemplos:
$ chmod g+r mi-fichero.txt
Con este comando le estoy dando permisos de escritura a los miembros del grupo.
$ chmod ugo+rwx mi-fichero.txt
Con este comando le estoy dando permisos de escritura, lectura y ejecución a los miembros del grupo, a mí mismo y a todo el mundo. Con el símbolo menos (-) estaría quitando esos permisos, claro, y con el símbolo igual, fijamos unos permisos concretos y absolutos.
Puedo hacer lo mismo con una carpeta:
$ chmod u+rw,g-w,o+r Archivos/
Con este comando le estoy añadiendo permisos de lectura/escritura a mi usuario, le estoy restando permisos de escritura al grupo y dando permisos de lectura al resto sobre la carpeta Archivos. Si además quiero que las mismas condiciones se apliquen a los ficheros que contenga dicha carpeta y que ya existían, he de especificar la opción -R. Si había ficheros
Si guiero que los permisos sean exactamente unos concretos, he de emplear el símbolo igual a (=)
$ chmod g=r mi-fichero.txt
Ahora el grupo sólo podrá leer el fichero, ni modificarlo ni ejecutarlo.
$ chmod g= mi-fichero.txt
significa que el grupo no podrá hacer nada de nada (notad que no hay nada detrás del igual).
Para añadir el símbolo de “pegajoso” a un directorio, ejecutaremos:
$ chmod u+t directorio
Existe otra forma de codificar permisos a través de una notación octal. No voy a explicarlo aquí porque me parece, si cabe, más complicada todavía. La notación por u’s, g’s, r’s, w’s, o’s, etc. parece algo más intuitiva. Quien quiera saber más que consulte l página de manual de chmod.
Fuente: www.faq-mac.com
Technorati Tags:
permisos
macosx
>> |