martes, 1 de noviembre de 2011

Como funciona el sistema de permisos en osx


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 espepito)
$ 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 comoroot).
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 rootpueda 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 dxr 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,wdr, 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ímbolot 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 chmodchmod 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 ug 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 carpetaArchivos. 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.
aparte de esta explicación podemos obtener la de la web de apple en 
http://support.apple.com/kb/HT2963?viewlocale=es_ES&locale=es_ES

Mac OS X: Cómo solucionar problemas con los permisos

  • Última modificación: 03 junio, 2011
  • Artículo: HT2963
    Enviar este artículo por correo electrónico
    Imprimir esta página

    Resumen

    El presente documento analiza los permisos en el Mac OS X, estudia posibles problemas causados por una incorrecta configuración de los permisos y ofrece soluciones posibles.

    Productos afectados

    Mac OS: instalación/configuración (cualquier versión)
    Importante: El presente documento describe cómo modificar la configuración de los permisos ejecutando los comandos correspondientes en la utilidad Terminal. Se recomienda precaución a los usuarios menos familiarizados con el Terminal y con entornos tipo UNIX. La introducción de un comando equivocado puede ocasionar pérdidas de información y dañar el software del sistema. La modificación inadecuada de los permisos puede dar lugar a una reducción en los niveles de seguridad del equipo y/o a la desprotección de información de carácter privado.

    Los permisos también reciben el nombre de "privilegios".

    Permisos definidos
    El Mac OS X incorpora un subsistema basado en un sistema operativo, parecido a UNIX, que utiliza permisos en el sistema de archivos. Cada uno de los archivos y carpetas del disco duro tiene asociados unos permisos que establecen qué usuarios pueden leer, escribir y ejecutar los mismos. A continuación aparece un ejemplo del funcionamiento y significado de los permisos para un documento de AppleWorks:
    • Lectura (r--)Permite abrir el documento AppleWorks si se dispone de permiso de lectura.
    • Escritura (-w-)Permite guardar cambios en el documento AppleWorks si se dispone de permiso de escritura.
    • Ejecución (--x)Permite abrir el documento AppleWorks si se dispone de permiso de ejecución. Este permiso sólo es necesario para aplicaciones y archivos ejecutables.
    Si el sistema permite realizar los tres tipos de tarea, entonces el usuario dispone de permiso "rwx". Los permisos para carpetas funcionan de modo similar. El permiso de sólo lectura para una carpeta permite abrir y leer todos los documentos contenidos en la misma, pero no realizar cambios ni añadir documentos a la misma. El permiso de sólo lectura se utiliza para compartir archivos con usuarios invitados.


    Propietario, Grupo, Otros
    Las abreviaturas "
    rwx
    " y "r-x" describen el tipo de permiso de un usuario o identidad. Los permisos establecidos para cada archivo o carpeta definen el acceso para tres tipos de identidad: propietario, grupo y otros.

    • Propietario - El propietario suele ser el usuario que ha creado el archivo o carpeta. Así, tú eres el propietario de casi todos los archivos y carpetas alojados en tu directorio Principal.
    • Grupo - Los usuarios Admin en el Mac OS X pertenecen a los grupos denominados "admin" y "wheel", mientras que el superusuario denominado "root" pertenece a los grupos "admin" y "staff". Todos los archivos y carpetas suelen estar asignados a uno de estos tres grupos.
    • Otros - Son los usuarios que ni poseen ni pertenecen a los grupos de un fichero o carpeta.

    Dado que cada identidad dispone de su propios permisos, un ejemplo de un permiso total sería "-rwxrw-r--". El guión inicial indica que el elemento es un archivo y no una carpeta. En el caso de las carpetas aparece en primer lugar la letra "d", como en "drwxrw-r--". La "d" significa directorio, que es lo que representa una carpeta. La Figura 2 muestra la apariencia en la aplicación Terminal.


    Ejemplo: Creación de un documento TextEdit
    Supongamos que se crea un documento TextEdit se guarda en la carpeta Documentos del directorio Principal. El documento tiene los permisos "-rw-r--r--", por lo que permite lectura y escritura; en cambio, el grupo asignado y el resto de usuarios tan solo disponen de permiso de lectura. Pero al guardar el documento en la carpeta Documentos (drwx------), el grupo y el resto de usuarios ni siquiera pueden verlo. Los permisos de carpeta prevalecen siempre sobre los de los documentos contenidos en la misma. Así es como la estructura del directorio Principal asegura la privacidad del contenido; si arrastrásemos el documento a la carpeta Pública (drwxr-xr-x) y saliésemos de la sesión, los siguientes usuarios podrían acceder al contenido de dicha carpeta.


    Root: El superusuario
    En el Mac OS X, el superusuario "root" se crea al instalar el propio sistema. El usuario root tiene acceso total a todos los archivos y carpetas del equipo, y, a diferencia de un usuario normal, dispone de acceso administrativo adicional. Para el uso diario del equipo no es necesario entrar como usuario root (de hecho, permanece desactivado por omisión). Para más información sobre el usuario root y cómo activarlo, consulta el documento 106290: "
    Mac OS X: El usuario root. Cómo activarlo
    ".


    Problemas que afectan a los permisos
    Una mala configuración de los permisos puede dar lugar a un comportamiento inesperado. A continuación figura una lista de posibles problemas y soluciones:

    • Instaladores de aplicación, carpeta Aplicaciones
      El instalador de una aplicación de otro fabricante establece los permisos de los archivos que instala de forma incorrecta. Los síntomas posibles incluyen la aparición de la aplicación en el escritorio en forma de interrogación y/o la imposibilidad de conectar el equipo a Internet. También es posible que el software instalado por un usuario no sea accesible para el resto. Para evitarlo, asegúrate de entrar en la sesión con tu cuenta de usuario habitual.
    • Archivos creados en el Mac OS 9
      Los archivos creados en el Mac OS 9 pueden aparecer en el Mac OS X con propietario root. Al arrancar en modo Mac OS 9 un equipo que también tenga instalado el Mac OS X, puedes ver, mover y eliminar cualquier archivo, lo que te convierte en usuario root. Por eso es recomendable no mover ni abrir archivos ni carpetas desconocidas al arrancar en modo Mac OS 9.
    • Interrupción de la alimentación
      El sistema de archivos puede verse afectado por una interrupción inesperada (mal cierre) o porque el equipo deje de responder (se quede "colgado). Es posible que ambas situaciones afecten a los permisos. Para solucionar este problema consulta el documento 106214: "Mac OS X: Cómo y cuándo ejecutar fsck para el mantenimiento de archivos".
    • Acceso al software=acceso de usuario
      La mayoría de las aplicaciones ejecutadas por un usuario solamente disponen de acceso a los archivos cuyos permisos posea dicho usuario. Por ejemplo, las copias de seguridad que se realicen no incluirán los archivos del Mac OS X que tengan al usuario root como propietario.
    • Vaciado de la Papelera
      Las carpetas para las que no se dispone de permiso de escritura pueden dejarse en la Papelera, pero no se permite eliminar la carpeta ni los archivos que contiene. Recuerda que en el Mac OS X hay más de una Papelera; una para cada usuario. También hay Papeleras para el volumen de arranque y para otros volúmenes y discos. Estas carpetas se llaman ".Trash" y permanecen ocultas al usuario en el Finder. En estos casos se puede arrancar en modo Mac OS 9 para buscar los archivos y eliminarlos o utilizar la aplicación Terminal.
    Atención
    : Esta opción es aconsejable solo para usuarios familiarizados con la aplicación Terminal o con entornos tipo UNIX. El uso indebido de este comando puede ocasionar pérdidas de información. Sigue los pasos a continuación para vaciar la Papelera:


    1. Abre la aplicación Terminal.

    2. Escribe: sudo rm -rf

    Importante
    : Deja un espacio después de "-rf". No presiones Intro hasta el paso 6.

    3. Abre la Papelera.

    4. En el menú Edición elige Seleccionar todo.

    5. Arrastra el contenido de la Papelera a la ventana de Terminal. Esto hace que Terminal identifique el nombre y ubicación de cada uno de los archivos de la Papelera.

    6. Presiona Intro.


    Se borrará todo el contenido de la Papelera. Como método alternativo se puede ejecutar los siguientes comandos (el segundo y el tercero borran las Papeleras de otros usuarios):


    sudo rm -rf ~/.Trash/

    sudo rm -rf /.Trashes/

    sudo rm -rf /Volumes/<volumename>/.Trashes/


    Se borrará todo el contenido de las Papeleras de usuario, la del volumen de arranque y las de otros volúmenes (si las hubiera).

    Estos comandos no borran los archivos y carpetas bloqueados. Para desbloquear archivos consulta el documento 106682: "
    Mac OS X: No se puede vaciar la Papelera
    ".


    Importante
    : El comando sudo se puede utilizar para beneficiarse temporalmente de los permisos de superusuario y realizar cambios en los permisos de determinados archivos que de otra forma no podrían realizarse.

    No obstante, solamente se puede realizar si se entra como usuario Admin, lo que exige disponer de la contraseña correspondiente.


    Cómo ver y modificar los permisos en la ventana del Finder
    El Finder del Mac OS X se puede utilizar para ver y realizar cambios en la configuración de los permisos para determinados archivos y carpetas. Solamente se permite realizar cambios en aquellos archivos y carpetas de los que se sea propietario. Para ver y realizar cambios en la ventana del Finder:


    1.
    Selecciona un archivo o carpeta en el Finder.

    2.
    En el menú Archivo selecciona Mostrar información.

    3.
    En el menú de información selecciona Privilegios.

    4.
    Realiza los cambios oportunos (Figura 1).

    5.
    Opción: Si realizas cambios en una carpeta y deseas que sean aplicables a todos los archivos y carpetas contenidos en la misma, haz clic en Aplicar.


    Importante
    Los cambios realizados en la ventana Info son efectivos desde el mismo momento en que se realizan.




    Figura 1
    Privilegios de la ventana Info


    Modificación de permisos con Terminal
    La aplicación Terminal se encuentra en la carpeta Utilidades, la cual se halla en la carpeta Aplicaciones. Su puede utilizar Terminal para comprobar y modificar los permisos. Al contrario de lo que ocurre con la ventana Info del Finder, el comando sudo tiene la ventaja de disponer de accesos de usuario root sin tener que entrar como tal.


    Atención
    : Para utilizar esta herramienta es necesario tener conocimientos de programación. El uso inadecuado de Terminal puede ocasionar pérdidas de información y daños en el sistema.


    Para establecer permisos para archivos y carpetas, abre Terminal y navega hasta el directorio en el que estén alojados. A continuación ejecuta el comando "ls -l". Ver Figura 2.




    Figura 2
    Comprobación de permisos con Terminal


    Tal y como muestra la Figura 2, todos los usuarios pueden leer "File Name1.ext", dado que (r) está establecido. No obstante, solamente el usuario root puede escribir, ya que (w) sólo afecta al propietario o usuario root. Si no se trata de un archivo de sistema pero se desea modificarlo desde la cuenta normal de usuario, se puede modificar el propietario como sigue:


    sudo chown yourusername "File Name1.ext"


    El archivo pertenece al usuario root, no al usuario normal al que el comando sudo da acceso temporal root. Cambia tu nombredeusuario por la versión corta del nombre de usuario con el que has entrado.


    Sintaxis
    : Asegúrate de escribir correctamente los caracteres y espacios en las rutas que introduzcas en la aplicación Terminal. En el ejemplo, el nombre del archivo aparece entre comillas porque contiene un espacio. También se puede sustituir los espacios por barras seguidas de espacios. Así, el mismo comando sin espacios se escribiría:


    sudo chown yourusername File\ Name1.ext


    Para más información sobre cómo modificar propiedades, grupos y permisos, consulta las secciones del manual chown, chgrp y chmod. Para acceder al manual, ejecuta "man <command_name>". Por ejemplo:


    man chmod


    Por omisión, las páginas del manual se muestran una a una. Para pasar a la siguiente presiona la barra espaciadora del teclado. Para salir del manual presiona Q.

    No hay comentarios:

    Publicar un comentario

    Deja tus opiniones y/o comentarios, nos sirven para mejorar nuestro blog, gracias