educación, informática y demás

Casos prácticos, Sistemas Operativos en Red

Permisos, propietario y grupo. Trabajando en octal

Habrá veces en las que tengamos que configurar los permisos de acceso a un determinado fichero o directorio utilizando el modo de expresión de permisos en octal. Ya hemos trabajado con estos permisos en casos prácticos anteriores, no obstante en este conjunto de ejercicios vamos a tratar de practicar con la configuración de permisos, propietario y grupo tal que nos permitan realizar una serie de acciones futuras sobre un fichero o directorio.

Este tipo de situaciones nos las podemos encontrar cuando administremos recursos compartidos bien en local, como por ejemplo un directorio dentro del sistema de ficheros local, bien en remoto, como utilizando servicios SMB/CIFS, FTP, HTTP, HTTPS, etc.

En estos casos, tendremos que preparar el sistema para permitir realizar ciertas operaciones configurando permisos, propietario y grupo de un fichero o directorio, pero además puede que tengamos que configurar, por ejemplo en Servicios SMB/CIFS como samba o FTP como vsftpd, máscaras de permisos de creación de ficheros y/o directorios.

Ejercicio 01 – Solo permisos

Determina la máscara de permisos en octal que configure los siguientes permisos:

  1. Propietario podrá leer, grupo leer y resto nada.
  2. Marinapg podrá leer y escribir, el grupo administradores podrá leer y el resto podrá leer.
  3. alfredoff podrá acceder para realizar cualquier operación en el directorio. Los miembros del grupo profesores podrán acceder pero solo para realizar operaciones de lectura y el resto de usuarios del sistema no podrán realizar ninguna operación.
  4. r-xr-xr–
  5. rw-r-xr–
  6. rwxr–r–
  7. —rwx—
  8. –xr-x–x
  9. rw-r–r–
  10. rw—-r–

Soluciones

  1. Propietario podrá leer, grupo leer y resto nada.
    • No sabemos si es un fichero o un directorio, no nos lo indican. así que podemos tomar varias decisiones: pensar que es un fichero o que es un directorio o ceñirnos a lo que nos piden.
    • Si nos ceñimos a lo que nos piden: r–r—– que en binario sería 100 100 000, si lo pasamos a octal: 440
    • Si pensamos que es un fichero, tendríamos exactamente el mismo resultado: 440
    • Si pensamos que es un directorio, tendríamos que decidir la utilidad del acceso. Seguro que hay algún escenario en el que tenga sentido que los usuarios tan solo puedan leer el directorio pero no acceder, sin embargo lo más normal es que si un usuario puede leer de un directorio tenga que acceder al mismo para poder leer los ficheros que éste contiene. Salvo que nos lo indiquen expresamente, porque sea un ejercicio de trabajo con permisos o sea un caso especial, si a un usuario le damos permiso de lectura sobre un directorio, también tendremos que darle permiso de acceso.
      • Con todo esto los permisos serían: r-x r-x — 101 101 000 550
  2. Marinapg podrá leer y escribir, el grupo administradores podrá leer y el resto podrá leer.
    • Nos ceñimos a lo que nos piden: rw-r–r–
      • Pero… me dicen marinapg y el grupo administradores, ¿de dónde salen los permisos que hemos configurado?. Cuando nos dicen que determinemos permisos para un solo usuario, para un grupo y para el resto, tenemos claro que hay que establecer, si no está establecido, al usuario como propietario y al grupo como grupo del fichero o directorio. Esto aquí lo damos por supuesto. No obstante, no estaría mal expresarlo para que cuando lo llevemos a práctica no se nos olvide realizar esa operación o cerciorarnos de que es así.
      • La solución sería: 110 100 100; es decir: 644
    • Si fuera un directorio, estaríamos en el mismo caso que en el ejercicio anterior: 755
  3. alfredoff podrá acceder para realizar cualquier operación en el directorio. Los miembros del grupo profesores podrán acceder pero solo para realizar operaciones de lectura y el resto de usuarios del sistema no podrán realizar ninguna operación.
    • Al decirnos podrá acceder nos están indicando que se trata de un directorio con mucha probabilidad.
    • Los permisos serían: rwx r-x —, en binario 111 101 000, en octal: 750
  4. r-xr-xr– = 101 101 100 = 554
  5. rw-r-xr– = 110 101 100 = 654
  6. rwxr–r– = 111 100 100 = 744
  7. —rwx— = 000 111 000 = 070
  8. –xr-x–x = 001 101 001 = 151
  9. rw-r–r– = 110 100 100 = 644
  10. rw—-r– = 110 000 100 = 604

Ejercicio 02 – Samba

Configura un recurso compartido en Samba llamado practica01 que comparta el directorio /educatica/2024/sistemas/practica-01 al que tan solo podrán acceder los miembros del grupo profesores y alumnos. Solo podrán realizar operaciones de escritura los miembros del grupo profesores. Debemos asegurarnos que los miembros del grupo expulsados no pueden acceder al recurso compartido.

Por último, cuando un profesor sube un fichero o crea un directorio debemos asegurarnos que cualquier alumno puede acceder para realizar lecturas y que cualquier profesor podrá acceder realizando operaciones de lectura y escritura.

¿Qué tenemos que hacer?

Fase de planificación: a papel

  1. Configura permisos, propietario y grupo del directorio a compartir
  2. Determina que configuración de permisos deberás establecer en samba para que cuando se suban ficheros o se creen directorios se sigan permitiendo las operaciones solicitadas en el enunciado.
  3. Determina la configuración de acceso del recurso compartido en Samba. Es decir, quienes pueden acceder y quienes no y qué operaciones pueden realizar.

Fase de implementación o implantación: en el sistema

Seguimos los pasos de siempre:

  1. Configurar sistema: usuarios, grupos, directorios, permisos, propietario y grupo…
  2. Configurar samba: fichero de configuración de samba. Recurso compartido. Añadir el recurso compartido con los parámetros de configuración necesarios.
  3. Configurar base de datos de usuarios de samba.
  4. Reiniciar servicio si es necesario

Solución propuesta Número 1

El trabajo de filtrado de acceso lo vamos a llevar a cabo en Samba de forma que en local la configuración de acceso será más sencilla.

Configuración de samba

Propuesta: Crear un script que para cada usuario que sea miembro de profesores o de alumnos añada al usuario a la base de datos de samba si no está ya añadido.

Solución propuesta Número 2

En esta aproximación, aparte de los permisos en red establecidos a través de Samba, nos gustaría poder establecer los permisos en local.

Aquí tenemos un problema, vamos a trabajar con dos grupos de usuarios que tendrán permisos distintos: profesores y alumnos. Tendremos que utilizar ACLs

Comandos: setfacl y getfacl.

Cuidado, porque a lo mejor hay que tocar el fichero /etc/fstab.

Solución

Iniciamos sesión en el servidor remoto con ssh.

Veamos los permisos que tiene el directorio en local

Con esos permisos, cualquier usuario podrá acceder para realizar operaciones de lectura. Nosotros queremos que solo los usuarios del grupo alumnos, aparte de los del grupo profesores que tendrán control total, puedan acceder para solo lectura.

Nos quedaría tratar de denegar acceso al grupo de expulsados.

Veamos la configuración que tienen los tres usuarios con los que vamos a practicar:

Ahora vamos a tratar de denegar acceso a expulsados.

Vamos a tratar de acceder con alfredoff al directorio. No deberíamos poder, puesto que no pertenece a ninguno de los grupos con permiso de acceso.

Veamos qué sucede si tratamos de acceder con marinapg. No debería poder, según pensamos nosotros, puesto que aunque pertenece a profesores, al pertenecer a expulsados intuimos que no se le aplicará ningún permiso.

No funciona como esperábamos y es que el acceso que nos da es el más permisivo de los configurados. Deberíamos comprobar si hay alguna forma de denegar permisos en lugar de determinar qué permisos estamos concediendo.

Dejar una respuesta