Registrarse
Home
Foros
Miembros
Calendario
Normas
Ayuda

Foros de usuarios de openSUSE
Retroceder   ForoSUSE > Zona Técnica > FAQs, Manuales y Tutoriales


Síguenos en Twitter Suscríbete a nuestras noticias Acompáñanos en Facebook

Respuesta
 
Herramientas Desplegado

Gestión simple de permisos (y II)
  #1  
Antiguo 07-ene-2008, 01:00
Avatar de karlggest
karlggest karlggest está desconectado
Moderador
 
Fecha de Ingreso: 07-febrero-2007
Ubicación: Ourense
Versión: Leap 42.3
Mensajes: 8.175
Agradecimientos: 40
Agradecido 1.238 Veces en 910 Mensajes
Poder de Credibilidad: 19
karlggest está en el buen camino
Gestión simple de permisos (y II)

Por limitaciones con el tamaño del FAQ, dividí el documento en dos partes (Ver registro). Aquí se incluye la sección 3.

Las secciones 0, 1 y 2 se encuentran en Gestión simple de permisos (I)

3. Permisos en particiones completas

Esta sección es un poco más compleja que las anteriores. El usuario con poca experiencia en el uso de sistemas (GNU/Linux u otros) deberá abordarlo con paciencia, procurando documentarse bien antes de causar algún daño al sistema.

A ese respecto, el usuario deberá saber algo de gestionar particiones (crear, redimensionar, etc.) y conocer las rutinas de montaje típicas para particiones ext3, reiserfs, xfs, etc.

3.1 Sistemas de Ficheros en GNU/Linux

Abordaremos antes una serie de tópicos que nos clarificarán luego varias cuestiones.

En primer lugar, el sistema de ficheros de GNU/Linux podría decirse que es el "VFS" (Virtual File System, "sistema de archivos virtual"). Este actúa como una "capa" por encima de los sistemas de ficheros propiamente dichos de cada partición. Así, cada partición puede tener diferentes sistemas (ext2, ext3, reiserfs, xfs, vfat, ntfs...) y el sistema los gestionará de forma análoga.

El sistema de ficheros de GNU/Linux es completamente jerárquico. Existe una raíz (un nivel superior) representado por la barra invertida: /, del que pende todo el sistema. En rigor, el sistema de archivos en GNU/Linux es un sistema raíz del que se pueden "colgar" otros sistemas de ficheros, de los cuales a su vez pueden "pender" otros sistemas de ficheros, y así sucesivamente. Nótese que no hablamos del "tipo" de sistema. Por supuesto, el sistema raíz tiene que ser de un tipo nativo de GNU/Linux (ext3, por ejemplo).
Podemos decir, de forma grosera, que un sistema de ficheros es una colección de subdiretorios, y de él pueden depender otros archivos, directorios o incluso otros sistemas de ficheros.

Así, la raíz es un sistema de ficheros que incluye las carpetas /boot, /dev, /etc, /lib, /bin, /sbin, /proc, /root, /home, /mnt, /usr, /var y /tmp. Carpetas adicionales pueden ser /lib64, /media, /opt etc.
/boot es un sistema de ficheros que incluye los archivos necesarios para arrancar un sistema GNU/Linux.
/dev modernamente es un sistema de ficheros para montar dispositivos.
/usr es un sistema de ficheros que contiene las aplicaciones de los usuarios. Dentro de /usr hay otro sistema de ficheros, /usr/local, que se corresponde con las aplicaciones locales del sistema (aunque las distribuciones no suelen hacer esta distinción).
/var es otro sistema de ficheros que contiene los parámetros variables de las aplicaciones de /usr y los demonios y módulos del sistema. En realidad, /usr y /var son dos aspectos del mismo sistema de ficheros a los que prestaremos especial atención.
/mnt es un punto para montar dispositivos, tales como CD/DVD, cintas, otros sistemas de archivos de otros sistemas, tales que FAT o NTFS, todo ello externo al sistema actual. Corrientemente, en lugar de esta carpeta es común tener directorios en la raíz para cada sistema de archivos a montar. Los dispositivos pueden montarse en /media con las nuevas capacidades de automontaje proveídas por los escritorios.
/media es un sistema de ficheros donde montar dispositivos que permitan automontaje.
/home es un sistema de ficheros que contiene los datos y las configuraciones de los usuarios.
/proc, igual que /dev, es un sistema de ficheros virtual, que contiene los elementos de la memoria principal del ordenador.
/tmp es un sistema de ficheros que contiene los archivos temporales del sistema general.

Montar es la operación para hacer accesible un sistema de ficheros. En rigor, normalmente hacemos referencia a "montar" a los casos de tipos de sistemas de ficheros distintos u otros dispositivos, con el comando mount, generalmente, o con las ya mencionadas capacidades de "automontaje". Nos centraremos en el montaje de dispositivos, concretamente en el caso de diversas particiones.

3.2 Montaje de dispositivos

El comando mount nos permite montar sistemas de ficheros alojados en dispositivos distintos al que albergue la raíz del sistema (/). Así,
Código:
mount -t iso9660 /dev/sr0 /mnt/cdrom
podría ser un comando para montar un sistema de archivos iso9660 (estándar para CD/DVD) en la carpeta /mnt/cdrom. Al acceder a ésta, podríamos navegar por el contenido del CD de forma análoga al resto del sistema.

Las diversas particiones que hagamos de un disco duro, sean principales o lógicas, también se montan. Digamos que cada partición es tratada como si fuese un dispositivo independiente. Un sistema GNU/Linux deberá contener al menos dos particiones(1): la partición raíz (/) y la partición swap (partición especial para el intercambio de memoria). Comúnmente, el administrador separará una tercera partición para los archivos de usuario (/home). En la mayor parte de los casos, éstas serán 3 particiones lógicas (dejando así 3 particiones primarias sin usar, para hipotéticas instalaciones de otros sistemas). Usando la nomenclatura del núcleo >= 2.6.19, podría ser algo así:

Dispositivo | tipo de partición | tipo de fs | pto. de montaje
/dev/sda1 -> partición extendida que contiene a todas las lógicas. Sólo puede haber una.
/dev/sda5 -> partición lógica -> reiserfs -> /
/dev/sda6 -> partición lógica -> swap
/dev/sda7 -> partición lógica -> xfs -> /home

El arranque de GNU/Linux toma de /etc/fstab los datos para montar estas particiones (y /dev con udev y /proc). Así por ejemplo, la raíz que se montaría con
Código:
mount -t reiserfs /dev/sda5 /
tomaría los datos de la entrada de fstab correspondiente:
Cita:
/dev/sda5 / reiserfs acl,user_xattr 1 1
(2)
Así, la primera columna le indica al sistema el dispositivo a montar, la segunda el punto de montaje, y la tercera son las opciones. Nótese que las opciones no llevan espacios entre una y otra.

En el inicio del sistema, es buena idea pasarle al núcleo(3) un parámetro indicándole cuál será la partición raíz.
Código:
root=/dev/sda5
3.3 Introducción al manejo de particiones: ejercicio práctico

Yo tengo algo de espacio libre (sin particionar) en el disco, tanto para particiones primarias como también dentro de la partición extendida donde tengo openSUSE 10.3. Aprovecharé este último para crear una partición e ilustrar un par de cosas que podríais probar para familiarizarnos con las cuestiones que trataremos a continuación.

Para crear una partición, necesitamos un programa adecuado. YAST incluye una aplicación para manejar particiones, que, si bien no es ninguna maravilla, cumple bastante bien su cometido: YAST->Sistema->Particionador (aquí hace una apocalíptica advertencia, contestad que sí).

El particionador no muestra el espacio sin asignar. Podemos sumar el de nuestras particiones para ver si queda algo libre, comprobar que todo el disco está asignado (viendo que desde el primer "bloque" al último está asignado), o simplemente tratar de crear una partición a ver qué nos dice. En los botones de abajo, "Crear"...

Como ya he dicho, yo tengo espacio, así que simplemente asigno un tamaño de 1 GB (en
tamaño, donde pone último, pongo +1GB para que cree una partición de 1GB, siguiendo la escueta nota aclaratoria que pone allí). YAST ya prepara la partición para ser formateada.

Aquellos que no tengais espacio sin particionar (la mayoría), teneis la opción "redimensionar". Tened presente que cualquier modificación en la tabla de particiones es una operación delicada. Imaginaos que os falla el suministro eléctrico, justo cuando se está haciendo el cambio!! Bien, hay que pensarse siempre dos, tres o cuatro veces lo que se hace!!

Bueno, los que os atrevais aún así, redimensionad una partición, no necesitaremos mucho, unos "megas" es suficiente ... 1GB es una buena cifra, redonda y sencilla. En el espacio libre que aparece ahora, cread una partición. Fijaos en el número, en el nombre (en la columna que pone "dispositivo"). Apuntadlo si quereis. En mi sistema, es /dev/sda14.

Tanto si creais una nueva partición, como si redimensionais y luego creais una nueva, presionad "Aplicar". Os aparecerá un mensaje donde se os indicará qué se va a hacer. Aseguraos de que coincide con lo que hemos dicho, y aceptad. Ya teneis una partición nueva. Presionad en "Salir", y ya está. No es necesario reiniciar ni hacer nada raro.

Una de las opciones que teníamos era asignar un punto de montaje, en la misma ventana de "Crear". Podríamos poner allí un directorio (por ejemplo, /mnt/partición_prueba), y YAST incluiría los datos necesarios en su fichero /etc/fstab, y así el sistema montaría la partición al inicio y todo eso ... Nosotros creamos la partición para hacer pruebas, así que eso no nos interesa en este caso.

Normalmente, mount trata de "adivinar" el tipo de partición a montar, así que muchas veces podemos obviar el tipo en el comando. Crearé un directorio para las pruebas (por ejemplo, /mnt/pruebas y montaré mi nueva partición en él:
Código:
karl@KARL-PC:~> sudo mkdir /mnt/pruebas
Contraseña:
karl@KARL-PC:~> sudo mount /dev/sda14 /mnt/pruebas
karl@KARL-PC:~>
df es un comando que muestra el espacio libre (Disk Free) por particiones montadas. Ésta es la información que ofrece sobre la nueva partición:
Código:
df
S.ficheros         Bloques de 1K   Usado    Dispon Uso% Montado en
/dev/sda14             1052184     32840   1019344   4% /mnt/pruebas
karl@KARL-PC:~>
Ya estamos en condiciones de comenzar a jugar. En primer lugar, comprobad los permisos de /mnt/prueba:

Código:
ls -l /mnt
total 1
drwxr-xr-x  4 root root  80 ene  5 15:26 pruebas
karl@KARL-PC:~>
Aquí observamos que el propietario de el directorio pruebas es el administrador (root), y que los permisos de escritura sólo están para root, mientras que los demás usuarios sólo tienen permiso de lectura y acceso (máscara 0022, ¿recordais?)

Código:
 cd /mnt/pruebas
karl@KARL-PC:/mnt/pruebas> ls
karl@KARL-PC:/mnt/pruebas> touch hola.txt
touch: no se puede efectuar `touch' sobre «hola.txt»: Permiso denegado
karl@KARL-PC:/mnt/pruebas>
Hay varias formas de hacer accesible la nueva partición. Consideremos algunas:

1. Asignar permiso de escritura a todos los usuarios. Eso tiene el notable inconveniente de que cualquiera podría escribir en ella, incluso de borrar todos los datos!! No parece una buena idea.
2. Cambiar el propietario de la partición. Esta opción funciona bien en nuestro ejercicio. Pero recuérdese que simplemente estaremos cambiando de root a nuestro usuario. Las limitaciones para los demás usuarios permanecerían, a menos que extendiésemos los mismos permisos al grupo de usuarios.
3. La menos perfecta, pero que está bien saber que existe: podemos crear un grupo mixto con el propietario de la partición (en este caso, el administrador) con nuestro usuario y asignar ese grupo como "grupo al que pertenece el directorio".
Código:
 cd ..
karl@KARL-PC:/mnt> sudo chown karl pruebas/
Contraseña:
karl@KARL-PC:/mnt> sudo chgrp users pruebas/
karl@KARL-PC:/mnt>
Ahora ya podemos usar la nueva partición:
karl@KARL-PC:/mnt> cd pruebas
karl@KARL-PC:/mnt/pruebas> touch hola.txt
karl@KARL-PC:/mnt/pruebas> ls
hola.txt
karl@KARL-PC:/mnt/pruebas>

3.4 Permisos en particiones

Cada partición tiene varias propiedades. En particular, nos interesa una: los permisos. Si consultamos las particiones montadas (en el archivo /etc/mtab), nos ofrecerá una lista de las particiones y dispositivos montados, con el siguiente formato: la primera columna, el dispositivo/partición; la segunda, el punto de montaje; la tercera, el tipo de archivo; la cuarta, los permisos.
Código:
karl@KARL-PC:~> cat /etc/mtab
/dev/sda5 / reiserfs rw,acl,user_xattr 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
debugfs /sys/kernel/debug debugfs rw 0 0
udev /dev tmpfs rw 0 0
devpts /dev/pts devpts rw,mode=0620,gid=5 0 0
/dev/sda7 /home xfs rw 0 0
/dev/sda9 /opt ext3 rw,acl,user_xattr 0 0
/dev/sda11 /tmp ext3 rw,acl,user_xattr 0 0
/dev/sda8 /usr ext3 rw,acl,user_xattr 0 0
/dev/sda10 /var ext3 rw,acl,user_xattr 0 0
fusectl /sys/fs/fuse/connections fusectl rw 0 0
securityfs /sys/kernel/security securityfs rw 0 0
/dev/sda14 /mnt/pruebas reiserfs rw 0 0
karl@KARL-PC:~>
r significa read; rw significa lectura y escritura (read-write), y ro lectura sólo (read-only). Podemos ver que todas las particiones están montadas en modo "lectura-escritura". Esto significa que se pueden crear archivos, modificarlos, borrarlos ... Son los permisos de cada sistema de ficheros (de cada conjunto de subdirectorios) en particular los que establecen quien y en qué condiciones.

Esto puede ser necesario o no. Pero no es óptimo. En un sistema de producción, pocas veces se hacen cambios. Y los que se hacen, se hacen bajo estricta supervisión del administrador. Sigamos "jugando" con la partición 14 /dev/sda14 (es importante que las opciones no lleven espacios, así remount va seguido de una coma, como separador, e inmediatamente el tipo de permiso):
Código:
 sudo mount /mnt/pruebas/ -o remount,ro
Contraseña:
karl@KARL-PC:~> cat /etc/mtab
(...)
/dev/sda14 /mnt/pruebas reiserfs ro 0 0
karl@KARL-PC:~>
(Eliminamos el resto de entradas de mtab por claridad)
Ahora /mnt/pruebas está montada como "sólo lectura".
Código:
karl@KARL-PC:~> sudo touch /mnt/pruebas/hola_mundo.txt
touch: no se puede efectuar `touch' sobre «/mnt/pruebas/hola_mundo.txt»: Sistema de ficheros de sólo lectura
karl@KARL-PC:~>
Vemos que ni siquiera root puede crear un archivo en esta partición.
Código:
karl@KARL-PC:~> ls /mnt/pruebas/
hola.txt
karl@KARL-PC:~> sudo rm -rf /mnt/pruebas/hola.txt
rm: no se puede borrar «/mnt/pruebas/hola.txt»: Sistema de ficheros de sólo lectura
karl@KARL-PC:~> sudo rm -rf /mnt/pruebas
rm: no se puede borrar «/mnt/pruebas/hola.txt»: Sistema de ficheros de sólo lectura
karl@KARL-PC:~>
Ni borrar, nada!!

Podemos utilizar esta propiedad en el fstab, en la columna de opciones:
Código:
karl@KARL-PC:~> cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/sda14 /mnt/pruebas reiserfs ro 1 2
karl@KARL-PC:~>
(de nuevo, eliminamos el resto de entradas por claridad). Podemos también hacer uso de las opciones "noauto" (en el fstab) y "remount" (en línea de comando). Por ejemplo, si hemos de modificar algún archivo de /etc/pruebas:
Código:
karl@KARL-PC:~> sudo mount /mnt/pruebas/ -o remount,rw
karl@KARL-PC:~>
Y ya podemos efectuar modificaciones.

Al tener separadas los distintos sistemas de ficheros en particiones distintas, puedo asignarles permisos distintos a cada una en función de mis necesidades. / (la raíz), /usr y /opt sólo cambian cuando el administrador modifica algo o instala/elimina software. Así que pueden tener permisos de "sólo lectura"; /var, /home y /tmp son particiones que deben de permitir ser modificadas (así como /proc, por ejemplo), así que al estar separadas pueden conservar su permiso de "lectura-escritura".

Para automatizar con el /etc/fstab el montaje en modo "sólo lectura" de /, /usr, y /opt sólo hay que cambiar las opciones que salen en el archivo por rw (probad a añadir rw al final de la columna de opciones, así: acl,user_xattr,ro (en teoría, las ejecuta en orden, así que debería aceptar cualquier combinación, como "defaults,ro". Puede que algunas opciones sean incompatibles, de todas formas). En el peor de los casos, es cuestión de probar en línea de comandos (y antes, echar un vistazo al manual de mount (man mount)).

Así, el administrador sólo puede provocar cambios en el sistema después de montar el sistema de ficheros deliberadamente. Ningún rm -rf o chmod -Rf afectarán al sistema base (causarán daños molestos en otros lugares, pero nada que no se pueda resolver con relativa sencillez). Podría desarrollar scripts para instalar o eliminar software, por ejemplo, siguiendo la siguiente estructura:
Cita:
Cerrar todos los puertos en el cortafuegos (modo paranoico)
remontar particiones como lectura/escritura
ejecutar software instalador
remontar las particiones como sólo lectura
restaurar configuración del cortafuegos
Ejecutar software instalador puede ser zypper, por ejemplo, YAST, SMART, etc.
Con un puñado de scripts en esta línea, nuestro administrador dispone de un poquito más de seguridad. Esto es seguridad activa, para prevención sobre todo de errores propios.

Feliz Computación!!
----------------------------------------------------
Registro:
5ª edición: 15:49 h. del 05/01/2008. Publicado el 07/01/2008 a las 00:46 h.
*sección 3.3 Introducción al manejo de particiones: ejercicio práctico (1ª parte)
*división en dos archivos: secciones 0, 1 y 2 en Gestión simple de permisos (I) y sección 3 en Gestión simple de permisos (y II)
6ª edición: 2:44 h. del 10/01/2008.
*sección 3.4 Permisos de Particiones
----------------------------------------------------
(1) En rigor, el área de intercambio no tiene por qué ser una partición, pudiendo ser un archivo.
(2) Obviaremos, por simplicidad, las nuevas convenciones en el nombrado de dispositivos. Sólo tomaremos nota del hecho de que el nuevo núcleo trata como SCSI tanto a los dispositivos SCSI como a los IDE.
(3) Núcleo (en inglés, kernel) es la parte principal del Sistema Operativo, conocida como "anillo cero", aquella que se encarga de gestionar los dispositivos físicos que conforman el sistema propiamente dicho (en jerga, "a bajo nivel", es decir, directamente con los dispositivos, pudiendo ser necesario que alguna función deba de estar escrita en código ensamblador). Los módulos suelen considerarse de forma casi que externa, pero forman parte de él (de hecho, pueden compilarse "dentro" del núcleo).
__________________
http://sementedotempo.blogspot.com/

-Si lo creen unos pocos, es un delirio; si son muchos los creyentes, es una religión

Última edición por karlggest; 10-ene-2008 a las 02:45
Responder Citando
El Siguiente Usuario Ha Dado las Gracias a karlggest Por Este Mensaje:
RaulEstela (21-may-2012)
Respuesta

Marcadores


(0 miembros y 1 visitantes)
 
Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado

Ir al Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Gestión simple de permisos (I) karlggest FAQs, Manuales y Tutoriales 4 05-ene-2008 15:03
Problema con los permisos de /dev/null Salustian Software 0 13-nov-2007 16:32
Permisos para las NTFS weedom Instalación y Actualizaciones 6 26-oct-2006 21:46
Permisos de carpeta webmaster_asg Internet, Redes y Wireless 2 15-sep-2006 08:22
Permisos de escritura kernel merovingio Software 5 19-jun-2006 23:22



Síguenos en Twitter Suscríbete a nuestras noticias Acompáñanos en Facebook


La franja horaria es GMT +2. Ahora son las 06:50.
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.

Esta página está bajo una licencia de Creative Commons, salvo que no se indique lo contrario.
Creative Commons License

Valid CSS!

Diseño por:Designed by: vbdesigns.devbdesigns.de 
Contáctenos - ForoSUSE - Archivo - Declaración de Privacidad - Arriba