ant

PERMISOS DE FICHEROS
3.9

sig

3.9.1 Conceptos de permisos de ficheros

Al ser UNIX un sistema multiusuario, para proteger ficheros de usuarios particulares de la manipulación por parte de otros, UNIX proporciona un mecanismo conocido como permisos de ficheros. Este mecanismo permite que ficheros y directorios "pertenezcan" a un usuario en particular. Por ejemplo, como Decker creó ficheros en su directorio "home", Decker es el propietario de esos ficheros y tiene acceso a ellos.

UNIX también permite que los ficheros sean compartidos entre usuarios y grupos de usuarios. Si Decker lo desea, podría restringir el acceso a sus ficheros de forma que ningún otro usuario tenga acceso. De cualquier modo, en la mayoría de los sistemas por defecto se permite que otros usuarios puedan leer tus ficheros pero no modificarlos o borrarlos.

Como hemos explicado arriba, cada fichero pertenece a un usuario en particular. Por otra parte, los ficheros también pertenecen a un grupo en particular, que es un conjunto de usuarios definido por el sistema. Cada usuario pertenece al menos a un grupo cuando es creado. El administrador del sistema puede hacer que un usuario tenga acceso a más de un grupo.

Los grupos usualmente son definidos por el tipo de usuarios que acceden a la maquina. Por ejemplo, en un sistema UNIX de una universidad, los usuarios pueden ser divididos en los grupos estudiantes, dirección, profesores e invitados. Hay también unos pocos grupos definidos por el sistema (como bin y admin) los cuales son usados por el propio sistema para controlar el acceso a los recursos; muy raramente los usuarios normales pertenecen a estos grupos.

Los permisos están divididos en tres tipos: lectura, escritura y ejecución. Estos permisos pueden ser fijados para tres clases de usuarios: el propietario del fichero, el grupo al que pertenece el fichero y para todos los usuarios independientemente del grupo.

El permiso de lectura permite a un usuario leer el contenido del fichero o en el caso de un directorio, listar el contenido del mismo (usando ls). El permiso de escritura permite a un usuario escribir y modificar el fichero. Para directorios, el permiso de escritura permite crear nuevos ficheros o borrar ficheros ya existentes en dicho directorio. Por ultimo, el permiso de ejecución permite a un usuario ejecutar el fichero si es un programa o guión del interprete de comandos. Para directorios, el permiso de ejecución permite al usuario cambiar al directorio en cuestion con cd.

3.9.2 Interpretando los permisos de ficheros

Veamos un ejemplo del uso de permisos de ficheros. Usando el comando ls con la opcion -l se mostrará un listado "largo" de los ficheros, el cual incluye los permisos de ficheros.
/home/Decker/notas# ls -l notas.html

-rw-r--r-- 1 Decker users 505 Mar 13 19:05 notas.html

/home/Decker/notas#
El primer campo impreso en el listado representa los permisos de ficheros. El tercer campo es el propietario del fichero (Decker), y el cuarto es el grupo al cual pertenece el fichero (users). Obviamente, el ultimo campo es el nombre del fichero (notas.html), y los demás campos los trataremos más adelante.

Este fichero pertenece a Decker y al grupo users. Echemos un vistazo a los permisos. La cadena -rw-r--r-- nos informa, por orden, de los permisos para el propietario, el grupo del fichero y cualquier otro usuario.

El primer carácter de la cadena de permisos ("-") representa el tipo de fichero. El "-" significa que es un fichero regular. Las siguientes tres letras ("rw-") representan los permisos para el propietario del fichero, Decker. El "r" para "lectura" y "w" para escritura. Luego Decker tiene permisos de lectura y escritura para el fichero notas.html.

Como ya mencionamos, aparte de los permisos de lectura y escritura está el permiso de "ejecución", representado por una "x". Como hay un "-" en lugar del "x", significa que Decker no tiene permiso para ejecutar ese fichero. Esto es correcto, puesto que stuff no es un programa de ningun tipo. Por supuesto, como el fichero es de Decker, puede darse a si mismo permiso de ejecución si lo desea. Esto será cubierto en breve.

Los siguientes tres caracteres, r-- representan los permisos para los miembros del grupo. El grupo sal que pertenece el fichero es users. Como solo aparece un "r" cualquier usuario que pertenezca al grupo users puede leer este fichero.

Los últimos tres caracteres, también r--, representan los permisos para cualquier otro usuario del sistema (diferentes del propietario o de los pertenecientes al grupo users). De nuevo, como solo está presente el "r", los demás usuarios pueden leer el fichero, pero no escribir en el o ejecutarlo.

Aquí tenemos otros ejemplos de permisos de grupo.

-rwxr-xr-x El propietario del fichero puede leer, escribir y ejecutar el fichero. Los usuarios pertenecientes al grupo del fichero, y todos los demás usuarios pueden leer y ejecutar el fichero.

-rw------- El propietario del fichero puede leer y escribir. Nadie mas puede acceder al fichero.

-rwxrwxrwx Todos los usuarios pueden leer, escribir y ejecutar el fichero.

3.9.3 Dependencias

Es importante darse cuenta de que los permisos de un fichero también dependen de los permisos del directorio en el que residen. Por ejemplo, aunque un fichero tenga los permisos -rwxrwxrwx, otros usuarios no podrán acceder a él a menos que también tengan permiso de lectura y ejecución para el directorio en el cual se encuentra el fichero. Si Decker quiere restringir el acceso a todos sus ficheros, podría simplemente poner los permisos de su directorio "home" /home/Decker a -rwx------. De esta forma ningún usuario podrá acceder a su directorio ni a ninguno de sus ficheros o subdirectorios. Decker no necesita preocuparse de los permisos individuales de cada uno de sus ficheros.

En otras palabras, para acceder a un fichero, debes de tener permiso de ejecución de todos los directorios a lo largo del camino de acceso al fichero, además de permiso de lectura (o ejecución) del fichero en particular.

Habitualmente, los usuarios de un sistema UNIX son muy abiertos con sus ficheros. Los permisos que se dan a los ficheros usualmente son -rw-r--r--, lo que permite a todos los demás usuarios leer los ficheros, pero no modificarlos de ninguna forma. Los directorios, usualmente tienen los permisos -rwxr-xr-x, lo que permite que los demás usuarios puedan moverse y ver los directorios, pero sin poder crear o borrar nuevos ficheros en ellos.

Muchos usuarios pueden querer limitar el acceso de otros usuarios a sus ficheros. Poniendo los permisos de un fichero a -rw------- no se permitirá a ningún otro usuario acceder al fichero.

Igualmente, poniendo los permisos del directorio a -rwx------ no se permitirá a los demás usuarios acceder al directorio en cuestión.

3.9.4 Cambiando permisos

El comando chmod se usa para establecer los permisos de un fichero. Sólo el propietario puede cambiar los permisos del fichero. La sintaxis de chmod es:
chmod {a,u,g,o}{+,-}{r,w,x} <filenames>
Brevemente, indicamos a que usuarios afecta todos(all),usuario (user),grupo (group) u otros (other). Entonces se especifica si se están añadiendo permisos(+) o quitándolos(-).

Finalmente se especifica que tipo de permiso lectura(Read), escritura (write) o ejecución (execute). Algunos ejemplos:

chmod a+r notas.html Da a todos los usuarios acceso al fichero.

chmod +r notas.html Como arriba, si no se indica a, u, g o o por defecto se toma a.

chmod og-x notas.html Quita permisos de ejecucion a todos los usuarios excepto al propietario.

chmod u+rwx notas.html Permite al propietario leer, escribir y ejecutar el fichero.

chmod o-rwx notas.html Quita permisos de lectura, escritura y ejecución a todos los usuarios menos al propietario y a los usuarios del grupo del fichero.

Existe otro tipo de notación que juega con el código binario:
000 0 ---
001 1 --x
010 2 -w-
011 3 -wx
100 4 r--
101 5 r-x
110 6 rw-
111 7 rwx
Con esta notación si queremos dar estos permisos rwxrwxrwx podemos escribirlo así 777 :
chmod 777 notas.html