Configuración do cliente NFS.vello
Introdución
- Xa vimos que o no servidor os usuarios do LDAP xa poden acceder aos seus homes e a comun.
- Imos agora configurar os clientes para que os usuarios do LDAP a parte de iniciar sesión poidan acceder aos seus datos que están no servidor NFS..
Instalación do cliente NFS
Para poder acceder á carpetas compartidas por NFS, no equipo cliente teremos que instalar o paquete nfs-common:
sudo apt-get install nfs-common
Montaxe dunha carpeta por NFS mediante comandos
- Dende o cliente
Baseándose para este punto nas exportacións de dserver00
/home/iescalquera 172.16.5.0/255.255.255.0(rw) /comun 172.16.5.0/255.255.255.0(rw)
- Podemos montar unha carpeta compartida por NFS noutro equipo sobre una carpeta local utilizando o comando mount. A sintaxe será a seguinte:
sudo mount [-t nfs] equipo_servidor_NFS:carpeta_compartida_NFS punto_de_montaxe
- A opción de -t nfs podemos utilizala para indicar que o tipo de unidade que imos montar é unha carpeta compartida por NFS, pero non é necesario poñelo xa que o comando detectará o tipo de partición automaticamente.
- Primeiro imos crear as carpetas no cliente uclient01 onde se montarán as comparticións exportadas por dserver00. Os puntos de montaxe poden ser en calquera carpeta, pero:
- Se na configuración home de cada usuario ldap lle indicamos que o seu cartafol persoal están en /home/iescalquera/...
- Cando esteamos no cliente e iniciemos sesión cun usuario do dominio vai esperar atopar o seu cartafol persoal en /home/iescalquera/...
- Co cal, debemos crear unha carpeta no cliente que coincida co que se lle indicou na configuración home a cada usuario.
- Para comun imos montala en /media pois Ubuntu todo dispositivo montado en /media o amosa como unha icona directamente no lanzador, e queda moi cómodo para ir a comun.
sudo mkdir /home/iescalquera sudo mkdir /media/comun
- Imos agora a montar facer probas con un deles até deixalo definitivamente configurado.
sudo mount dserver00:/home/iescalquera /home/iescalquera #Tamén podemos poñer a IP do servidor, ou dserver00.iescalqeura.local
- Probas de funcionamento. Lembrar que pia é unha alumna de dam2. Imos ver onde pode acceder e onde non e así comprobamos que funcionan os permisos.
uadmin@uclient01:~$ su - pia Contrasinal: pia@uclient01:~$ pwd /home/iescalquera/alumnos/dam2/pia pia@uclient01:~$ ls /home/iescalquera/alumnos/ dam1 dam2 pia@uclient01:~$ ls /home/iescalquera/alumnos/dam1 mon tom pia@uclient01:~$ ls /home/iescalquera/alumnos/dam1/mon ls: non se pode abrir o directorio /home/iescalquera/alumnos/dam1/mon: Permiso denegado pia@uclient01:~$ ls /home/iescalquera/profes ls: non se pode abrir o directorio /home/iescalquera/profes: Permiso denegado pia@uclient01:~$ exit logout
Aquí preséntase un pequeno problema dende a versión 10.10 de Ubuntu Desktop; xa que nesta versión e posteriores o comando mount utiliza por defecto a versión 4 de nfs. Podemos comprobalo se despois de facer a montaxe executamos o comando mount, no que veremos:
mount /dev/sda1 on / type ext4 (rw,errors=remount-ro) ... dserver00:/home/iescalquera on /home/iescalquera type nfs (rw,vers=4,addr=172.16.5.10,clientaddr=172.16.5.20)
E isto ten algúns inconvenientes para nós, polo menos de momento:
- Para que o cliente de NFS versión 4 funcione correctamente temos que facer unhas modificacións nos ficheiros de configuración tanto no cliente coma no servidor para que o mapeo de ids funcione correctamente, xa que a configuración que vén por defecto en Ubuntu asigna sempre como usuario propietario e grupo propietario o id 4294967294.
- Por tanto, o que faremos é utilizar a opción vers=3 para forzar a que se use a versión 3 do protocolo NFS. Podemos desmontar a carpeta co comando umount:
sudo umount /home/iescalquera
E para montar a carpeta executaremos o comando:
sudo mount -o vers=3 dserver00:/home/iescalquera /home/iescalquera
- Comprobación:
mount /dev/sda1 on / type ext4 (rw,errors=remount-ro) ... dserver00:/home/iescalquera on /home/iescalquera type nfs (rw,vers=3,addr=172.16.5.10,clientaddr=172.16.5.20)
Montaxe automático dunha carpeta NFS no arranque do sistema
O inconveniente de montar a carpeta por NFS utilizando o comando mount é que ao reiniciar o equipo esta montaxe realizada non permanecerá. Se queremos que o equipo cliente monte automaticamente cada vez que arranque alguna carpeta compartida por NFS noutra máquina sobre un directorio local, introduciremos unha liña no ficheiro /etc/fstab coa seguinte sintaxe:
equipo_servidor_NFS:carpeta_compartida_NFS punto_de_montaxe nfs opcións
Por exemplo, no caso do apartado anterior a liña sería:
#Pódese usar a IP do servidor dserver00:/home/iescalquera /home/iescalquera nfs defaults 0 0 dserver00:/comun /media/comun nfs defaults 0 0
E, como comentamos no apartado anterior, imos utilizar de momento a versión 3 de NFS:
#Pódese usar a IP do servidor dserver00:/home/iescalquera /home/iescalquera nfs defaults,vers=3 0 0 dserver00:/comun /media/comun nfs defaults,vers=3 0 0
Podemos utilizar o comando mount para montar todas as carpetas indicadas no ficheiro /etc/fstab que non estean montadas (así podemos simular o que fai o sistema no arranque):
sudo mount -a
- Comprobación
mount /dev/sda1 on / type ext4 (rw,errors=remount-ro) ... dserver00:/home/iescalquera on /home/iescalquera type nfs (rw,vers=3,addr=172.16.5.10) dserver00:/comun on /media/comun type nfs (rw,vers=3,addr=172.16.5.10)
Montaxe por NFS das carpetas persoais dos usuarios
Despois de ver os exemplos do apartado anterior, se queremos que un usuario do dominio poida acceder á súa carpeta persoal cando inicia sesión dende un equipo cliente (e así xa poderemos iniciar sesión dende o equipo cliente en contorno gráfico), a solución parece simple: Montamos na carpeta /home do equipo cliente a carpeta /home compartida por NFS no servidor:
Se probamos esta configuración, veremos que o resultado en principio é correcto: podemos iniciar sesión con calquera usuario do dominio e accederá á súa carpeta persoal, que reside no servidor e é accedida dende os cliente por medio de NFS. Ademais, con isto xa temos habilitado automaticamente no noso dominio os perfís móbiles, xa que se un usuario personaliza calquera aspecto do seu contorno (o fondo do escritorio, a configuración dos programas, accesos directos, etc.) toda esa información en Linux é almacenada en ficheiros e directorios ocultos dentro da súa carpeta persoal (que teñen un nome que comeza por .), así que cando o usuario se mova dun equipo cliente a outro do dominio, a súa configuración persoal moverase con el.
Así que... ¿todo perfecto? Veremos que esta configuración ten algúns inconvenientes...
Inconvenientes de montar /home por NFS
Inicio de sesión con un usuario local
¿Que pasa se iniciamos sesión no equipo cliente con un usuario local do equipo, que non ven dos usuarios do LDAP? Imos probalo iniciando sesión no cliente co usuario administrador que creamos cando instalamos Ubuntu e que polo tanto é un usuario local, que non está almacenado no LDAP senón no ficheiro local de usuarios. Neste caso dáse ademais unha situación curiosa: no servidor tamén existe un usuario co mesmo nome (posiblemente co mesmo contrasinal) e tamén co mesmo id de usuario (1000).
Supostamente, a carpeta persoal do usuario administrador debería residir na carpeta /home local do equipo cliente (no ficheiro local de usuarios, /etc/passwd, establécese que a carpeta persoal deste usuario é /home/administrador), pero agora esa carpeta é un punto de montaxe á carpeta /home do servidor, e polo tanto o contido que había nela xa non está accesible. No seu lugar, cando un usuario accede a /home, realmente accede á carpeta /home do servidor. Así que cando este usuario intenta acceder á súa carpeta persoal, /home/administrador, accede á carpeta /home/administrador do servidor, que existe xa que é a carpeta persoal do usuario administrador do servidor (ollo, recórdase que non son o mesmo usuario, aínda que se chamen igual e teñan o mesmo contrasinal).
¿E pode acceder a esta carpeta o usuario local administrador? Recordemos como é o método de autenticación de NFS: O cliente proporciónalle ao servidor o uid do usuario que iniciou a sesión (neste caso 1000), e o servidor toma ese uid para verificar se o usuario ten permisos de acceso aos ficheiros e carpetas que solicita. Neste caso, a carpeta /home/administrador é propiedade do usuario que ten uid 1000, polo que o servidor establecerá para o usuario remoto, que tamén ten uid 1000 os permisos que lle permitirán non só ler senón escribir na carpeta e todo o seu contido. Resumindo, o usuario local administrador da máquina cliente faise pasar (neste caso involuntariamente) polo usuario local administrador do servidor:
Neste caso dáse a casualidade de que existe un usuario no servidor (tamén podería ser un usuario do LDAP, e o resultado sería o mesmo) que ten o mesmo nome de usuario e o mesmo uid que o usuario local, pero ¿que pasaría se isto non fose así? Cando iniciásemos sesión no equipo cliente, non se atoparía a carpeta persoal do usuario; xa que, aínda que existise, non sería propiedade dese usuario no servidor, e a carpeta real do usuario estaría inaccesible dentro o directorio /home local. Non poderíamos iniciar sesión con ese usuario local.
Creación dun novo usuario local
Vexamos que pasa se intentamos crear un novo usuario local no equipo cliente:
Imos crear un novo usuario no equipo cliente coa ferramenta de Usuarios e grupos de Ubuntu. Aparentemente, todo vai ben. Nota: Na versión 10.10 de Ubuntu Desktop, detectamos problemas en certas ocasións utilizando a ferramenta de xestión de usuarios e grupos, que se bloquea e non permite a creación de novos usuarios. A meirande parte dos problemas desaparecen aplicando as actualizacións do sistema. En caso de que continúe dado eses problemas, úsese directamente o comando adduser.
Se creamos o usuario co comando adduser, vemos cal é o problema. Non se pode crear a carpeta persoal do usuario, xa que estase accedendo á carpeta /home do servidor co usuario root, e o servidor non confía no usuario root (recórdese esta configuración do apartado de Instalación do servidor NFS en Ubuntu Server), polo que o trata como un usuario anónimo e este usuario non pode crear carpetas dentro de /home.
Estratexia para montar as carpetas persoais
Todos estes problemas veñen dados por conflitos nas carpetas persoais entre os usuarios locais dos equipos cliente e os usuarios do dominio. Para solucionalo, a estratexia que usaremos é situar nun lugar diferente as carpetas persoais dos usuarios do dominio e as dos usuarios locais, e evitaremos estes conflitos entre elas.
Por exemplo, podemos mover as carpetas dos usuarios do dominio a un directorio co nome do dominio dentro do directorio /home. Deste xeito, a carpeta persoal do usurio felipe quedaría en /home/iescalquera/felipe en lugar de /home/felipe. En lugar de compartir por NFS /home no servidor compartiremos /home/iescalquera e nos clientes montaremos a carpeta /home/iescalquera en lugar de /home. Así os usuarios locais nos clientes seguirán utilizando as súas carpetas persoais que aloxadas directamente en /home (directorio local), mentres que os usuarios do dominio utilizarán as súas carpetas persoais de /home/iescalquera, que é un punto de montaxe que nos leva á carpeta /home/iescalquera do servidor:
Para acadar esta configuración, teremos que levar a cabo os seguintes pasos:
- Desmontar a carpeta /home no equipo cliente: Aquí atoparémonos co problema de que se intentamos desmontar a carpeta /home no cliente co comando umount obteremos un erro debido á que a carpeta está sendo utilizada (ao iniciar sesión con calquera usuario que non sexa root, ese usuario estará usando a súa carpeta persoal en /home). Dado que non temos habilitado o inicio de sesión como root, unha forma sinxela de desmontala é eliminar a liña do ficheiro /etc/fstab que monta a carpeta /home por NFS (en caso de que a tivésemos insertado) e reiniciar o equipo cliente.
- Mover no servidor as carpetas persoais dos usuarios do dominio a /home/iescalquera: O que faremos é montar a partición na que almacenamos as carpetas persoais en /home/iescalquera en lugar de en /home (xa que así cando logo compartamos esta carpeta estaremos compartindo por NFS todo o sistema de ficheiros e evitaremos accesos non autorizados ao deshabilitar a opción subtree checking; recórdese o explicado sobre esta opción no apartado de Instalación do servidor NFS en Ubuntu Server). Pasos:
- Imos pechar todas as sesións interactivas que teñamos abertas no servidor para poder desmontar a carpeta /home. Usaremos o webmin accedendo ao módulo de Sistemas de archivos de disco y red da categoría de Sistema:
- Montamos a partición na carpeta /home/iescalquera. Con este mesmo módulo do webmin, agregaremos un punto de montaxe NFS:
Introducimos os datos para montar a partición. Fixarse en que hai varias formas de referenciar a partición (neste caso selecciónase o ID da partición, tal e como estaba na montaxe de /home). Non é necesario crear previamente a carpeta /home/iescalquera, xa que se non existe o webmin vaina crear automaticamente.
- Mover a carpeta dos usuarios locais a /home: No noso caso só temos un usuario local (administrador) e imos deixar a súa carpeta persoal en /home, separada dos usuarios do dominio. Imos facelo usando o módulo de Explorador de arquivos do webmin, na categoría Otros (téñase en conta que para executar este módulo é preciso ter instalado java no equipo co que nos conectamos ao webmin):
- O ficheiro /etc/fstab do servidor, agora ten a seguinte entrada para o punto de montaxe /home/iescalquera:
# /home was on /dev/sda6 during installation UUID=e162c2ac-dbc6-446b-9adf-09040428eb97 /home/iescalquera ext4 defaults 0 0 #OLLO: cada quen terá un UUID distinto.
- Modificar directorio persoal dos usuarios do dominio: Neste momento xa podemos iniciar sesión sen problemas no servidor co usuario administrador, pero os usuarios do dominio teñen configuradas as súas carpetas persoais (nos datos que temos almacenados no LDAP) en /home, e se iniciamos sesión no servidor con algún deles non se atopará a súa carpeta persoal, que agora movimos a /home/iescalquera. Poderíamos usar o módulo de administración de usuarios do webmin para cambiar usuario a usuario a carpeta persoal, pero esta é un magnífica oportunidade para abordar como podemos facer modificacións masivas nos usuarios do LDAP (interesante para modificar as contas dos alumnos no cambio do curso, etc.). Imos propoñer dúas posibilidades:
- Utilizando JXplorer: Con esta ferramenta podemos exportar toda unha rama do LDAP a un ficheiro LDIF (escolleremos a rama de usuarios). Logo con calquera editor de texto substituiremos todas as ocorrencias de /home por /home/iescalquera, eliminaremos do LDAP a rama exportada e cargaremos o ficheiro LDIF modificado:
- Usando os comandos de xestión do LDAP (ldapsearch, ldapdelete e ldapadd):
- Exportamos a rama dos usuarios a un ficheiro LDIF (Identificámonos como administrador para poder exportar os contrasinais dos usuarios). Teremos que introducir o contrasinal do usuario admin do LDAP despois de introducir o comando, aínda que non mostra ningunha mensaxe:
ldapsearch -D cn=admin,dc=iescalquera,dc=local -W -H ldap://localhost -b ou=usuarios,dc=iescalquera,dc=local > usuarios.ldif
- Borramos de forma recursiva a rama de usuarios:
sudo ldapdelete -x -D cn=admin,dc=iescalquera,dc=local -W -r "ou=usuarios,dc=iescalquera,dc=local"
- Xa postos, para os fans do modo comandos... Usamos o editor sed para substituír /home por /home/iescalquera:
sed 's/\/home/\/home\/iescalquera/' usuarios.ldif > usuarios2.ldif
- Co comando ldapadd engadimos de novo as novas entradas:
sudo ldapadd -x -D cn=admin,dc=iescalquera,dc=local -W -f usuarios2.ldif
- Exportar por nfs a carpeta /home/iescalquera: Utilizando o módulo de exportación de NFS do webmin, modificamos a exportación de /home cambiando o directorio a exportar. Picamos en Aplicar Cambios na páxina principal do módulo para activar a nova configuración e cambiar a exportación:
O ficheiro /etc/exports quedaría como segue:
#/etc/exports en server00 /home/iescalquera 10.0.0.0/255.0.0.0(rw) #opcionalmente, pero con igual comportamento: #/home/iescalquera 10.0.0.0/255.0.0.0(rw,no_subtree_check)
- Montar no cliente /home/iescalquera: Teremos que crear a carpeta /home/iescalquera e montar no ficheiro /etc/fstab por nfs a carpeta /home/iescalquera do servidor:
sudo mkdir /home/iescalquera
Liña no fstab:
10.0.0.100:/home/iescalquera /home/iescalquera nfs defaults,vers=3 0 0
Executamos o comando para efectuar a nova montaxe que incluímos no ficheiro fstab:
sudo mount -a
- Configurar o webmin para que os novos usuarios teñan a súa carpeta persoal en /home/iescalquera: Dentro da configuración do módulo de Usuarios e grupos LDAP, cambiamos a base do directorio home:
Permisos por defecto das carpetas persoais
Un aspecto importante a ter en conta na implantación do dominio e na configuración das carpetas de usuario centralizadas, é os permisos que queremos establecer á carpetas persoais dos usuarios. Aínda que segundo as circunstancias pode haber necesidades moi diversas neste sentido, e en moitos casos podemos deseñar scripts de comandos para establecer os permisos que nos interesan para as carpetas, ímonos fixar nos permisos que están establecidos nas carpetas persoais dos usuarios que creamos. Fixémonos na seguinte imaxe que mostraba o contido do directorio /home no cliente do dominio na que está montado o directorio /home do servidor:
Nota: Na versión 10.10, a configuración por defecto do paquete ldapscripts establece por defecto permisos de lectura tamén para todos os usuarios, polo que si poderemos acceder á carpeta do usuario pepe.
Podemos ver pola icona da casa sobre a carpeta administrador que o usuario co que se iniciou sesión é o usuario administrador. Sobre a carpeta persoal do usuario pepe hai un x que indica que non temos permiso de acceso nesa carpeta, pero non é así no caso das carpetas de xan, alberto, e felipe. De feito, se probamos, veremos que podemos "fisgar" nelas con outro usuario. ¿Por que uns si e outros non? A resposta é que os usuarios foron creados con distintas ferramentas, xa que o usuario pepe foi creado co comando ldapadduser do paquete ldapscripts, mentres que os outros foron creados co webmin.
Se comprobamos os permisos das distintas carpetas, veremos que a carpeta persoal de pepe ten permisos 700; é dicir, lectura, escritura e execución para pepe que é o seu propietario, e ningún para o resto dos usuarios. Isto é así porque no ficheiro de configuración do paquete ldapscripts (/etc/ldapscripts/ldapscripts.conf) o parámetro HOMEPERMS ten o valor 700 (non é así na versión 10.10, na que o parámetro ver comentado por defecto). Modificando este parámetro podemos personalizar os permisos por defecto das carpetas dos usuarios segundo as nosas necesidades.
No caso dos outros usuarios, veremos que os permisos das súas carpetas persoais son 755; é dicir, lectura, escritura e execución para os usuarios propietarios das carpetas e lectura e execución para todo os outros usuarios. Se imos ao módulo de Usuarios e grupos LDAP do webmin e picamos no enlace de Configuración de módulo, atoparemos dentro do grupo de Opciones de directorio home a opción de Permisos nos novos directorios home, que está establecida ao mesmo que poña a configuración do módulo de Usuarios e grupos. Se imos á configuración deste módulo, veremos que os permisos son 0755, e podemos cambialos aí ou poñelos no módulo de Usuarios e grupos LDAP, como se mostra na imaxe:
Agregar accesos directos ás carpetas montadas por NFS
Por suposto, podemos usar nfs para montar outras carpetas compartidas ademais das carpetas persoais dos usuarios. Na maioría dos dominios, interesaranos exportar unha ou varias carpetas no servidor para que os usuarios intercambien información entre eles (apuntamentos, traballos, software, etc.). Personalizando os permisos sobre estas carpetas podemos establecer diferentes usos en base a que usuarios poden acceder á carpeta (carpetas para os departamentos, equipo directivo, PAS, etc.).
A forma de exportar as carpetas no servidor e montalas nos clientes será igual que o que vimos para as carpetas persoais; exportaremos diferentes carpetas do servidor, que poden ser á súa vez puntos de montaxe a distintos discos ou particións de disco, e dende os clientes montaremos esas carpetas en carpetas locais. Habitualmente, estas carpetas montarémolas en /mnt (tamén podería ser en /media), pero o problema que teremos é que aos usuarios pode serlles algo complicado chegar a esas carpetas navegando polo sistema de ficheiros.
Para facilitar o acceso dos usuarios a estas carpetas, podemos facer un script de inicio de sesión que estableza estas carpetas como as favoritas para o usuario, de forma que aparecerán no menú de Lugares do panel superior do escritorio e na parte da esquerda no navegador de ficheiros, e os usuarios terán sempre un enlace accesible para ir directamente a estas carpetas, sen ter que saber en que equipo residen ou nin sequera que residen noutro equipo.
Na seguinte sección vanse ver as Listas de Control de Acceso (ACLs), onde se traballará cunha carpeta chamada /comun que se montará no cliente en /mnt/comun. Para iso xa queda nada ..., Pero antes, como faiclitaríamos ós usuarios que inician sesión no cliente ó acceso a esa carpeta /mnt/comun e a outras dun xeito sinxelo?.
O que faremos no script é modificar o ficheiro .gtk-bookmarks almacenado na carpeta persoal do usuario, para engadir unha liña por cada carpeta á que queiramos enlazar da seguinte forma:
file://RutaDaCarpeta NomeFavorito
Así, por exemplo, se queremos engadir enlaces ás carpetas /mnt/comun, /mnt/temporal e /mnt/software engadiremos as liñas:
file:///mnt/comun Comun file:///mnt/temporal Temporal file:///mnt/software Software
O script que xenere este ficheiro podería ser o seguinte:
#!/bin/bash echo file:///mnt/comun Comun > ~/.gtk-bookmarks echo file:///mnt/temporal Temporal >> ~/.gtk-bookmarks echo file:///mnt/software Software >> ~/.gtk-bookmarks
E poderiamos invocalo dende o script /etc/profile, que se executa no inicio de sesión dos usuarios. Se o script está almacenado no ficheiro /opt/engadir_marcadores.sh, no ficheiro /etc/profile engadiríamos a liña marcada:
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). /opt/engadir_marcadores.sh if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do
Na seguinte imaxe podemos ver o efecto na sesión do usuario, cos accesos que se crean grazas ao script: