TEMA 7. Trabajar con la Shell |
7.3 Derechos de usuario. Linux fue concebido desde un principio como un sistema multiusuario, es decir, para ser usado por varios usuarios al mismo tiempo. Esta es una de las grandes diferencias con el sistema operativo Windows de Microsoft. La característica más importante es la obligación de registrarse en el sistema al inicio de cada sesión de trabajo. Para ello el usuario dispone de un nombre de usuario propio con su contraseña correspondiente. Esta diferenciación entre usuarios impide que personas no autorizadas puedan acceder a archivos que les han sido vetados. Un usuario, por lo general, no puede (o sólo de forma muy limitada) hacer grandes cambios en el sistema como, por ejemplo, la instalación de programas. Tan sólo el superusuario, o administrador, root dispone prácticamente de derechos ilimitados y posee acceso sin restricciones a todos los archivos. Quien utilice este concepto con cautela y sólo se registre como el todopoderoso root cuando sea realmente necesario, puede reducir en gran medida el riesgo de perder datos de forma involuntaria. La amenaza de caballos de Troya o de comandos destructivos introducidos sin querer se reducen de forma significativa dado que normalmente sólo el superusuario puede borrar archivos del sistema o formatear discos duros. Derechos en el sistema de archivos Fundamentalmente, en el sistema de archivos Linux, cada archivo pertenece a un usuario y a un grupo. Cada uno de estos dos tipos de propietarios, así como también los extraños, pueden obtener derechos de escritura, de lectura así como de ejecución por parte del propietario del archivo. Se denomina grupo a un conjunto de usuarios con un tipo concreto de derechos colectivos: Un ejemplo podría ser un grupo que trabajase en un proyecto concreto al que podríamos llamar proyecto3. En Linux, todos los usuarios son miembros de al menos una de estas unidades de administración. El grupo por defecto es users. Pueden crearse casi tantos grupos adicionales como se desee, si bien, esta función está reservada para root. Todos los usuarios pueden averiguar de qué grupo son miembros con ayuda del comando groups. Derechos sobre archivos A continuación observaremos más de cerca la estructura de los derechos en el sistema de archivos. El resultado de ejecutar ls -l podría ser lo que se ve en la salida de pantalla del ejemplo siguiente: Ejemplo: Muestra de los derechos de acceso a un archivo -rw-r----- 1 Javier proyecto3 14197 Jun 21 15:03 Roadmap Tal y como se puede observar en la tercera y cuarta columna, este archivo pertenece al usuario Javier, y al grupo proyecto3. Para poder ver detalladamente los derechos sobre el archivo, hay que mirar con atención la primera columna. - rw- r-- --- Tipo Derechos de usuario Derechos de grupo Derechos de otros usuarios Esta columna consta de un carácter inicial y de otros nueve caracteres divididos en grupos de tres. La primera de las diez letras representa el tipo de archivo. El guión - nos indica que en este caso se trata de un archivo. Podría tratarse también de un directorio (d), un enlace (l), un dispositivo de bloques (b) o un dispositivo de caracteres (c). Los tres bloques siguientes siguen un esquema común: El primer carácter de cada uno de los tres grupos indica si los diferentes grupos de usuarios tienen derecho de lectura sobre este archivo (r) o si no lo tienen (-). Los dos signos siguientes funcionan de manera similar: el carácter (w) situado en el medio simboliza el derecho a escribir en el objeto en cuestión; esto no sería posible si aparece un guión (-). Por otra parte, en la columna de la derecha de cada grupo puede aparecer el carácter (x) que indica el permiso de ejecución. Dado que en este caso se trata de un archivo de texto y no de un programa ejecutable, se puede prescindir perfectamente de este permiso de ejecución. En este ejemplo Javier, como dueño del archivo Roadmap, tiene tanto el permiso de lectura (r) como el de escritura (w), pero no puede ejecutarlo (no hay x). Los miembros del grupo proyecto3 sólo tienen permiso de lectura sobre el archivo, pero no de escritura ni de ejecución. El resto de usuarios no tienen ningún tipo de permiso sobre este archivo. Se puede seguir concediendo más permisos mediante las llamadas ACLs Access Control Lists. Permisos sobre directorios Ahora nos dedicaremos a los permisos de acceso sobre los directorios, representados por el carácter d. Los permisos tienen aquí un significado algo diferente. Sirva de aclaración el siguiente ejemplo: Ejemplo: Ejemplo de derechos de acceso a un directorio drwxrwxr-x 1 Javier proyecto3 35 Jun 21 15:15 Datosproyecto En la salida de pantalla es fácil reconocer que el propietario de (Datosproyecto) es (Javier) y que el grupo de propietarios es (proyecto3). A diferencia de los permisos de archivos de Derechos sobre archivos, el derecho de lectura (r) indica aquí que se puede ver el contenido del directorio. El permiso de escritura (w) hace referencia a la posibilidad de añadir nuevos archivos en este directorio y el derecho de ejecución (x) autoriza a cambiar a este directorio. En relación al ejemplo anterior, esto significa que tanto el usuario Javier como los miembros del grupo proyecto3 tienen derecho a cambiar al directorio Datosproyecto (x), ver su contenido (r), y añadir archivos (w). Los demás usuarios tienen menos derechos: sólo pueden acceder a él (x) y echar un vistazo (r), pero no pueden añadir ningún archivo (falta w). Modificar los permisos sobre archivos Cambiar derechos de acceso Los permisos de acceso de un archivo o de un directorio pueden ser modificados por el propietario (y por supuesto también por root) mediante el comando chmod, que se introduce junto con los parámetros de permisos de acceso que se desean cambiar y con el nombre del archivo a modificar. Los dos parámetros están formados por: 1. las categorías afectadas · u user - el propietario del archivo · g group - el grupo al que pertenece el propietario del archivo · others - otros usuarios (si no se introduce ningún parámetro, los cambios afectarán a todas las categorías) 2. un carácter para retirar permisos (-), dejar igual (=) o añadir (+) 3. las abreviaturas ya conocidas para n r read - lectura n w write - escritura n x execute - ejecución 4. así como el nombre del archivo (o archivos) correspondiente escrito a continuación y separado por un espacio en blanco. Si por ejemplo, el usuario Javier, del ejemplo anterior, desea otorgar el permiso de escritura (w) sobre el directorio Datosproyecto a otros usuarios, lo puede llevar a cabo usando el comando: chmod o+w Datosproyecto. Sin embargo, para quitar el derecho de escritura a todos los usuarios aparte de sí mismo, utilice el comando chmod go-w Datosproyecto. Para prohibir a todos los usuarios crear un archivo en el directorio Datosproyecto introduzca chmod -w Datosproyecto. Ahora ni siquiera el propietario del archivo tiene derecho de modificar su archivo antes de que restablezca el derecho de escritura. Cambiar los derechos de propiedad Otros comandos importantes al respecto son chown (Change Owner) y chgrp (Change Group), que gestionan las relaciones de propiedad de los elementos del sistema de archivos. El comando chown permite cambiar el propietario de un archivo. No obstante, esta modificación sólo puede ser realizada por root. Supongamos que el archivo Roadmap del ejemplo anterior ya no debe pertenecer a tux, sino al usuario geeko. El comando que root debe utilizar para esta modificación es: chown geeko Roadmap. De forma análoga, el comando chgrp permite cambiar el grupo de propietarios. Hay que tener en cuenta que el propietario del archivo debe pertenecer al grupo al que desea otorgar la categoría de grupo de propietarios. Así por ejemplo, mediante el siguiente comando, el usuario tux del ejemplo puede cambiar el grupo de propietarios del archivo Datosproyecto a proyecto4 utilizando el comando chgrp proyecto4 Datosproyecto, siempre y cuando él sea miembro de este grupo. Para root no existe esta restricción. El Setuid-Bit Hay situaciones en las que los derechos de acceso son demasiado restrictivos. En estos casos, existen en Linux opciones adicionales que permiten cambiar temporalmente el usuario y grupo de identidad actual para realizar una determinada acción. Por ejemplo, el programa cdrecord, empleado para escribir CDs (o DVDs) requiere derechos de root para acceder al grabador. Por tanto, un usuario normal no puede grabar CDs. Sin embargo, sería peligroso que todos los usuarios tuvieran acceso directo a todos los dispositivos. La solución se encuentra en el mecanismo Setuid. Setuid (Set User ID) es un atributo especial de archivo que el sistema regula, con el fin de que se ejecuten los programas seleccionados con una determinada identificación de usuario previamente indicada. Veamos el comando cdrecord: -rwxr-x--- 1 root root 281356 2002-10-08 21:30 /usr/bin/cdrecord Asignamos el Setuid Bit con el comando chmod u+s /usr/bin/cdrecord. Mediante chgrp users /usr/bin/cdrecord el programa cdrecord se asigna al grupo users. Los derechos de acceso que tenemos: -rws--x--- 1 root users 281356 2002-10-08 21:30 /usr/bin/cdrecord Con Setuid-Bit, todos los usuarios que pertenezcan al grupo users pueden utilizar el programa. En la práctica ésto significa que el programa se puede ejecutar como usuario root. Hay que tener en cuenta que cada vez que otorga a un programa el Setuid-Bit, existe una nueva posibilidad de acceder malintencionadamente al computador, por ello debemos realizar este proceso sólo en casos excepcionales, cuando conozca el programa con toda exactitud y pueda calcular los riesgos que corre. El Setgid-Bit El atributo Setuid es válido para el usuario, pero el atributo Setgid tiene las mismas propiedades para el grupo. En este caso, se ejecutará un programa con la identificación de grupo que se indicó, independientemente del usuario que lo arrancó. Por eso todos los archivos y subdirectorios que se crean dentro de este directorio pertenecen al mismo grupo que el directorio: drwxrwxr-- 2 root archive 48 Nov 19 17:12 backup Ahora asignamos el Setgid-Bit mediante el comando chmod g+s /prueba A continuación, los derechos de acceso serán: drwxrwsr-- 2 root archive 48 Nov 19 17:12 backup El Sticky-Bit Además del Setuid-Bit y el Setgid-Bit, existe el denominado Sticky-Bit. Aquí se debe diferenciar si se trata de un programa ejecutable o de un directorio. Hoy en día, este Bit no se utiliza para archivos por lo que solo tiene un significado histórico. Pero si se asigna este atributo a un directorio, éste impide que el usuario borre sus archivos. (En directorios con Sticky-Bit, los usuarios sólo puede eliminar archivos que posean ellos mismos). Los ejemplos típicos son los directorios /tmp y /var/tmp: drwxrwxrwt 2 root root 1160 2002-11-19 17:15 /tmp Access Control Lists Una extensión del concepto tradicional de derechos sobre archivos y directorios es el concepto de las listas de control de acceso ACL Access Control Lists. Mediante estas listas es posible otorgar derechos de acceso a usuarios y grupos, distintos de los usuarios y grupos que son dueños de los objetos. Los directorios y archivos con derechos extendidos se reconocen con un sencillo ls -l por lo siguiente: -rw-r--r--+ 1 tux proyecto3 517 2003-01-08 18:12 Roadmap A primera vista el resultado del comando ls a penas ha cambiado. El dueño del archivo Roadmap es el usuario Javier que forma parte del grupo proyecto3. Javier tiene tanto derechos de lectura como de escritura sobre este archivo; el grupo y el resto del mundo tienen derecho de lectura. El único indicador de un cambio respecto a un archivo sin ACL es el símbolo + en la primera columna, junto a los bits de derechos. Para obtener detalles sobre la ACL del fichero de ejemplo Roadmap, utilice el comando getfacl: # file: Roadmap # owner: Javier # group: proyecto3 user::rw- user:jose:rw- effective: r-- group::r-- group:djungla:rw- effective: r-- mask::r-- other::--- Las primeras tres líneas no dan ninguna información que no se pueda obtener con ls -l, ya que sólo se trata del nombre de archivo, del dueño y del grupo. Las líneas comprendidas entre la 4 y la 9 representan los verdaderos parámetros de la ACL, ACL entries. Los derechos habituales son un subconjunto de los derechos que se pueden definir con la ACL. El ejemplo de ACL otorga derechos de lectura y escritura al dueño del archivo y al usuario jose (líneas 4 y 5). Lo mismo vale para los grupos: El grupo del dueño del archivo tiene derecho de lectura (línea 6) y el grupo djungla tiene derechos de lectura y escritura. El parámetro mask en línea 8 limita los derechos del usuario jose y del grupo djungla a solo lectura. Todos los demás usuarios y grupos no tienen derecho de lectura (línea 9). |
Copyright - © ANFORA, 2004. Todos los derechos reservados. Condiciones Legales.