Portada Blogs Álbumes Notas Herramientas Usuarios Ayuda
Blog de BLei couRT (cambiar): Página Principal Entradas Historial Estadísticas
Bienvenid@ a LoG85. Puedes registrarte o logearte.
Estás viendo la página 7 de BLei couRT, un blog de LaNsHoR. Escrita el 18/05/2009 a las 15:08:35.
Introducción a GNU/Linux: Parte 2
Foto de la página 7 del blog de blei_court
Entrada 1 de 1
Las primeras diferencias radicales que el usuario que viene de Windows se encuentra al llegar a Linux son inherentes al sistema de archivos.

En MSDOS y en Windows 95 se usaba usualmente FAT16 como sistema de archivos, en Windows 98 y ME se usaba FAT32. Los Windows con núcleos NT usaban NTFS, y Windows XP suele usar NTFS, aunque también puede correr sobre FAT32.

Pero antes de seguir, me imagino que los usuarios con pocas nociones se preguntarán qué demonios es un sistema de archivos. Aquí va un explicación rápida y poco rigurosa para que cualquiera pueda entenderlo:

Un sistema de archivos es "una forma" de almacenar la información en los dispositivos físicos (discos duros, cd-roms, disquetes, pen-drives...). Cuando queremos leer un archivo llamado XXX, el sistema de archivos mira en su lista de nombres de archivos para que saber en que parte del disco duro, o de lo que sea, está ese archivo. Los sistemas de archivos controlan la fragmentación (esto es, la división del archivo en varios trozos a la hora de ser almacenado), la compresión transparente, los atributos como la fecha, el tamaño, el nombre, etc. También controlan cosas como los enlaces fuertes y débiles, la jerarquía, la diferencia entre archivo y carpeta, y un montón de cosas más.

¿Qué cosas dependen en la práctica de un sistema de archivos?:

a) Las posibilidades de almacenamiento: La longitud máxima de nombre de archivo, el tamaño máximo de archivo, el número de archivos posibles en una carpeta, el número de archivos posibles en una partición, el tamaño mínimo de archivo (esto es, el tamaño de clúster: si tenemos un tamaño de bloque de 1K y un archivo de 2bytes, ese archivo realmente estará ocupando irremediablemente 1K), etc.

b) La velocidad: Hay sistemas de archivos más rápidos que otros. Algunos son muy buenos trabajando con decenas de miles de archivos pequeños, otros se comportan mejor con archivos grandes, y otros tratan de ser lo mejores posible en cualquier situación. Algunos sacrifican velocidad a costa de ser más seguros frente a fallos inesperados como errores de disco o cortes de luz. Otros usan sofisticadas estructuras de datos para ofrecer accesos rápidos y ser prácticamente inmunes a la fragmentación, esto a costa de necesitar más CPU en cada operación de lectura/escritura, etc.

c) Los atributos de los archivos: Algunos sistemas guardan la fecha de modificación de un archivo, otros la de creación, y otros ambas. Algunos sistemas ofrecen soporte para compresión, cifrado, y sobretodo, sistemas de permisos: de los que hablaremos enseguida.

Linux, a diferencia de Windows, soporta muchísimos sistemas de ficheros diferentes para que podamos elegir el que mejor se adapta a nuestras necesidades. Incluso podemos instalar Linux con un sistema de archivos FAT32, sin embargo esto no es recomendable, porque todos los sistemas de archivos clásicos que suele usar Linux son, en primer lugar, mucho más avanzados (en velocidad, seguridad, uso de journaling, etc) y sobretodo, implementan sistemas de permisos que son el primer punto de partida para la seguridad en Linux.

Algunos sistemas muy populares en Linux:

- EXT4: Es la nueva versión (recién salida del horno) del archiconocido sistema de ficheros EXT3 (el cual venía de EXT2). En el link asociado a la wikipedia podéis leer con detalle no muy técnico todas sus características.

- Reiser 3, y Reiser4: Reiser4 aún no se encuentra muy extendido (los sistemas de archivos son una pieza clave del sistema y deben ser probados exhaustivamente antes de lanzarlos abiertamente al público, no obstante parece haber cierta discordia en su inclusión en el kernel por saltarse ciertas normas de codificación estándar). Reiser4 se a mostrado especialmente potente trabajando con muchísimos miles de ficheros pequeños. Como nota de prensa rosa, su creador, Hans Reiser, fue acusado en 2006 de asesinar a su esposa; acabó siendo declarado culpable en abril de 2008; actualmente cumple una pena de 15 años sin posibilidad de apelación. Muchos se han preguntado como afectará esto al desarrollo futuro de este sistema de ficheros.

- ZFS: Este no es un sistema de archivos típico de Linux. Es un sistema desarrollado por Sun para su sistema operativo Solaris. ZFS a maravillado a muchos usuarios desde su lanzamiento y rápidamente se iniciaron planes para importarlo a Linux, FreeBSD y otros sistemas; incluso Apple a confirmado que su próxima versión server de su sistema operativo "Snow Leopard" correrá sobre ZFS. En cualquier caso su uso aún no está masificado.

Diferencias a primera vista de todos estos sistemas de archivos frente a los de Windows (FAT y NTFS):

- Diferenciación entre mayúsculas y minúsculas: En windows si dentro de una carpeta X creamos el archivo "hola", ya no podremos crear otro archivo llamado "HOLA", porque según NTFS ese archivo ya existe. Cuando nos referimos a un archivo o carpeta en Windows es indiferente escribir en mayúsculas o minúsculas porque todo se considera lo mismo. En cambio, estos sistemas sí detectan la diferencia y podremos tener los archivos "Hola" "hola" "HOLA" "hoLA" etc viviendo en el mismo directorio sin problemas.

- Sistemas de permisos, aquí viene lo importante de hoy, hagamos un sección como se merece.

Sistema de Permisos:

En GNU/Linux hay usuarios y grupos. El concepto de usuario es el típico, una cuenta con la que entrar al equipo con nuestra configuración personalizada (igual que sucede en WindowsXP). Los grupos son algo un poco más abstracto, para entendernos podemos decir que cada usuario tiene un grupo principal (generalmente el grupo "users") y muchos grupos secundarios. Los grupos dan permiso a los usuarios a hacer ciertas cosas. Por ejemplo, si un usuario pertenece al grupo "audio" podrá usar el sonido, si pertence al grupo "games" podrá usar juegos, etc.

En estos sistemas TODOS los archivos y carpetas tienen un dueño y un grupo. El dueño es un usuario (una cuenta del sistema) que, generalmente es el que ha creado el archivo. El grupo es uno de los grupos existentes en el sistema, que define qué cosas pueden hacer los usuarios que pertenecen a ese grupo.

Además, cada archivo puede activar 3 acciones posibles: leer, escribir, y ejecutar. Dependiendo de quien trate de leer, o de escribir, o ejecutar, el sistema de ficheros le dejará llevar a cabo la acción o no.

Todo esto que pace complicado, es muy simple y lo vamos a ver con un ejemplo:

Supongamos que tenemos un archivo llamado "informe.odt". Los datos de informe.odt bien podrían ser los siguientes:

Nombre: informe.odt
Usuario (el dueño): lanshor
Grupo: users
====
¿Puede el dueño escribir (modificarlo)?:
¿Puede el dueño leerlo?:
¿Puede el dueño ejecutarlo?:
===
¿Pueden los usuarios que pertenecen al grupo escribir (modificarlo)?: No
¿Pueden los usuarios que pertenecen al grupo leerlo?:
¿Pueden los usuarios que pertenecen al grupo ejecutarlo?:
===
¿Pueden todos los demás escribir (modificarlo)?: No
¿Pueden todos los demás leerlo?: No
¿Pueden todos los demás ejecutarlo?: No

De esta forma, definimos quién puede hacer qué con cada archivo y carpeta del sistema. Así es muy fácil crear una carpeta en la que por ejemplo, todo el mundo pueda ver el contenido pero nadie modificarlo. O crear una carpeta a la que sólo nosotros tenemos acceso.

El dueño puede cambiar en cualquier momento los permisos a cualquier combinación, e incluso cambiar y hacer que otro sea el dueño, o cambiar el grupo. ¿Cómo vemos en GNU/Linux los permisos de un archivo?: podemos usar el comando "ls -l nombredearchivo" o la interfaz gráfica mirando en sus propiedades.


Hay que entender que todas las cosas tienen un usuario y un grupo. Cuando ejecutamos un programa con el usuario "lanshor", el sistema hará que ese programa tenga permiso para hacer exactamente lo mismo que "lanshor"; si lanshor no puede escribir en una carpeta, el programa tampoco podrá.

Esta es la primera barrera de seguridad importante en el diseño del sistema. Todas las carpetas y archivos críticos del sistema están protegidas para que sólo un usuario especial (llamado "superusuario", cuya cuenta es "root") pueda modificarlas. Si nosotros en nuestra cuenta cometiésemos una imprudencia y nos infectáramos con un virus, ese virus, como programa que es, sólo podría hacer lo mismo que nuestro usuario (que generalmente es acceder a los archivos de su cuenta y nada más). Por tanto, un hipotético virus podría hacer daño en la cuenta de un usuario cuando se ejecutase, pero nunca nunca podrá afectar al sistema ni a las cuentas de otros usuarios: por diseño, y salvo que haya algún bug que le permita al virus hacer una escalada de privilegios, es imposible que ocurra tal cosa.

Otros riesgos:

Aún con todo esto, un usuario inconsciente es el peor fallo de seguridad de un sistema, y contra eso es difícil luchar: pero veamos como GNU/Linux lo intenta.

Hay muchas otras barreras importantes de seguridad fuera de los sistemas de archivos que deberían impedir la adquisición de malware, aunque mientras un usuario pueda ejecutar programas, habrá programas malos (al fin y al cabo, cuando ejecutamos un programa le decimos a la máquina: haz todo lo que te dice ese programa, y si ese programa es malicioso y dice que borre todos nuestros archivos, la máquina no puede distinguirlo).

Por esto, es importante instalar software de confianza y no cualquier aplicación que encontramos por internet. Las distribuciones GNU/Linux consiguen esto creado repositorios. Los repositorios son bases de datos centralizadas y controladas desde las que instalamos todo lo que necesitamos. Cuando queremos un programa, en vez de buscarlo en internet y descargarlo, lo buscamos en una aplicación que vendrá con nuestra distribución y que tendrá decenas o centenas de miles de programas organizados por categorías. Estos programas están probados y es seguro usarlos, de esta forma se evita que un usuario instale cosas que no debe.

Root:

Como hemos dicho antes, "root" es el superusuario que tiene acceso a todo el sistema y puede de hacer de todo independientemente de los permisos de los archivos. Es por ello muy importante NO USAR ROOT NUNCA excepto para tareas eventuales como cambiar la configuración base del sistema. Si usamos root cualquier programa que se ejecute podrá tener acceso a todo el sistema y hacer lo que quiera con él, infectando el arranque y las cuentas de todos los usuarios y burlando cualquier otra medida de seguridad que hubiera. Esto es básicamente lo que ocurre en Windows, donde podemos escribir y modificar cualquier archivo que nos dé la gana (lo de "convertir esta carpeta en privada") es una restricción por software que es una mera gilipollez a nivel de interfaz y que es facilísimo saltársela, no es un bloqueo de acceso real.

Hay muchas tareas que requieren ser root para realizarlas, tales como por ejemplo: instalar programas nuevos. La solución para no entrar y salir como root continuamente, y para tener un permiso temporal sólo sobre esa tarea concreta, es usar el comando sudo. Cuando escribimos "sudo XXXX" ejecutamos el comando XXXX como si fuéramos root. El sistema nos pedirá nuestra contraseña para comprobar que no es un programa automático el que trata de hacer eso, y si es correcta ejecutará el comando. Desde la interfaz gráfica, al instalar programas por ejemplo, veremos una ventanita que nos pide la contraseña y nos dice que es necesaria para continuar. Esto es lo que Windows Vista trató de imitar patéticamente con su sistema de mensajes al estilo "va usted a mover el ratón, ¿seguro que quiere continuar?": un sistema inútil por otra parte, pues como ya hemos dicho: no había un sistema de permisos a nivel de sistema de ficheros, y por lo tanto ese sistema, además de ser un coñazo, era fácilmente violable. 
Archivado en: Spanish, System.
0 Posts¡Deja un comentario!
-- -- -- -- -- Cargando...

Anónimo

Páginas
Vista Previa de la página 10 del blog de blei_courtPágina 10
Vista Previa de la página 9 del blog de blei_courtPágina 9
Vista Previa de la página 8 del blog de blei_courtPágina 8
Vista Previa de la página 7 del blog de blei_courtPágina 7
Vista Previa de la página 6 del blog de blei_courtPágina 6
Puntuación
WARNING!!!
Sorry for my poor English

llorandollorandollorandollorandollorando
Estadísticas
5668 Días
2075 Visitas
0 Posts
Postea una de
cada 0 visitas
Licencia

"Nunca el consejo del pobre, por bueno que sea, es admitido." Miguel de Cervantes