<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Nociones básicas sobre los archivos</title><meta name="generator" content="DocBook XSL Stylesheets V1.64.0"><link rel="home" href="index.html" title="Guía de Referencia"><link rel="up" href="unix-basics.html" title="Capítulo 1. Conceptos básicos de un Sistema UNIX"><link rel="previous" href="ch01s01.html" title="Usuarios y grupos"><link rel="next" href="basics-process.html" title="Los procesos"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Nociones básicas sobre los archivos</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s01.html">Anterior</a> </td><th width="60%" align="center">Capítulo 1. Conceptos básicos de un Sistema UNIX</th><td width="20%" align="right"> <a accesskey="n" href="basics-process.html">Siguiente</a></td></tr></table><hr></div><div class="sect1" lang="es"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2529691"></a>Nociones básicas sobre los archivos</h2></div></div><div></div></div><p><a name="BId-unix-basics-pa19"></a>Los archivos son otro tema donde <span class="application">GNU/Linux</span> difiere bastante de <span class="application">Windows</span> y muchos otros <a name="BId-unix-basics-gt9" href="glossary.html#term-operating-system"><i class="glossterm">sistemas operativos</i></a>. Aquí cubriremos las diferencias más obvias. Para más información, por favor consulte <a href="ext2fs.html" title="Capítulo 9. El sistema de archivos de Linux">Capítulo 9, <i>El sistema de archivos de Linux</i></a>.</p><p><a name="BId-unix-basics-pa20"></a>Las diferencias mayores son consecuencia directa del hecho que <span class="application">Linux</span> es un sistema multiusuario: cada archivo es de la exclusiva propiedad de un usuario y un grupo. Y una de las cosas que no mencionamos acerca de los usuarios y grupos es que cada uno de ellos posee un directorio propio (denominado su <a name="BId-unix-basics-gt10" href="glossary.html#term-home-directory"><i class="glossterm">directorio personal</i></a>, o <span class="foreignphrase"><i class="foreignphrase">home</i></span> en inglés) El usuario es el dueño de este directorio, y de los archivos que va a crear subsecuentemente.</p><p><a name="BId-unix-basics-pa21"></a>Sin embargo, esto no sería muy útil si sólo estuviera la noción de propiedad de archivos. Pero hay más: como dueño del archivo, un usuario puede configurar <span class="emphasis"><em>permisos</em></span> sobre sus archivos. Estos permisos distinguen tres categorías de usuarios: el dueño del archivo, todos los usuarios que son miembros del grupo asociado al archivo (denominado también <a name="BId-unix-basics-gt11" href="glossary.html#term-owner-group"><i class="glossterm">grupo dueño</i></a>) pero no son el usuario dueño, y los otros, que son todos los usuarios que no son ni el dueño ni miembros del grupo dueño.</p><p><a name="BId-unix-basics-pa22"></a>Hay tres permisos diferentes:</p><div class="orderedlist"><ol type="1"><li><p><a name="BId-unix-basics-pa23"></a>Permiso de lectura (<tt class="literal">r</tt> por <span class="foreignphrase"><i class="foreignphrase">Read</i></span>, Leer): para un archivo, esto permite que se lea su contenido. Para un directorio, esto permite que se muestren los archivos que contiene (es decir, los archivos en este directorio)</p></li><li><p><a name="BId-unix-basics-pa24"></a>Permiso de escritura (<tt class="literal">w</tt> por <span class="foreignphrase"><i class="foreignphrase">Write</i></span>, Escribir): para un archivo, esto permite que se modifique su contenido. Para un directorio, esto permite que un usuario agregue y/o quite archivos de este directorio, incluso si no es el dueño de esos archivos.</p></li><li><p><a name="BId-unix-basics-pa25"></a>Permiso de ejecución (<tt class="literal">x</tt> por <span class="foreignphrase"><i class="foreignphrase">eXecute</i></span>, Ejecutar): permite ejecutar un archivo (en consecuencia, normalmente sólo los archivos ejecutables deberían tener activo este permiso) Para un directorio, esto permite que un usuario lo <a name="BId-unix-basics-gt12" href="glossary.html#term-traverse"><i class="glossterm">recorra</i></a> (lo que significa poder ingresar a, o pasar por, ese directorio) Note que esto está separado del acceso de lectura: bien puede ser que Usted pueda recorrer un directorio, ¡pero no leer su contenido!</p></li></ol></div><p><a name="BId-unix-basics-pa26"></a>Todas las combinaciones de estos permisos son posibles. Por ejemplo, puede autorizar la lectura de un archivo sólo a Usted mismo y prohibirla a todos los demás usuarios. Incluso puede hacer lo contrario, aunque a primera vista no parezca muy lógico... Como dueño del archivo, también puede cambiar el grupo propietario (solamente si Usted es miembro del grupo nuevo), e incluso privarse del archivo (es decir, cambiar su dueño) Por supuesto, si Usted mismo se priva de un archivo perderá todos sus derechos sobre el mismo...</p><p><a name="BId-unix-basics-pa27"></a>Tomemos el ejemplo de un archivo y un directorio. Abajo se muestra el resultado de ingresar el comando <span><b class="command">ls -l</b></span> desde una <a name="BId-unix-basics-gt13" href="glossary.html#term-command-line"><i class="glossterm">línea de comandos</i></a>:</p><p><a name="BId-unix-basics-pa28"></a> <a name="BId-unix-basics-pl1"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"> $ ls -l total 1 -rw-r----- 1 reina users 0 Jul 8 14:11 un_archivo drwxr-xr-- 2 peter users 1024 Jul 8 14:11 un_directorio/ $ </pre></td></tr></table><p> </p><p><a name="BId-unix-basics-pa29"></a>Los diferentes campos de salida del comando <span><b class="command">ls -l</b></span> son los siguientes (de izquierda a derecha):</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-unix-basics-pa30"></a>Los primeros diez caracteres representan sucesivamente el tipo de archivo y los permisos asociados al mismo. El primer caracter es el tipo del archivo: contiene un guión (<tt class="literal">-</tt>) si es un archivo regular, o una <tt class="literal">d</tt> si es un directorio. Hay otros tipos de archivos, de los que hablaremos más adelante. Los nueve caracteres que siguen representan los permisos asociados con ese archivo. En realidad los nueve caracteres son tres grupos de tres permisos. El primer grupo representa los derechos asociados con el dueño del archivo; los siguientes tres se aplican a todos los usuarios que pertenecen al grupo pero que no son el dueño; y los últimos tres se aplican a los otros. Un guión (<tt class="literal">-</tt>) significa que el permiso no está activo.</p></li><li><p><a name="BId-unix-basics-pa31"></a>Luego viene el número de vínculos del archivo. Más adelante veremos que los archivos no sólo se identifican por su nombre, sino por un número (el número de <a name="BId-unix-basics-gt14" href="glossary.html#term-inode"><i class="glossterm">i-nodo</i></a>), y por lo tanto es posible que un archivo en disco tenga varios nombres. Para un directorio el número de vínculos tiene un significado especial, que también discutiremos un poco más adelante.</p></li><li><p><a name="BId-unix-basics-pa32"></a>Luego viene el nombre del dueño del archivo y el nombre del grupo dueño.</p></li><li><p><a name="BId-unix-basics-pa33"></a>Finalmente, se muestra el tamaño del archivo (en <a name="BId-unix-basics-gt15" href="glossary.html#term-byte"><i class="glossterm">bytes</i></a>) y la fecha de su última modificación, seguido por último por el nombre del archivo o directorio propiamente dicho.</p></li></ul></div><p><a name="BId-unix-basics-pa34"></a>Ahora observemos en detalle los permisos asociados con cada uno de estos archivos: antes que nada, debemos quitar el caracter que representa al tipo, y para el archivo <tt class="filename">un_archivo</tt> obtenemos los derechos siguientes: <tt class="literal">rw-r-----</tt>. La interpretación de los mismos es la siguiente: </p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-unix-basics-pa35"></a>Los primeros tres (<tt class="literal">rw-</tt>) son los derechos del usuario dueño del archivo, en este caso <tt class="literal">reina</tt>. Por lo tanto, el usuario <tt class="literal">reina</tt>, tiene el derecho de leer el archivo (<tt class="literal">r</tt>), de modificarlo (<tt class="literal">w</tt>) pero no de ejecutarlo (<tt class="literal">-</tt>).</p></li><li><p><a name="BId-unix-basics-pa36"></a>Los tres siguientes (<tt class="literal">r--</tt>) se aplican a todo usuario que no es reina pero que es miembro del grupo <tt class="literal">users</tt>. Dichos usuarios podrán leer el archivo (<tt class="literal">r</tt>), pero no podrán modificarlo ni ejecutarlo (<tt class="literal">--</tt>).</p></li><li><p><a name="BId-unix-basics-pa37"></a>Los tres restantes (<tt class="literal">---</tt>) se aplican a todo usuario que no es <tt class="literal">reina</tt> ni es miembro del grupo <tt class="literal">users</tt>: dicho usuario simplemente no tendrá derecho alguno sobre el archivo.</p></li></ul></div><p><a name="BId-unix-basics-pa38"></a>Para el directorio <tt class="filename">un_directorio</tt>, los derechos son <tt class="literal">rwxr-xr--</tt>, entonces: </p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-unix-basics-pa39"></a>peter, como dueño del directorio, puede listar los archivos que contiene (<tt class="literal">r</tt>), agregar o quitar archivos del mismo (<tt class="literal">w</tt>), y recorrerlo (<tt class="literal">x</tt>).</p></li><li><p><a name="BId-unix-basics-pa40"></a>Cada usuario que no es peter pero es miembro del grupo <tt class="literal">users</tt>, podrá listar los archivos de ese directorio (<tt class="literal">r</tt>), pero no podrá quitar ni agregar archivos (<tt class="literal">-</tt>), y lo podrá recorrer (<tt class="literal">x</tt>).</p></li><li><p><a name="BId-unix-basics-pa41"></a>Cualquier otro usuario sólo podrá listar el contenido de este directorio (<tt class="literal">r--</tt>), y nada más. Incluso no podrá ingresar al directorio.</p></li></ul></div><p><a name="BId-unix-basics-pa42"></a>Hay <span class="emphasis"><em>una</em></span> excepción a estas reglas: <tt class="literal">root</tt>. El usuario <tt class="literal">root</tt> puede cambiar los atributos (permisos, dueño, y grupo dueño) de todos los archivos, incluso si no es el propietario de los mismos. ¡Esto significa que también puede garantizarse la propiedad! Él puede leer archivos sobre los que no tiene permisos, recorrer directorios a los que normalmente no tendría acceso, y así sucesivamente. Y si le falta un permiso, sólo tiene que añadírselo...</p><p><a name="BId-unix-basics-pa43"></a>Para finalizar, vale la pena mencionar otra diferencia sobre los nombres de los archivos en el mundo de <span class="application">UNIX</span> y en el mundo de <span class="application">Windows</span>. <span class="application">UNIX</span> permite mayor flexibilidad y tiene menos limitaciones:</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-unix-basics-pa44"></a>Un nombre de archivo puede contener cualquier caracter, incluso los no imprimibles, excepto el caracter <span class="acronym">ASCII</span> 0, que es el fin de una cadena de caracteres, y una <tt class="literal">/</tt> que es el separador de directorio. Es más, debido a que <span class="application">UNIX</span> distingue entre mayúsculas y minúsculas, los archivos <tt class="filename">leame</tt> y <tt class="filename">Leame</tt> son dos archivos diferentes, porque <tt class="literal">l</tt> y <tt class="literal">L</tt> son dos caracteres <span class="emphasis"><em>diferentes</em></span> bajo sistemas basados en <span class="application">UNIX</span>.</p></li><li><p><a name="BId-unix-basics-pa45"></a>Como debe haber notado, un nombre de archivo no contiene extensión alguna a menos que Usted lo prefiera así. Bajo <span class="application">GNU/Linux</span> las extensiones de los nombres de archivo no identifican al contenido del archivo, y tampoco lo hacen bajo otros sistemas operativos si es por eso. No obstante, las así llamadas “<span class="quote">extensiones del archivo</span>” siempre son muy convenientes. El caracter del punto (<tt class="literal">.</tt>) bajo <span class="application">UNIX</span> es simplemente un caracter entre otros. Vale la pena mencionar que bajo <span class="application">UNIX</span> los nombres de archivo que comienzan con un punto son “<span class="quote">archivos ocultos</span>”.</p></li></ul></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left"><a name="unix-basics-pa45a"></a>Nota</th></tr><tr><td colspan="2" align="left" valign="top"><p><a name="BId-unix-basics-pa46"></a>No obstante, vale la pena notar que muchas aplicaciones gráficas (administradores de archivos, aplicaciones de oficina, etc.) en realidad utilizan las extensiones de archivo para reconocer a los archivos. Por lo tanto, es buena idea usar extensiones en los nombres de archivos para dichas aplicaciones que las soportan.</p></td></tr></table></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s01.html">Anterior</a> </td><td width="20%" align="center"><a accesskey="u" href="unix-basics.html">Subir</a></td><td width="40%" align="right"> <a accesskey="n" href="basics-process.html">Siguiente</a></td></tr><tr><td width="40%" align="left" valign="top">Usuarios y grupos </td><td width="20%" align="center"><a accesskey="h" href="index.html">Inicio</a></td><td width="40%" align="right" valign="top"> Los procesos</td></tr></table></div></body></html>