Назад | Перейти на главную страницу

NFS home для нескольких компьютеров

Я здесь, чтобы спросить о чем-то, что отнимает у меня много времени, и теперь я не знаю, как продолжить, а это действительно большое (и потрясающее) сообщество.

Ну, проблема в том, что я пытаюсь создать распределенную систему Linux для школ и университетов, она берет SquashFS с сервера Apache, initrd и ядро ​​загружаются через TFTP, и при запуске загружает всю систему в ОЗУ. . Идея в том, чтобы сделать максимально безопасным, и при выключении компьютера все данные системы чистые, но проблема в домашней папке ...

Домашняя папка находится на сервере NFS, и я пытаюсь создать отдельную папку для каждого пользователя, используя MAC-адрес компьютера, чтобы создать папку на сервере NFS и подключиться к ней, но я не знаю, как это сделать. передайте MAC-адрес во время загрузки, чтобы создать папку в первый раз, и если домашняя папка этого MAC существует, подключитесь к ней, используя fstab, как сейчас, с папкой, защищенной от пользователя.

Заранее спасибо!

Я проделал очень похожую вещь для системы MythTV. Каждая бездисковая клиентская машина загружается по сети с использованием DHCP PXE и ​​TFTP. Система работает под управлением Ubuntu 16.04 LTS. (IP 1.1.1.1 - это клиентская машина, а 2.2.2.2 - сервер)

В /etc/dhcp/dhcpd.conf IP и имя хоста назначаются на основе 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;
    }
}

TFTP вызывает сценарий монтирования при инициализации загрузки, который монтирует дом NFS на основе имени хоста. Я использовал имя хоста для удобства чтения при просмотре структуры папок; вы можете проанализировать MAC и использовать его в качестве имени папки. Файл TFTP 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

Кроме того, в / etc / exports есть настройки экспорта NFS, которые сопоставляют требуемую домашнюю папку с уникальным статическим IP-адресом:

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

Папку New Home и записи экспорта NFS для каждой новой машины необходимо добавлять вручную.

Пожалуйста, обратите внимание: этот пример применяется к одноразовым однопользовательским машинам, которые хранят некоторую уникальную информацию о конфигурации (в основном ИК-команды для телевизора, к которому он подключен) в домашней папке. Он достигает заявленной вами цели - домашней папки для каждого MAC, но я подозреваю, что домашняя папка для каждого пользователя - это то, что вы на самом деле ищете, как упоминает joeqwerty. Это решение не будет разрешить пользователю войти в систему на любом компьютере, и бы требовать, чтобы домашние папки создавались для каждого пользователя и для каждой машины. Это также означает, что без беспорядочной сети символических ссылок не было бы простого способа получить доступ к одним и тем же файлам на разных компьютерах.