RAFA !!
Opciones Curso Básico de Linux

Permisos de Acceso


Una de las caracteristicas de los sistemas opertativos UNIX es la posibilidad de que cada archivo tenga ciertos permisos de acceso y utilización. En realidad, esta caracteristica la provee el sistema de archivos.
Cada archivo de nuestro sistema de archivos (Incluidos los directorios) posee ciertos permisos de acceso. ésto son, básicamente, tres: Lectura (r), Escritura (w), y ejecución (x). Estos permisos pueden ser aplicados al usuario dueño del archivo, al grupo de usuarios al cual pertenece y a todos los demás usuarios del sistema. Esto significa que podemos asignar permisos de ejecución al dueño de un archivo, pero podemos asignar permisos de sólo lectura a todos los demás usuarios.
Para ir entendiendo un poco mejor las cosas, vamos a teclear algunos comandos. Existe un parámetro del comando ls que nos permite visualizar informacion detalla de los archivos y directorios. Uno de los datos que nos ofrece son los permisos de cada archivo y de cada directorio. El parámetro es -l y ofrecerá un listado similar al siguiente:

[root@localhost /root]# ls -l
-rw-r--r-- 1 root root 25 May 13 15:28 documento.txt
[root@localhost /root]#


Como podemos ver, en el directorio root sólo hay un archivo llamado documento.txt. La columna que más nos interesa ahora es la primera (-rw-r-r--). En ésta, cada letra indica el permiso asignado. Si en lugar de una letra aparece un simbolo menos "-", entonces quiere decir que el mismo permiso no está asignado. Ahora bien, ¿Cuál es la estructura de permisos? Muy sencilla: el primer carácter puede contener una letra d si es un directorio, o un símbolo "-" si es un archivo. Los demás caracteres los dividiremos en grupos de tres: los primeros tres son los permisos asignados al usuario, el segundo trío son los permisos asignados al grupo, y los últimos tres caracteres son los permisos asignados a todos los demás usuarios. Veamos algunos ejemplos:

drwxrwxrwx Sería im dorectorio (primer carácter con letra "d") que poseería permisos de lectura, de escritura y de ejecución para su dueño, para su grupo y para todos los demás usuarios del sistema
-rwx------ Sería un archivo (primer carácter con símbolo "-") que sólo podría ser leído, modificado y ejecutado por su dueño.
-r--r--r-- Sería un archivo que podría ser leido por todos los usuarios, pero no podría ser modificado ni ejecutado por ninguno.
-rw-rw-rw- Sería un archivo que podría ser leído por todos los usuarios del sistema, pero sólo podría ser modificado por su propietario y por su grupo.

Es recomendable ejecutar un ls -l en diferentes directorios para ver otros ejemplos de permisos.
Vayamos a la practica. (¿Como modificar los permisos de un archivo?), Para manejar permisos, GNU/Linux nos provee de una herramienta llamada chmod. Su estructura es la siguiente:

chmod [quien] [+/-] [permiso] [archivo]

El parametro [quien] puede contener una letra u (usuario dueño del archivo), una letra g (grupo) o una letra o (todos los demas). El segundo parametro nos permite asignar un permiso con el carácter "+" o denegar un permiso "-". Por último, se definen los permisos en sí y el archivo al cual serán asignados. Veamos algunos ejemplos:

chmod u+x documento.txt

Asigna permiso de ejecución del archivo documento.txt sólo para su dueño.

chmod ug+r documento.txt

Asigna permisos de lectura al archivo documento.txt tanto para su dueño como para el grupo al que pertence.

chmod o-x script.pl

Deniega la ejecución del archivo script.pl a todos los usuarios que no pertenzcan al grupo del usuario propietario de ese archivo. Una última aclaración: el permiso de ejecución sólo debe ser asignado a archivos binarios ejecutables y archivos de script (interpretados por lenguajes de programación como Perl). En caso de que se asigne un permiso de ejecución a un archivo que no fue concebido originalmente para ser ejecutado, los resultados en el comportamiento del sistema pueden ser inesperados.

Dueños

Otra propiedad que poseen los archivos en el sistema GNU/Linux es que tienen propietarios. Esto quiere decir que cada archivo le corresponde a un usuario o a un grupo de usuarios.

El sistema es muy sencillo de comprender: si creamos un archivo con cualquier aplicación (un documento en un editor de textos, por ejemplo), ese archivo tendrá registrado como dueño nuestro nombre de usuario. Si queremos que ese archivo sea propiedad de otro usuario, tendremos que usar el comando chown. La forma básica de este comando es:

chown usuario [archivo(s)]

De esta forma, el nuevo propietario del archivo podrá realizar modificaciones a sus permisos, ya que es el nuevo dueño.

Enlaces

Los enlaces son accesos directos directos a un archivo, desde otra zona del sistema de archivos. Por ejemplo, si queremos crear un acceso directo al archivo /etc/password en el directorio root, sólo tendremos que usar el siguiente comando:

ln /etc/passwd /root/mienlace

El comando ln se encargará automaticamente de crear el enlace. El primer parámetro indica hacia dónde apunta ese enlace, y el segundo parámetro es el nombre del enlace. De esta forma, cuando realicemos cualquier operación sobre /root/mienlace, ésta, en realidad, será efectuada en /etc/passwd. Obviamente, el enlace es sólo un apuntador al archivo, por lo que de ninguna manera tendrá el mismo tamaño que el archivo apuntado.

El proceso de montaje

Linux a diferencia de Windows no utiliza letras ("a:", "c:", "d:", ...) para acceder a las distintas unidades de disco de un ordenador. En Linux para acceder al contenido de una unidad de disco o de un CD-ROM este tiene que haber sido previamente "montado". El montado se realiza mediante el comando mount, con lo que el contenido de la unidad se pone a disposición del usuario en el directorio de Linux que se elija. Por ejemplo para acceder al CD-ROM se teclearía el siguiente comando:

mount -t iso9660 /dev/cdrom /mnt/cdrom

donde -t iso9660 indica el tipo de sistema que usa la unidad de disco para guardar los ficheros (las más usuales son: iso9660 en el caso de un CD-ROM, vfat en el caso de Windows, y ext2 o ext3 en el caso de Linux), /dev/cdrom indica el dispositivo que se va a montar. Todos los dispositivos están representados por un fichero del directorio /dev, por ejemplo en el caso de un disquete será seguramente /dev/fd0, por último /mnt/cdrom es el directorio en el que se pondrá a disposición del usuario el contenido del CD-ROM. Para montar disquetes se suele utilizar el directorio /mnt/floppy. De todas formas el usuario siempre puede crear un directorio vacío con el nombre que el elija para montar las unidades de disco que desee donde desee. Cuando el usuario haya dejado de usar ese disco deberá "desmontarlo" mediante el comando umount antes de sacar el disquete o el CD-ROM. En este último caso debería escribir: umount /mnt/cdrom Para utilizar el comando mount de la forma anterior hace falta ser administrador o root. Para que un usuario común pueda utilizar disquetes, CD-ROM, etc. hay que editar el fichero /etc/fstab Por ejemplo para que cualquier usuario pueda acceder a un disquete habrá que indicar la siguiente línea: /dev/fd0 /mnt/floppy vfat user,noauto 0 0 También habrá que asegurarse de que el directorio /mnt/floppy sea accesible por todos los usuarios. Una vez seguidos los pasos anteriores cualquier usuario podrá "montar" un disquete escribiendo el siguiente comando: mount /mnt/floppy Al igual que antes el usuario deberá ejecutar el comando umount /mnt/floppy antes de sacar el disquete. Nota: Existen en la actualidad distribuciones que realizan este proceso de forma automática por lo que las unidades de disquete y CD-ROM quedan accesibles a todos los usuarios de una forma sencilla, empleando los comandos: mount /mnt/floppy umount /mnt/floppy siempre que /mnt/floppy sea la ruta adecuada.