Este servicio permite compartir directorios de un servidor en uno o más clientes.
Como se describe en el RFC 1813, el protocolo NFS [7] permite acceder de forma transparente sistemas de archivos compartidos que están en máquinas remotas. Hay muchas posibilidades para usar este servicio, nuestra plataforma de referencia lo aprovecha para distribuir información de usuarios (directorio
/home del servidor), las colas de correo (
/var/mail) y los programas y documentos disponibles en el servidor (directorio
/usr). Así mismo permite aprovechar el espacio de sobra de cada cliente (directorio
/aux).
Archivo de configuración de NFS en un servidor, donde se especifica que directorios son exportables.
Al igual que otros servicios, NFS cuenta con un cliente y un servidor. El servidor NFS permite exportar directorios del computador en el que corre a computadores donde se ejecute el cliente, mientras estos últimos tengan permiso para importar tales directorios. Los directorios que se exportan, así como las restricciones sobre los clientes que pueden importarlos se especifican en el archivo
/etc/exports. Por ejemplo el siguiente es el archivo
/etc/exports del servidor de nuestra plataforma de referencia:
/usr *.micolegio.edu.co(ro,no_root_squash)
/home *.micolegio.edu.co(rw,no_root_squash)
/var/mail *.micolegio.edu.co(rw,no_root_squash)
Este archivo especifica que pueden exportarse con permiso de lectura y escritura los directorios
/home,
/var/mail. Puede exportar con permiso de sólo lectura (
ro) el directorio
/usr. Todos estos directorios pueden ser importados por máquinas con nombres de la forma
x.micolegio.edu.co. La opción
no_root_squash indica que los archivos de usuario y grupo
root exportados del servidor sean tratados como si fueran del usuario y grupo
root en los clientes.
En nuestra plataforma de referencia tanto cliente NFS como servidor NFS deben instalarse en todos los computadores (porque los computadores clientes exportarán el espacio que resta de su partición
aux al servidor). El archivo
/etc/exports de cada cliente debe ser algo como:
/aux *.micolegio.edu.co(rw,no_root_squash)
Para instalar el servidor y el cliente NFS en Debian 2.2 basta que instale los paquetes
nfs-common y
nfs-server, siguiendo el procedimiento usual (ver
). Como NFS depende de RPC, asegúrese también de dar acceso a las máquinas de su dominio con
portmap y que esté operando. Dado que
portmap es manejado con
tcpd (ver
) este acceso se da o restringe modificando los archivos
/etc/hosts.allow y
/etc/hosts.deny. Por ejemplo el archivo
/etc/hosts.allow debe tener una línea como:
portmap: .micolegio.edu.co
Puede comprobar que portmap está corriendo buscándolo entre los procesos (i.e
ps ax | grep "[p]ortmap") o revisando los programas que están registrados para usar RPC con
pmap_dump.
Una vez esté corriendo el servidor y el cliente NFS en todas las máquinas, puede montar (ver
Montaje y desmontaje de sistemas de archivos) los directorios exportados por el servidor en cada cliente, por ejemplo con algo como:
mount -t nfs servidor.micolegio.edu.co:/usr /opt
para montar el directorio
/usr del servidor como el directorio
/opt de cada cliente. Mejor aún, puede editar el archivo
/etc/fstab para que cada vez que cada máquina inicie monte automáticamente ese directorio. Por ejemplo podría agregar la siguiente línea al archivo
/etc/fstab de un cliente [8]:
servidor.micolegio.edu.co:/usr /opt nfs ro 0 0
En el servidor puede agregar al archivo
/etc/fstab, líneas de la forma "
clienten:/aux /mnt/auxn nfs rw 0 0" para montar en
/mnt/auxn el directorio
/aux de cada cada cliente. Para comprobar los directorios que ha montado con NIS puede emplear
mount.
Mientras no configure el servicio NIS (ver
Servicio NIS), recomendamos no montar
/home ni
/var/mail del servidor en los clientes.
NIS [9] es un servicio para centralizar nombres de usuarios, claves, e información de grupos en el servidor facilitando la administración de usuarios. Si además de NIS se usa NFS para montar el directorio
/home del servidor en cada cliente, puede centralizarse también la información de todos los usuarios en el servidor.
Con este servicios puede centralizarse información de usuarios y claves en el servidor
NIS de forma análoga a DNS opera sobre un grupo de computadores (dominio) y mantiene bases de datos (mapas) centralizadas en un servidor maestro, que pueden ser consultadas por los clientes. Para disminuir carga podrían ponerse servidores esclavos que repliquen la información del servidor maestro.
Para usar NIS debe escoger un nombre de dominio NIS (puede ser diferente al dominio DNS) y usarlo en los computadores clientes y en el servidor.
Puede comenzar instalando el paquete
nis tanto en clientes como servidor, al instalarlo podrá dar el dominio NIS (o puede editarlo en
/etc/defaultdomain). En todos los computadores debe modificar el archivo
/etc/nsswitch para cambiar el orden de búsqueda de usuarios, grupos y
shadow. También debe agregar algunas líneas al final de los archivos
/etc/passwd,
/etc/group y
/etc/shadow, tarea que puede hacer con los siguientes comandos:
echo "+::::::" >> /etc/passwd
echo "+:::" >> /etc/group
echo "+::::::::" >> /etc/shadow
Que agregan líneas con un "+" y tantos ":" como separadores hay en los respectivos archivos. En el servidor los usuarios y grupos que estén después de estas marcas no serán compartidos por NIS.
En el servidor debe configurar NIS de la siguiente forma:
- Edite /etc/init.d/nis, asegurándose de dejar NISSERVER=master.
- Reinicie el servicio NIS con /etc/init.d/nis restart
- Edite el archivo /var/yp/Makefile y cambie la regla all: para que incluya también shadow.
- Ejecute /usr/lib/yp/ypinit -m.
Una vez NIS esté funcionando en clientes y servidor, puede agregar, eliminar o modificar usuarios y grupos con los comandos usuales (ver
) y después de cada modificación, para que el cambio sea notado por NIS, debe pasar al directorio
/var/yp/ y ejecutar
make.
Para centralizar la información de todos los usuarios en el servidor puede usar NFS una vez NIS funcione bien. Para lograrlo se debe hacer la administración de usuario siempre en el servidor (por ejemplo agregar nuevos usuarios sólo desde el servidor) para que los directorios queden allí; por otra parte debe montar el directorio
/home del servidor en todos los clientes. Para centralizar la cola de correo en el servidor debe montar el directorio
/var/mail del servidor en los clientes. De esta forma el archivo
/etc/fstab de cada cliente debe incluir:
servidor.micolegio.edu.co:/home /home nfs rw 0 0
servidor.micolegio.edu.co:/var/mail /var/mail nfs rw 0 0
y el archivo
/etc/exports del servidor debe tener las líneas apropiadas para exportar
/home y
/var/mail. Ver
Servicio NFS.
El protocolo ssh cuenta con dos versiones, un borrador de la segunda de estas está en proceso de desarrollo. OpenSSH es la implementación de cliente y servidor para estos protocolos, la versión disponible para Debian permite usar tanto ssh 1 como ssh 2.
Tal como se describe en uno de los borradores de la especificación temporal "
SSH Protocol Architecture" (http://www.ietf.org/internet-drafts/draft-ietf-secsh-architecture-13.txt)
ssh es un protocolo para iniciar sesiones en máquinas remotas que ofrece autenticación, confidencialidad e integridad. Consta de tres componentes:
- Protocolo de transporte. Que normalmente opera sobre TCP/IP dando autenticidad, confidencialidad e integridad.
- Protocolo de autenticación de usuario. Que autentica al usuario ante el servidor.
- Protocolo de conexión. Que multiplexa un canal encriptado en diversos canales lógicos.
Este protocolo requiere que los servidores tengan "llaves", las cuales son usadas por los clientes cada vez que se conectan a un servidor para verificar que no fue suplantado. Una llave es un número codificado y encriptado en un archivo. Para la encripción de llaves, OpenSSH ofrece los algoritmos RSA y DSA (de los cuales para la versión 2 recomendamos DSA).
Para instalar un servidor
OpenSSH, que le permita conectarse a su sistema de forma segura, instale el paquete ssh preferiblemente tomando la versión más reciente del sitio de seguridad de Debian:
http://security.debian.org o compile las fuentes más recientes que puede obtener en
http://www.openssh.org. Cuando instale se generaran un par de "llaves" para su computador, una pública y una privada. Una vez instalado podrá afinar la configuración del servidor en el archivo
/etc/ssh/sshd.conf que puede incluir líneas como las siguientes:
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
RhostsAuthentication no
hostsRSAAuthentication no
HostbasedAuthentication no
X11Forwarding yes
Archivo de configuración del servidor OpenSSH.
La última línea permitirá a los clientes que se conecten ejecutar aplicaciones de
X-Window y transmitir la información gráfica sobre la conexión segura (ver
).
Un usuario también puede crear un par de llaves que le faciliten su autenticación al emplear
ssh o
scp. Estos programas por defecto piden clave al usuario que se conecte a un servidor ssh. Si un usuario genera sus llaves pública y privada, puede saltarse esta autenticación pues se hará de forma automática con las llaves. Para lograrlo su llave pública debe estar en el computador al cual se conecta (en
~/.ssh/authorized_keys) y su llave privada en el computador desde el cual se conecta (normalmente en
~/.ssh/id_dsa).
Un usuario emplea este programa se usa para generar sus llaves ssh pública y privada.
La generación de llaves puede hacerse con:
ssh-keygen -t dsa
que por defecto dejará su llave pública en
~/.ssh/id_dsa.pub y su llave privada en
~/.ssh/id_dsa (que además quedará protegida por una palabra clave que usted especifica). Como el nombre lo índica la llave privada no debe compartirla, por el contrario la llave pública puede transmitirla y puede ser vista por cualquiera.
En el computador en el que desee conectarse, agregue en el archivo
~/.ssh/authorized_keys (o
~/.ssh/authorized_keys2 si usa DSA y una versión de OpenSSH anterior a la 3.1), su llave pública. Por ejemplo el usuario mario desde purpura.micolegio.edu.co puede configurar la entrada con autenticación automática a la cuenta juan en amarillo.micolegio.edu.co con:
purpura> scp ~/.ssh/id_dsa.pub amarillo.micolegio.edu.co:/home/juan/id_dsa_mario.pub
purpura> ssh -l juan amarillo.micolegio.edu.co
...
amarillo> cat id_dsa_mario.pub >> ~/.ssh/authorized_keys
Para automitizar autenticación en una cuenta, en este archivo del directorio
~/.ssh un usuario puede mantener las llaves públicas que pueden conectarse.
Cuando mario se intente conectar desde purpura, a la cuenta juan en amarillo ya no tendrá que dar la clave de juan en ese computador sino la palabra clave con la que protegio su llave privada. Incluso esta palabra clave puede darse una sóla vez, aún cuando se realicen diversas conexiones con:
purpura> ssh-agent bash
purpura> ssh-add mario
Tras lo cual mario tecleará una vez la palabra clave de su llave privada, y después en esa sesión de
bash todo ingreso que haga a la cuenta juan en amarillo, no solicitará clave alguna.
En esta sección se presenta configuración de un servidor CVS y creación de repositorios (el uso de un repositorio y un servidor ya configurado puede verse en
).
Un servidor CVS puede emplearse sin conexión a una red, o bien en red con alguno de los protocolos rsh, ssh (ver
Servicio ssh) o pserver. Los dos primeros requieren que el usuario que se conecta tenga cuenta (o una llave pública ssh entre las llaves autorizadas de una cuenta), mientras que pserver puede manejar su propio archivo de usuarios y claves. En todos los casos requiere instalar CVS y configurar un depósito. Si usa ssh debe instalar también el servidor
sshd (ver
Servicio ssh), si usa pserver debe agregar a su archivo
/etc/inetd.conf (ver
) la línea:
cvspserver stream tcp nowait.400 root /usr/sbin/tcpd
/usr/bin/cvs -b /usr/bin allow-root=/var/cvs pserver
(cambiando
/var/cvs por el directorio donde está el depósito) y debe configurar los repositorios que desee poder acceder con pserver en
/etc/cvs-pserver.conf.
Para instalar CVS instale el paquete cvs (ver
Paquetes en Debian), que le permitirá activar o no el protocolo pserver y de requerirse hará los cambios apropiados en
/etc/inetd.conf. El programa de instalación también podrá inicializar un repositorio por usted (puede ser
/var/cvs, directorio que usted debe crear antes o durante la instalación de cvs).
Este servicio permite a diversos usuarios trabajar simultanaemente en las fuentes de un proyecto, y controla versiones.
Es un protocolo de autenticación de cvs, que permite manejar un archivo de usuarios y claves independiente de los usuarios y claves en el sistema.
Una vez CVS (y eventualmente ssh) esté instalado, todo usuario de la misma máquina puede crear uno o más depósitos. Tales depósitos podrán ser accedidos por otros usuarios del mismo sistema o de otro con ssh o con rsh o con el protocolo pserver (ver
Uso de CVS)
Un usuario juan emplearía una secuencia de comandos como la siguiente para crear un repositorio en
/home/juan/cvs:
cd ~
mkdir cvs
cd cvs
export CVS_RSH=" "
export CVSROOT=/home/juan/cvs
cvs init
Juan mismo o algún otro usuario del sistema que tenga permiso de escritura en ese directorio podrá leer (
update) y escribir (
commit) en el nuevo repositorio. Para eso basta que emplee:
export CVS_RSH=" "
export CVSROOT=/home/juan/cvs
También puede usarlo vía ssh (por ejemplo desde otro computador de la misma red) con
CVS_RSH="ssh". O si durante la instalación o reconfiguración de cvs el administrador activa el protocolo pserver puede emplearse
CVSROOT=:pserver:juan@purpura.micolegio.edu.co:/home/juan/cvs, siendo juan un usuario de la máquina donde está el repositorio con permisos para leer (o escribir) o un usuario para ese repositorio agregado en el archivo
/home/juan/cvs/CVSROOT/passwd[10]
Todo usuario con permiso de escritura en ese depósito podrá ingresar un módulo nuevo. Por ejemplo un usuario con permiso de escritura y las variables
CVS_RSH y
CVSROOT con los valores recién presentados, puede ingresar todo el contenido del directorio
~/quimica` como módulo
laquimica:
cd ~/quimica
cvs import laquimica start vendor
Tras lo cual el mismo usuario que importó el módulo, o cualquier otro con permiso de lectura, puede sacar una copia local con:
cvs co laquimica
y hacer otras operaciones usuales de CVS (ver
Uso de CVS).