Acceso dende os clientes Linux ás carpetas compartidas por Samba3: pam mount
Ir a la navegación
Ir a la búsqueda
Introdución
- Nesta sección imos ver en uclient01
- Como conectarse dende Linux a recursos samba/cifs compartidos tanto por sistemas Linux / Windows / Cabinas, etc.
- Como facer permanentes os puntos de montaxe cifs/samba.
- Como xerar un script de inicio de rede para os usuarios do dominio que cargue o mesmo aviso que se carga cando un usuarios inicia unha sesión en Windows.
- A imaxe amosa o escenario a desenvolver nos clientes Linux:
- Para iso comezaremos desmontando os puntos de montaxe nfs.
Desmontar os puntos de montaxe nfs
- Antes de comezar imos desmontar os puntos de montaxe en uclient01.
- Iniciar sesión co usuario uadmin.
- Desmontar sistema de ficheiros nfs
-
Con mount vemos os puntos de montaxe e vemos que hai 2 puntos de montaxe nfs que apuntan a dserver00.
-
Desmontamos con umount os puntos de montaxe nfs. E comprobamos que xa non están montados.
-
Editamos o ficheiro /etc/fstab e comentamos as liñas que fan que se monten os puntos de montaxe nfs de dserver00, cada vez que se inicia o ordenador.
Montar recursos cifs/samba en modo gráfico
- Se en nautilus prememos CTR+L podemos escribir que recurso/carpeta podemos abrir.
- Se usamos o protocolo smb:/// podemos buscar que recursos hai na rede que comparten recursos samba
- smb://servidor: serve para conectarse a un servidor cifs/samba e ver que recursos comparte.
- smb://servidor/recurso: serve para conectarse a un recurso cifs/samba dun servidor
- Conectarse a un recurso cifs/samba
-
En nautilus premer CTR+L e escribir: smb://dserver00
-
Tratamos de acceder a carpeta comun. Como esa carpeta fisicamente ten uns permisos aparece un cadro de diálogo no que indicar as credencias coas que queremos autenticarnos contra o servidor. Neste caso sol. Observar que podemos gardar o contrasinal até pechar a sesión ou para sempre.
-
Agora todo canto fagamos en comun farémolo cos mesmos permisos que teña sol nese recurso. Ademais podemos ver que na barra lateral o punto de montaxe.
-
Se executamos mount vemos que o punto de montaxe está en: ...
-
/run/user/1000/gvfs
-
Para desmontar o punto de montaxe, prememos no botón eject do punto de montaxe.
Montaxe manual de recursos cifs: cifs-utils
- A continuación imos ver comandos que podemos usar para xestionar dende consola puntos de montaxe samba/cifs.
- Para iso instalaremos as cifs-utils que nos van permitir realizar montaxes con tipo de sistema de ficheiros cifs, así como o paquete smbclient.
- Pero o problema que temos é que se realizamos un punto de montaxe cifs contra un recurso dun servidor hai que indicar que usuario é co que nos imos conectar.
- Co cal, use quen use ese punto de montaxe usarao como se fora ese usuario que realizou a conexión e ese non ten senso, pois non se vai adaptar ao tipo de usuario.
- Conectarse a un recurso cifs/samba con comandos
-
Instalamos o paquete smbclient
-
Con smbclient podemos ver recursos que comparte unha rede ou un servidor: smbclient -L //dserver00 -U pia
-
smbclient //dserver00/comun -U pia podemos realizar operacións no recurso compartido de acordo aos permisos que ten o usuario co que nos conectamos.
-
Pero se queremos realizar puntos de montaxe permanentes precisamos usar o sistema de ficheiros cifs e para iso precisamos instalar cifs-utils.
-
Con sudo mount.cifs //dserver00/comun /media/comun -o user=pia,password=abc123.
Montamos o recurso comun pero co usuario pia, co cal da igual quen inicie sesión no cliente, todo usuario que usara ese punto de montaxe é como se o estivera usando pia. -
Con mount vemos o punto de montaxe.
-
Pero aínda así non todo mundo o pode usar e hai que executar ls con sudo.
-
Xa non nos imos en molestar en facer este punto de montaxe permanente en /etc/fstab. Desmontamos o punto de montaxe con umount.
Montaxe de recursos en función do usuario que inicie a sesión: pam-mount
- A solución ao problema anterior pasa por que o montaxe por cifs se realice xusto no momento en que o usuario inicie sesión.
- Para iso instalaremos libpam-mount (http://pam-mount.sourceforge.net/) que monta volumes cando o usuario inicia sesión e en función de como estea configurado o ficheiro xml onde se definen os recursos a montar, onde montalos e para que tipo de usuarios montalos.
- Instalar libpam-mount.
- Configurar o ficheiro asociado ao paquete anterior: /etc/security/pam_mount.conf.xml
- Aconsellámolo facer con gedit porque así é máis fácil manexar o documento.
- A continuación amósase o ficheiro pam_mount.conf.xml
- As liñas que se engadiron son da 42 á 57.
- No seguinte enlace: http://manpages.ubuntu.com/manpages/lucid/man5/pam_mount.conf.5.html, pódese atopar información sobre os parámetros do ficheiro.
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!--
See pam_mount.conf(5) for a description.
-->
<pam_mount>
<!-- debug should come before everything else,
since this file is still processed in a single pass
from top-to-bottom -->
<debug enable="0" />
<!-- Volume definitions -->
<!-- pam_mount parameters: General tunables -->
<!--
<luserconf name=".pam_mount.conf.xml" />
-->
<!-- Note that commenting out mntoptions will give you the defaults.
You will need to explicitly initialize it with the empty string
to reset the defaults to nothing. -->
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<!--
<mntoptions deny="suid,dev" />
<mntoptions allow="*" />
<mntoptions deny="*" />
-->
<mntoptions require="nosuid,nodev" />
<logout wait="0" hup="0" term="0" kill="0" />
<!-- pam_mount parameters: Volume-related -->
<mkmountpoint enable="1" remove="true" />
<!-- Montamos comun -->
<volume sgrp="g-usuarios" fstype="cifs" server="dserver00" path="comun" mountpoint="/media/%(USER)/comun" options="iocharset=utf8"/>
<!-- Montamos carpeta alumnos para os profes -->
<volume sgrp="g-profes" fstype="cifs" server="dserver00" path="alumnos" mountpoint="/media/%(USER)/alumnos" options="iocharset=utf8"/>
<!-- Montamos netlogon para lanzar tamén os avisos en Linux -->
<volume sgrp="g-usuarios" fstype="cifs" server="dserver00" path="netlogon" mountpoint="/netlogon" options="iocharset=utf8"/>
<!-- Montamos carpetas persoais dos usuarios profes -->
<volume sgrp="g-profes" fstype="cifs" server="dserver00" path="%(USER)" mountpoint="/home/iescalquera/profes/%(USER)" options="iocharset=utf8,uid=%(USER)"/>
<!-- Montamos carpetas persoais dos usuarios alumnos -->
<volume sgrp="g-dam1-alum" fstype="cifs" server="dserver00" path="%(USER)" mountpoint="/home/iescalquera/alumnos/dam1/%(USER)" options="iocharset=utf8,uid=%(USER),gid=g-dam1-profes"/>
<volume sgrp="g-dam2-alum" fstype="cifs" server="dserver00" path="%(USER)" mountpoint="/home/iescalquera/alumnos/dam2/%(USER)" options="iocharset=utf8,uid=%(USER),gid=g-dam2-profes"/>
</pam_mount>
- Cada liña que comeza por volume é un punto de montaxe que se indica para que usuario ou grupo de usuarios se vai realizar:
- o tipo de sistema de ficheiros: cifs, neste caso.
- o punto de montaxe, se non existe no cliente a carpeta na que realizar o punto de montaxe pam-mount vaina crear.
- de que servidor
- que recurso do servidor
- con que opcións montar o recurso
- Funcionamento (Semellante a como fixemos antes á man con mount.cifs que equivale a mount -t cifs):
- Pam-mount le cada liña que comeza por volume e chama ao comando de montar, mount, indicando:
- O tipo de sistema de ficheiros, neste caso, cifs
- A que servidor conectarse, neste caso dserver00
- A que recurso, neste caso o indicado en cada liña
- Con que usuario e contrasinal?: co que acaba de iniciar sesión
- Pam-mount le cada liña que comeza por volume e chama ao comando de montar, mount, indicando:
- Observar que tamén imos montar o recurso netlogon, ao igual que en Windows para poder tamén lanzar en Ubuntu os avisos para o alumnado.
- As carpetas comun e de alumnos ímolas montar dentro de /media nunha carpeta co nome do usuario para que se varios usuarios iniciasen sesión no mesmo equipo cliente de forma simultánea (na contorna gráfica, usando terminais virtuais en modo comandos ou de forma remota por ssh) non teñan problema de acceso a recursos compartidos que non lles correspondan.
- No caso das carpetas persoais, introducimos os parámetros uid e gid na montaxe para que o equipo cliente estableza como propietario da carpeta que se usa para a montaxe o usuario da sesión e o seu grupo principal. Así evitamos tamén que un usuario puidese acceder á carpeta persoal de outro usuario se está montada nese momento.
Crear un script de rede de inicio de sesión para clientes Ubuntu
- Ao igual que fixemos en Windows, que creamos inicio.bat en /netlogon en dserver00 para que cando os usuarios inician sesión nos clientes Windows se execute ese script, imos facer o mesmo para os clientes Ubuntu.
- Crearemos inicio.sh en /netlogon do servidor.
- Pero nesta ocasión imos conectarnos dende uclient01 ao recurso de netlogon do servidor para crear ese script.
- Isto de ter un script de inicio na rede tamén se pode facer usando nfs. Dá igual o sistema co que nos conectemos ao recurso do servidor, o importante é poder conectarse é poder lanzar un script de rede de inicio de sesión cada vez que un usuario inicia sesión nun cliente e así non ter o contido dese script en cada cliente.
- Así podemos ter ese contido centralizado e modificalo cando desexemos e automaticamente todo cliente executará o que ese script indique cando un usuario inicie sesión.
- Desmontar sistema de ficheiros nfs
-
Iniciamos sesión en uclien01 co usuario uadmin. Conectámonos con smb://dserver00/netlogon
-
Autenticamonos co usuario root, pois é o único que ten permisos físicos na carpeta no servidor para poder escribir.
-
Vemos o contido de netlogon que usan os clientes Windows. Creamos un ficheiro no recurso compartido inicio.sh que se vai executar nos clientes Ubuntu cando un usuario inicie sesión.
-
O contido dese script vai detectar se o usuario que inicia sesión é un alumno/a, se o é, lanza (xdg-open) o aviso dos alumnos en segundo plano (&).
É moi semellante a como se fixo en inicio.bat para clientes windows. -
Agora toca no cliente uclient01 chamar a ese script que esta no servidor. O mellor sitio para facelo é no script que se executa cada vez que un usuario inicia sesión: /etc/profile
Como vimos no xml anterior, no cliente, o recurso netlogon do servidor vai estar montado en /netlogon. Por tanto só temos que chamar ao script do servidor como: sh /netlogon/inicio.sh.
- Visto isto, se o desexásemos o contido do script /opt/engadir_marcador.sh tamén se podería pasar para o ficheiro inicio.sh de netlogon e deste xeito en /etc/profile só teríamos que chamar a inicio.sh e neste script que está no servidor poderíamos facer o que desexáramos e afectaría inmediatamente a todos os clientes.
Iniciar sesión cun usuario do dominio
- Antes de que inicie sesión un usuario non hai puntos de montaxe creados aos recursos do servidor.
- No momento de entrar un usuario pam-mount vai ler o ficheiro /etc/security/pam_mount.conf.xml e montar os volumes nel indicados.
- Iniciar sesión con pia
-
Iniciamos sesión con pia, por exemplo, que é unha alumna:
-
E aí está o contido da súa carpeta persoal, onde podemos ver a carpeta do perfil móbil de windows.
E podemos ver como se lanzou o navegador que ten por defecto para amosar o aviso. -
Vemos os puntos de montaxe que se crearon cando pia iniciou sesión. Filtramos a saída de mount co tipo de sistema de ficheiros cifs.
Instantánea escenario 3.B - SAMBA 3 Linux
- Ao igual que nos escenarios anteriores crear unha instantánea para o escenario 3.B: Samba3 - Clientes Linux, para as seguintes MVs:
- dserver00
- uclient01
- uclient02