NFS home para vários computadores

2

Estou aqui para perguntar algo que está me levando muito tempo e agora não sei como continuar, e essa é uma comunidade realmente grande (e incrível).

Bom, o problema é que eu estou tentando fazer um sistema Linux distribuído para escolas e universidades, ele pega o SquashFS de um servidor Apache, o initrd e o kernel carregado via TFTP e quando ele inicia, ele carrega todo o sistema na RAM. A idéia é fazer o mais seguro possível, e quando o computador desliga, todos os dados do sistema estão limpos, mas o problema é com a pasta pessoal ...

A pasta home está em um servidor NFS e estou tentando fazer uma pasta diferente para cada usuário, usando o endereço MAC do computador para criar uma pasta no servidor NFS e conectar-se a ela, mas não saiba como passar o endereço MAC no tempo de inicialização para criar a pasta na primeira vez, e se a pasta inicial desse MAC existir, conecte-se a ela, usando fstab como agora com uma pasta à prova de usuário.

Obrigado antecipadamente!

    
por Brokes 12.01.2017 / 13:08

1 resposta

3

Eu fiz uma coisa muito parecida com um sistema MythTV. Cada netboots de máquina frontend sem disco usando DHCP PXE e TFTP. O sistema está executando o Ubuntu 16.04 LTS. (IP 1.1.1.1 é a máquina cliente e 2.2.2.2 é o servidor)

No /etc/dhcp/dhcpd.conf, o IP e o nome do host são atribuídos com base no MAC:

group {
    use-host-decl-names on;  #forces hostname to host
    host bedroom {
        hardware ethernet 00:00:00:00:00:00;
        fixed-address 1.1.1.1;
    }
}

O TFTP chama um script de montagem no init de inicialização, que monta uma home do NFS com base no nome do host. Eu usei o nome do host para legibilidade ao navegar pela estrutura de pastas; você poderia analisar o MAC e usá-lo para o nome da pasta. Arquivo padrão do TFelin pxelinux.cfg:

LABEL linux
  DEFAULT vmlinuz-4.4.0-53-generic root=/dev/nfs initrd=initrd.img-4.4.0-53-generic nfsroot=2.2.2.2:/pxeroot init=/boot/mountscript.sh ip=dhcp rw

mountscript.sh:

#!/bin/bash
HOSTNAME='hostname'
MOUNT_OPTS="rw,intr,async,bg,tcp"
mount -t nfs 2.2.2.2:/path/to/homes/home-${HOSTNAME} /home -O MOUNT_OPTS

exec /sbin/init </dev/console >/dev/console 2>&1

Além disso, o / etc / exports tem configurações de exportação do NFS que mapeiam a pasta base necessária para o endereço IP estático exclusivo:

/path/to/homes/home-bedroom 1.1.1.1(rw,async,insecure)

A pasta New homes e as entradas de exportação do NFS para cada nova máquina devem ser adicionadas manualmente.

Observe: este exemplo aplica-se a máquinas de usuário único e uso único que armazenam algumas informações de configuração exclusivas (comandos IR para a TV à qual ele está ligado, principalmente) na pasta principal. Ele alcança seu objetivo declarado de uma pasta pessoal por MAC, mas eu suspeito que a pasta base por usuário é o que você está realmente procurando como menciona joeqwerty. Esta solução não permite que um usuário faça login em qualquer máquina, e exigiria que as pastas pessoais sejam criadas por usuário, por máquina. Isso também significa que sem uma teia confusa de links simbólicos, não haveria uma maneira fácil de acessar os mesmos arquivos em computadores diferentes.

    
por 12.01.2017 / 15:28