De seguir las sugerencias presentadas en este capítulo (en cuanto a información mínima por almacenar, estructura de directorios, identificadores y permisos) y de contar con servidor Apache y PHP en el mismo computador donde está la información, será posible que los profesores ingresen valoraciones durante cada periodo con un navegador y una interfaz sencilla.
En el momento de este escrito esta interfaz cuenta con dos mecanismos posibles de autenticación: (1) empleando un archivo propio de usuarios y claves o (2) empleando mecanismos de autenticación del sistema operativo. De resultarle posible sugerimos el que emplee la autenticación del sistema porque le permite conservar el esquema de permisos que sugerimos (ver Sección 3.2, “Permisos”).
Además de los mecanismos mencionados (que asignan una clave a cada profesor) sugerimos emplear autenticación básica de Apache para ingresar al directorio de la interfaz con un usuario y una clave conocida sólo por todos los profesores.
Puede mejorar seguridad en el directorio donde instalará
la interfaz usando archivos .htaccess
(hay uno en el directorio donde instale la interfaz y otro
en el subdirectorio auth
).
Para usarlos debe permitir a Apache sobrecargar algunos parámetros
para el directorio donde instale la interfaz y para el subdirectorio
auth
.
Además sugerimos emplear autenticación básica (con un usuario y
una clave conocida por todos los profesores)
y eventualmente restringir uso por IP.
Para lograr estos propósitos verifique que en el archivo de
configuración de Apache en la
sección que corresponde al directorio en donde estará la
interfaz PHP (digamos /var/www/ssl/sigue
)
diga:
<Directory /var/www/ssl/sigue/> AllowOverride Options AuthConfig Limit </Directory>
y de requerirlo que en la sección donde se carguen módulos se cargue el módulo de autenticación, por ejemplo:
LoadModule auth_module /usr/lib/apache/1.3/mod_auth.so
El archivo .htaccess
que se distribuye
implementa autenticación básica, para esto emplea el archivo de
claves auth/sigue
que se distribuye sólo
con el usuario sigue
con clave
sigue
Aviso | |
---|---|
Si va a emplear autenticación básica para el
directorio donde estará la interfaz PHP, recuerde cambiar
el usuario y la clave periódicamente (con
|
En el archivo de configuración de Apache verifique que
también se emplee index.php
en la
directiva DirectoryIndex
.
Con respecto a PHP se requiere haber instalado soporte para
XML. En php.ini
se sugiere en general
desactivar
register_globals
---aunque esto también lo hará
el archivo .htaccess
que se
instala junto con la interfaz--- y aumentar tiempos máximos de
ejecución y para ingreso de datos por ejemplo:
max_execution_time = 900 max_input_time = 900
Recuerde reiniciar Apache después de modificar el archivo de configuración de este servidor o el de PHP.
Con el script sigue-intcol.sh instale los archivos de la interfaz PHP en un directorio que pueda accederse con un navegador.
Aviso | |
---|---|
Se recomienda que el directorio en el que se instale la interfaz PHP sea servido con SSL y además cuente con autenticación básica. |
Por ejemplo si los datos del colegio están en
/var/nuestra-escuela
, el propietario
y grupo del proceso con el que corre Apache es
www:www
y desea instalar la interfaz en el directorio
/var/www/ssl/sigue
ejecute:
cd /var/www/ssl sigue-intcol.sh sigue "www:www" /var/nuestra-escuela
El script sigue-intcol.sh
creará
el directorio, compilará un programa de
autenticación y de ejecutarse desde la cuenta root, establecerá
permisos seguros[9]. Si su sistema no es soportado se
empleará un archivo de claves propios como método de autenticación,
aunque eventualmente usted mismo podrá ejecutar
otra regla del Makefile para emplear otro método de autenticación
como se explica en las siguientes secciones
(o tal vez un método nuevo, escrito para su caso
particular)[10].
Finalmente edite el archivo auth/confcol.php
y además de verificar la información existente cambie el valor
de la variable PALABRA_SITIO
con una
palabra secreta[11].
Si al emplear uno de los métodos de autenticación que se describen a continuación tiene problemas, revise la bitacora de errores de Apache, pues allí quedan los mensajes de error que producen los programas de autenticación.
Cada profesor debe tener un login (referenciado en el
archivo de datos del profesor) y una clave. Esta información
debe registrarse en un archivo, el cual puede crearse
después de instalar la interfaz PHP (como se explica en
la siguiente sección) con el nombre
auth/usuarios
. Para crearlo y manejarlo
emplee la herramienta htpasswd
distribuida con Apache.
Para que todos los profesores puedan escribir en los archivos estos deben tener permisos que dejen escribir al usuario bajo el cual corra Apache.
Aviso | |
---|---|
Este método de autenticación no es tan seguro, porque requiere debilitar el esquema de permisos de los datos del colegio. De ser posible emplee autenticación del sistema operativo junto con el esquema de permisos que hemos sugerido. |
Puede compilar desde el directorio auth
con
make METODO=claves-propias
recuerde modificar la variable
AUTHPGM
del archivo
auth/confcol.php
para que quede:
$GLOBALS['AUTHPGM']="auth/claves-propias";
En el momento de este escrito sólo se soporta autenticación local con OpenBSD y con archivo de claves Shadow (como en Linux Debian).
El servidor web no debe correr con chroot
para tener acceso a los archivos de claves del sistema
(en el caso de OpenBSD esto se desactiva
con httpd_flags="-u"
en
/etc/rc.conf.local
).
Para que el servidor web pueda leer los datos del colegio
debe agregar el usuario bajo el cual corre el servidor
al grupo profesor
.
Por ejemplo en OpenBSD el archivo
/var/www/conf/httpd.conf
debe modificarse para
que incluya[12]:
User www Group www
Después el usuario bajo el cual corre el servidor se agrega
al grupo profesor
(por ejemplo
editando /etc/group
).
Aviso | |
---|---|
Verifique en los archivos de configuración de Apache, que este no
permitirá ver directorios de lectura exclusiva para el grupo
|
Dado que la autenticación debe hacerse con un programa
con suid root (por ejemplo en el caso de OpenBSD
auth/openbsd-local
), verifique que el
directorio donde quedará la interfaz pueda ejecutar
programas suid root (por ejemplo que entre las opciones
para montarlo en /etc/fstab
no esté
nosuid
).
Puede compilar desde el directorio auth
bien con
make METODO=openbsd-local
o bien con
make METODO=shadow-local
recuerde establecer el que eliga en la variable
AUTHPGM
del archivo
auth/confcol.php
Si el colegio cuenta con un servidor LDAP que incluya información para autenticar puede emplear este mecanismo de autenticación. Puede consultar como configurar uno en http://dhobsd.pasosdejesus.org/?id=Autenticaci%F3n+con+OpenLDAP
Con respecto al servidor web, tenga en cuenta las mismas recomendaciones del caso anterior Sección 6.1.1.3, “Autenticación del sistema operativo”
Copie la plantilla auth/cmdldap.h.plantilla
en auth/cmdldap.h
y modifiquela para
que tenga:
El URI del servidor LDAP.
El DN de la organización.
El DN de las personas de la organización.
Por defecto la autenticación LDAP empleará como filtro
(&(objectclass=posixAccount)(uid=
, pero si este no es un filtro apropiado para
su caso modifiquelo en las fuentes de
login
))cmdldap.c
.
Finalmente compile desde el directorio auth
con:
make METODO=cmdldap
y establezca la variable AUTHPGM
del
archivo auth/confcol.php
para que
quede:
$GLOBALS['AUTHPGM']="auth/cmdldap";
Posiblemente el/la administrador(a) requiere ingresar como
un profesor para verificar funcionamiento de la interfaz
PHP. En tal caso puede compilar el método
sinclaves
:
make sinclave
Y podrá configurar este método de autenticación (que acepta
cualquier clave) cambiando auth/confcol.php
para que la variable AUTHPGM
sea:
$GLOBALS['AUTHPGM']="auth/sinclaves";
Aviso | |
---|---|
Este método permite acceso a cualquier profesor, con
cualquier clave. Es sólo para probar la interfaz,
habilite un método de autenticación real (como los
descritos en las secciones anteriores) tan pronto
complete sus pruebas. Asegurese también de no
permitir cambios no autorizados a
|
Los estados de la interfaz dependen del cronograma, de la
fecha y de las variables VALORAR
y
ACTIVA
del archivo
auth/confcol.php
.
El cronograma y la fecha del computador determinarán el periodo actual.
VALORAR
indica si pueden o no hacerse valoraciones del periodo actual.
ACTIVA
indica si la interfaz es utilizable
o no por profesores.
Al principio de un periodo la variable VALORAR
debe ser
false
, mientras que ACTIVA
debe ser true
, para que los profesores puedan
editar logros e indicadores del periodo y futuros pero que NO
puedan modificar valoraciones, al llegar a cierta fecha del periodo
conocida por profesores y administrador, no se aceptarán más
ediciones a logros e indicadores. El administrador
desactivará temporal y rápidamente la interfaz (asignando
false
a ACTIVA
) para ejecutar
iniperiodo
(ver Sección 4.3, “Administración de valoraciones”).
Una vez se completé la ejecución de iniperiodo
(la cual prepara todos los archivos de progreso de estudiantes),
el administrador pondrá la variable VALORAR
en
true
y activará la interfaz PHP para que
los profesores puedan ingresar las valoraciones del periodo.
Una vez se cumpla el tiempo de ingresar valoraciones y
de efectuar recuperaciones, el administrador pondrá la variable
VALORAR
en false
, dejando
así todo listo para comenzar el siguiente periodo y para poder
imprimir reportes del periodo concluido.
Cuando la interfaz esté habilitada por el administrador,
los profesores podrán ingresar con su clave para: (1) Editar
logros e indicadores futuros o del periodo
actual al comienzo del periodo, (2) cuando sea el
momento acordado podrán tanto valorar indicadores y logros del
periodo como recuperar indicadores pendientes (i.e indicadores
con valoración I
).
Cada profesor podrá entrar a la interfaz empleando su clave (de acuerdo al método de autenticación implementado por el administrador, bien la clave en el sistema o bien la clave particular para esta interfaz).
Podrá elegir la materia y el curso que desea editar (sólo entre las que dicta).
Podrá añadir o eliminar indicadores y logros de uno o más periodos, así como referencias a indicadores en algún periodo (si un indicador es no recuperable pueden agregarse referencias a este en más de un periodo).
En el caso de valoraciones del periodo actual, podrá ingresar valoraciones de cada indicador y número de fallas de cada estudiante y eventuales observaciones (que se acumularan con observaciones que otros profesores hagan ---por consistencia de la información final, puede ser buena política que sólo en una asignatura como disciplina o convivencia se ingresen las observaciones). En el caso de recuperaciones podrá también elegir el periodo que desea editar y modificar sólo las valoraciones pendientes.
[9] Note que si usa autenticación del sistema, el programa de autenticación debe correr con suid de root para poder escribir en los archivos de los profesores en el directorio de datos. Hemos procurado hacerlo seguro, por favor reporte eventuales fallas en nuestro seguidor público de fallas de seguridad.
[10] Por ejemplo para compilar el programa que autentica con base en el archivo de claves propias:
cd /var/www/ssl/sigue/auth make claves-propias
[11] La palabra secreta que configure será empleada para encriptar algo de la información de la sesión PHP.
[12] En el caso de Linux Debian el usuario
es www-data
y el grupo es
www-data
.