Базовая установка и настройка файлового сервера и сервера авторизации
Опубликовано 2024-11-02. Последние изменение 2024-11-05.
Ввиду своей довольно уникальной архитектуры и используемых подходов установка **Plan 9** **[а именно 9front]** может вызвать множество вопросов даже у опытного системного администратора.
Большая часть этой статьи будет представлять из себя переработанную информацию из справки на сайте проекта[^1].
Справка не раскрывает некоторые тонкие моменты, поэтому я постараюсь дополнить её своим опытом.
В процессе я буду использовать виртуальную машину KVM.
-- Не хватай его сразу. Не хватай его сразу, Урри. Выясни сначала как он управляется. Выясни как он управляется сначала.
-- Не понял, повторите!
-- Узнай где у него кнопка!
Перед началом вы должны ответить на несколько вопросов:
- Какую конфигурацию имеет ваша локальная сеть?
- Какое оборудование установленно в вашей машине и поддерживается ли оно в ОС? **[список поддерживаемого оборудования доступен на сайте проекта[^2]]**
- Какое имя будет у машины и вашего пользователя?
Если у вас возникли трудности на этом этапе, то я советую вам прекратить и вернуться позже.
После того, как вы получили ответы на эти вопросы, мы можем идти дальше.
Для начала скачайте подходящий вам установочный **ISO** образ системы с сайта проекта[^3] и создайте загрузочную флешку.
Если вы выбрали для первой попытки установку на виртуальную машину **[что я вам и советую]**, то просто примонтируйте к ВМ образ диска и начните закрузку.
Если всё было сделано правильно вы увидите процесс загрузки.
Также в процессе первой загрузки вам будут заданы несколько вопросов.
В большинстве можно остановиться на значениях по умолчанию **[обычно указаны в квадратных скобках]**, если они доступны.
user[glenda]:
Предлагаемый пользователь по умолчанию - **glenda**.
Запуск системы на этой машине будет происходить под этим пользователем.
Такой пользователь в контексте **Plan 9** зовётся **hostowner** (владелец хоста).
Концепция корневого пользователя **root** была упразднена по причинам проблем с безопасностью.
Владелец хоста имеет высокие полномочия на конкретной машине, но ограничен в доступе к файлам других пользователей.
Для первой установки лучше его не менять.
Просто нажимаем `Enter`.
Следующими вопросами будут запрошены данные о дисплее и мыши:
vgasize is (text, 640x480x8, 1024x768x16, ...) [1024x768x16] monitor is (vesa, xga, lcd, ...) [vesa] mouseport is (ps2, ps2intellimouse, 0, 1, 2) [ps2]
На основании ответов будут установлены переменные окружения `$vgasize`, `$monitor` и `$mouseport`.
Эти значения также будут записаны в файл `plan9.ini`, из которого будут использоваться при последующий загрузках.
- `monitor` - в любое значение, кроме `vesa` будет пропускать эмуляцию **VESA BIOS** и будет выполнятся попытка использования нативного драйвера **VGA** для видео карты.
Список поддерживаемых системой дисплеев и видео карт может быть найден в файле `/lib/vgadb`.
Дополнительную информацию вы можете найти на страницах справки **vga(3)**, **vga(8)** и **vgadb(6)**.
- `vgasize` - используется для хранения разрешения и разрядности дисплея.
Тут можете прописать любое значение, поддерживаемое вашим дисплеем.
- `mouseport` - Значение по умолчанию для `ps2` должно подходить в большинстве случаев.
При установке на ноутбук или при использовании мыши с колесом прокрутки может понадобиться выставить его в `ps2intellimouse`.
После завершения загрузки вы можете изменить установленные значения в файле `plan9.ini`.
Пример содержимого `plan9.ini`:
monitor=vesa vgasize=1024x768x16 mouseport=ps2intellimouse
После ответов на вопросы процесс загрузки попробует запустить стандартный графический мультиплексор **rio**, приветствующий вас серым рабочим столом с запущеным монитором нагрузки **stats** и окном с оболочкой **rc**.
Имейте ввиду, что если пользователь был изменён, то вы увидите просто серый экран.
Инициализация подготовлена только для пользователя **glenda**.
В остальных случаях система остаётся чистой.
Для управления мультиплексером **rio** используется трёхкнопочная мышь.
- ЛКМ - указание фокуса и выделение, ничего особенного;
- СКМ - контекстное меню, которое будет различаться для разных приложений;
- ПКМ - меню **rio**, позволяет создавать, изменять и удалять окна.
Приложения запускаются в окнах **rio**.
Но самое интересно, что в окне **rio** может быть запущен ... **rio**.
И ещё. И ещё.
При работе с flash-накопителя для первого знакомства этого может быть достаточно.
Система будет созранять своё состояние как обычный live-образ любой другой ОС.
Так что вы можете перейти к следующим статьям цикла.
Если же вы достаточно исследовали live-образ **Plan 9** и чувствуете, что готовы к построению полноценной вычислительной сети **[в контексте Plan 9 используется термин grid]** - то мы продолжаем.
Установка выполняется **rc**-сценарием `/rc/bin/inst`.
Чтобы начать установку выполните в терминале команду `inst/start`.
term% inst/start
Следуйте инструкциям, чтобы завершить установку, при необходимости выбрав значения по умолчанию.
Каждый шаг может быть пройден повторно путём ввода его имени в запросе.
Теперь перейдём к шагам установки.
Файловая система `cwfs64x` использует постоянное и временное хранилища на разных разделах.
Файловая система `hjfs` более однородна, но работает медленнее.
Если ваш диск менее 12 ГиБ, то вам необходимо выбрать `hjfs`.
В этом примере мы продолжим используя `cwfs64x`.
You can install the following types of systems: cwfs64x the cached-worm file server hjfs the new 9front file server (experimental!) File system (cwfs64x, hjfs)[cwfs64x]:
На этом шаге нам необходимо создать разделы.
Сценарий установки сообщит вам какие диски он смог обнаружить.
Выбираем тот, что не эмуляция оптического диска и жмём `Enter`.
The following disk devices were found. sdC0 - QEMU DVD-ROM empty 0 3916 (3916 cylinders, 29.99 GB) * p1 sdF0 - Disk to partition (sdC0, sdD0)[no default]: sdF0 The disk you selected HAS NO master boot record on its first sector. (Perhaps it is a completely blank disk.) Shall we create a blank EFI partition table (GPT) or install traditional DOS partition table (MBR)?
Диск у нас пустой, так что создадим свежую **MBR** таблицу.
Install mbr or gpt (mbr, gpt)[no default]: mbr This is disk/fdisk; use it to create a Plan 9 partition. If there is enough room, a Plan 9 partition will be suggested; you can probably just type ’w’ and then ’q’. cylinder = 8225280 bytes
В этом примере мы будем использовать весь диск.
Просто записываем предложенные изменения.
>>> w >>> q
Из-за особенностей **CWFS** нам необходимо выполнить дополнительное разбиения раздела на подразделы.
The following Plan 9 disk partitions were found. /dev/sdF0/plan9 empty 0 62910477 (62910477 sectors, 29.99 GB) Plan 9 partition to subdivide (/dev/sdC0/plan9)[no default]: Use the Plan 9 partition created in the previous step. Type /dev/sdC0/plan9 and hit enter. This is disk/prep; use it to subdivide the Plan 9 partition. If it is not yet subdivided, a sensible layout will be suggested; you can probably just type `w` and then `q`. no plan9 partition table found 9fat 204800 nvram 1 other 8957953 fscache 8957953 fsworm 44789770 >>>
И снова принимаем значения по умолчанию.
>>> w >>> q
Теперь, когда подразделы созданы, мы указываем как их монтировать и форматируем их.
Если предыдущие шаги прошли без проблем, то сценарий установки обнаружит созданные нами разделы самостоятельно.
Просто нажимаем `Enter` на каждом из вопросов.
The please choose your cwfs64x partitions --rw-r----- S 0 glenda glenda 4586471936 Jul 4 13:28 /dev/sdC0/fscache Cwfs cache partition (/dev/sdC0/fscache)[/dev/sdC0/fscache]: --rw-r----- S 0 glenda glenda 22932362240 Jul 4 13:28 /dev/sdC0/fsworm Cwfs worm partition (/dev/sdC0/fsworm)[/dev/sdC0/fsworm]: --rw-r----- S 0 glenda glenda 4586471936 Jul 4 13:28 /dev/sdC0/other Cwfs other partition (/dev/sdC0/other)[/dev/sdC0/other]:
Далее нам будет предложено форматировать (ream) раздел, соглашаемся.
Since this is a fresh install, we choose yes to ream (format) the file system: Ream the file system? (yes, no)[no]: yes Starting cwfs64x file server for /dev/sdC0/fscache Reaming file system bad nvram key bad authentication id bad authentication domain nvrcheck: can’t read nvram config: config: config: auth is now disabled config: config: config: config: config: config: current fs is "main" cmd_users: cannot access /adm/users 63-bit cwfs as of Wed Jul 4 00:59:30 2012 last boot Tue Jul 17 13:34:57 2012 Configuering cwfs64x file server for /dev/sdC0/fscache Mounting cwfs64x file server for /dev/sdC0/fscache % mount -c /srv/cwfs /n/newfs Mounting cwfs64x file server for /dev/sdC0/other % mount -c /srv/cwfs /n/other other
Пришло время сконфигурировать сеть.
We will configure the ethernet. Please choose a method for configuring your ethernet connection. manual - specify IP address, network mask, gateway IP address automatic - use DHCP and SLAAC to automatically configure Configuration method (manual, automatic)[automatic]:
В этом примере я остановлюсь на автоматической конфигурации, так как у меня настроен **DHCP**.
Если вы также будете использовать **DHCP**, то не забудьте зарезервировать адрес на сервере.
Нажмите `Enter`, чтобы перейти к следующему шагу.
Ручная настройка не представляет сложности.
Необходимо просто указать **IP** адрес, маску сети, шлюз и **DNS** сервер.
Configuration method (manual, automatic)[automatic]: manual ip address [no default]: 192.168.2.10 network mask [no default]: 255.255.255.0 gateway address [no default]: 192.168.2.1 dns server [192.168.2.1]: starting ethernet manual config
Укажем сценарию установки где ему искать файлы для установки.
Please wait... Scanning storage devices... /dev/sdC0/9fat /dev/sdC0/data /dev/sdC0/fscache /dev/sdC0/fsworm /dev/sdC0/other /dev/sdD0/data The following storage media were detected. Choose the one containing the distribution. /dev/sdD0/data (iso9660 cdrom) Distribution disk (/dev/sdD0/data, /dev/sdC0/fscache, /)[/]:
Образ CD уже примонтирован в корень, просто укажем `/` и жмём `Enter`.
% mount /srv/boot /n/distmedia Which directory contains the distribution? Location of archives [/]:
И снова, корень CD уже в корне системы, также укажем `/` и жмём `Enter`.
На этом шаге будет производиться копирование файлов дистрибутива системы на сконфигурированные разделы.
Сценарий не отображает прогресс установки.
Следить за процессом можно лишь отслеживая нагрузку на мониторе **stats(8)**.
Процесс занимает от 5 минут до часа в зависимости от скорости работы вашего диска.
По завершении вы должны увидеть следующее сообщение:
Оно означает, что файлы системы успешно скопированы на целевые разделы.
Дадим нашему хосту имя.
По умолчанию будет назначено **cirno**.
Setup network configuration sysname [cirno]: test-fs
Настраиваем часовой пояс.
Setup Time Zone Time Zone (Argentina, Australia_ACT, Australia_Broken-Hill, Australia_LHI, Australia_NSW, Australia_North, Australia_Queensland, Australia_South, Australia_Sturt, Australia_Tasmania, Australia_Victoria, Australia_West, Australia_Yancowinna, Brazil_Acre, Brazil_DeNoronha, Brazil_East, Brazil_West, CET, Canada_Atlantic, Canada_Central, Canada_East-Saskatchewan, Canada_Eastern, Canada_Mountain, Canada_Newfoundland, Canada_Pacific, Canada_Yukon, Chile_Continental, Chile_EasterIsland, Cuba, EET, Egypt, GB-Eire, GMT, HST, Hongkong, Iceland, Iran, Israel, Jamaica, Japan, Libya, Mexico_BajaNorte, Mexico_BajaSur, Mexico_General, NZ, NZ_CHAT, Navajo, PRC, Poland, ROC, ROK, Singapore, Turkey, US_Alaska, US_Arizona, US_Central, US_East-Indiana, US_Eastern, US_Hawaii, US_Michigan, US_Mountain, US_Pacific, US_Yukon, W-SU, WET)[US_Eastern]: GMT
Вводим наиболее подходящий нам из списка и жмём `Enter`.
Настройка загрузки системы.
Setup Plan 9 FAT boot partition (9fat) Plan 9 FAT partition (/dev/sdC0/9fat)[/dev/sdC0/9fat]:
Принимаем значение раздела загрузки по умолчанию.
Все переменные окружения, указанные при первом запуске, сейчас будут сохранены в `/n/9fat/plan9.ini`.
Также ядро системы будет скопировано в раздел **9fat**.
dossrv: serving /srv/dos Initializing Plan 9 FAT partition. % disk/format -r 2 -d -b /386/pbs /dev/sdC0/9fat Initializing FAT file system type hard, 12 tracks, 255 heads, 63 sectors/track, 512 bytes/sec used 4096 bytes % mount -c /srv/dos /n/9fat /dev/sdC0/9fat % rm -f /n/9fat/9bootfat /n/9fat/plan9.ini /n/9fat/9pc % cp /n/newfs/386/9bootfat /n/9fat/9bootfat % chmod +al /n/9fat/9bootfat % cp /tmp/plan9.ini /n/9fat/plan9.ini % cp /n/newfs/386/9pc /n/9fat/9pc If you use the Windows NT/2000/XP master boot record or a master boot record from a Unix clone (e.g., LILO or FreeBSD bootmgr), it is probably safe to continue using that boot record rather than install the Plan 9 boot record.
Так как в нашем случае нет соседней системы мы выбираем запись **Plan 9** в главную загрузочную область и помечаем раздел активным.
Install the Plan 9 master boot record (yes, no)[no default]: yes Mark the Plan 9 partition active (yes, no)[no default]: yes The Plan 9 partition is now marked as active.
Последний шаг отключит образ CD и завершит работу.
Подтверждаем нажатием клавиши `Enter` для перезагрузки компьютера.
Ваша первая установка **9front** завершена.
Поздравляю!
Основано на этом примере - [youtube](https://www.youtube.com/watch?v=wRpCnHTTbGU "Auth & File Server Setup, using 9front").
Выполнить этот шаг будет немного сложнее.
Но его нужно выполнить только единожды, чтобы официально запустить файловый сервер.
Здесь много зависимых этапов, и их нужно выполнить правильно, чтобы все работало.
Поскольку у нас будет комбинация сервера авторизации и файлового сервера, нам нужно будет настроить обе эти системы.
Авторизация будет выполнять проверку паролей, а файловая система будет следить за тем, чтобы у пользователей был доступ к нужным файлам.
Первое, что необходимо сделать, это установить владельца хоста для системы.
Разработчики **Plan 9** отказались от использования корневого пользователя **root**, поскольку это было связано с очевидными проблемами безопасности.
Вместо этого у каждой системы есть назначенный владелец хоста (**host owner**).
Владелец хоста обладает неограниченной властью над любыми процессами, выполняемыми в системе, которой он владеет.
Таким образом, владелец хоста может отключить процессы и получить доступ практически ко всему оборудованию.
В случае с файловым сервером владелец хоста не имеет безграничного доступа к файлам.
Только в особом случае, когда владелец хоста загружается в консольном режиме с отключенной авторизацией.
Мы уже видели раздел **NVRAM** [ранее](#prepdisk), это небольшая часть хранилища, называемая **Энергонезависимой оперативной памятью** (**Non-Volatile RAM**) по историческим причинам, и она содержит токен пароля для владельца хоста.
Это позволяет системе загружаться с авторизацией без необходимости вводить пароль в командной строке загрузки.
Чтобы убедиться, что система использует его, я добавлю его в `plan9.ini`.
Некоторые системы делают это автоматически, но я просто хочу быть уверенным.
Итак, давайте смонтируем раздел **9fat**.
% 9fs 9fat % sam /n/9fat/plan9.ini
Здесь мы можем указать, откуда взять раздел **NVRAM**, и это также может быть задано в виде файла.
bootfile=9pc64 nvram=/dev/sdF0/nvram bootargs=local!/dev/sdF0/fscache mouseport=ps2 monitor=vesa vgasize=1024x768x16 tiltscreen=none
И теперь мы перезагрузим систему, чтобы это вступило в силу.
% fshalt -r
Теперь мы перезагрузили систему с указанным разделом **NVRAM**, и следующим шагом будет запись в него.
- `authid` - будет указывать владельца хоста, которым будет **glenda**.
- `authdom` - в данном случае запрашивается доменное имя.
Если вы используете доменное имя, просто укажите его.
Если нет - укажите что-нибудь в качестве заглушки.
- `secstore key` - используется для другой системы авторизации, и я пока не буду его использовать.
Нажмите `Enter` и оставьте поле пустым.
- `password` - пароль для пользователя **glenda**.
% auth/wrkey authid: glenda authdom: testdom secstore key: password:
Вот и все.
Следующим шагом будет добавление пользователя **glenda** в систему авторизации, и мы также добавим в неё обычного пользователя.
Итак, сначала нам нужно убедиться, что у нас есть доступ к ключам.
% auth/keyfs
Итак, мы начнём с пользователя **glenda**:
- `Password` - введите тот же пароль;
- `Confirm password` - и ещё раз;
- `assign new Inferno/POP secret? [y/n]: n` - пока не важно, просто установите значение "нет";
- `Expiration date (YYYYMMDD or never)[never]:` не будем беспокоиться о сроке истечения, установите значение "никогда";
- `Post id:`, `User's full name:`, `Department #:`, `User's email address:`, `Sponsor's email address:` - это если у вас в офисе полно людей.
% auth/changeuser glenda Password: Confirm password: assign new Inferno/POP secret? [y/n]: n Expiration date (YYYYMMDD or never)[never]: Post id: User's full name: Department #: User's email address: Sponsor's email address: user glenda installed for Plan 9
Вот так-то.
И я добавлю обычного пользователя **testuser**.
В основном параметры все те же.
% auth/changeuser testuser Password: Confirm password: assign new Inferno/POP secret? [y/n]: n Expiration date (YYYYMMDD or never)[never]: Post id: User's full name: Department #: User's email address: Sponsor's email address: user testuser installed for Plan 9
Следующим шагом будет добавление нашего нового **testuser** в файловую систему.
Пользователь **glenda** автоматически был указан в качестве одного из пользователей файловой системы при выполнении базовой установки.
И теперь нам нужно добавить **testuser**, чтобы он также мог владеть файлами.
Для этого нам нужно отправить команду на командный сервер файловой системы.
% echo newuser testuser >>/srv/cwfs.cmd
Итак, теперь новый пользователь **testuser** добавлен в файловую систему **CWFS**.
Следующий шаг - отредактировать файл сетевой базы данных, чтобы назначить эту систему в качестве сервера аутентификации и файлового сервера.
Этот файл находится в `/lib/ndb/local`.
Внизу файла у нас есть пример, который мы можем использовать:
# example: adjust to fit your network #auth=cirno authdom=9front #ipnet=9front ip=192.168.0.0 ipmask=255.255.255.0 # ipgw=192.168.0.1 # dns=192.168.0.1 # auth=cirno # dnsdom=9front # cpu=cirno # smtp=cirno
Так что нам просто нужно сделать нашу версию этой записи:
auth=test-fs authdom=testdom ipnet=testdom ip=192.168.2.0 ipmask=255.255.255.0 ipgw=192.168.2.1 dns=192.168.2.1 auth=test-fs fs=test-fs dnsdom=testdom
Теперь нам нужно добавить еще изменений в `plan9.ini`.
Из-за особенностей с **CWFS** нам нужно внести две правки.
- Во-первых, нужно скопировать файл `plan9.ini`, чтобы загрузить систему в режиме настройки и убедиться, что авторизация в файловой системе работает;
- И нам также нужна окончательная конфигурация `plan9.ini`, чтобы сервер загружался нормально, без необходимости взаимодействия.
Итак, давайте снова смонтируем **9fat** и сделаем копию текущего `plan9.ini` и еще одного, который мы будем использовать позже.
9fs 9fat cp /n/9fat/plan9.ini /n/9fat/plan9.bak.ini cp /n/9fat/plan9.ini /n/9fat/plan9.new.ini
Для существующего файла первое, что нам нужно сделать, это изменить его с терминала по умолчанию на **CPU** сервер.
А затем к параметрам загрузки мы добавим параметр `-c` для диска для файловой системы, и это переведет его в режим настройки.
bootfile=9pc64 nvram=/dev/sdF0/nvram service=cpu bootargs=local!/dev/sdF0/fscache -c mouseport=ps2 monitor=vesa vgasize=1024x768x16 tiltscreen=none
Для нового файла мы добавим опцию `-a tcp!*!564` в параметры диска.
Это сообщит системе, что она прослушивает **TCP** порт 564 для получения команд для подключения к файловой системе.
Это также будет **CPU** сервер, и мы изменим параметры загрузки на `nobootprompt`, чтобы он не просил нас нажимать `Enter`.
bootfile=9pc64 nvram=/dev/sdF0/nvram service=cpu nobootprompt=local!/dev/sdF0/fscache -a tcp!*!564 mouseport=ps2 monitor=vesa vgasize=1024x768x16 tiltscreen=none
Итак, мы подготовили оба файла сейчас, потому что после перезагрузки системы графика будет отключена, поэтому не будет работать **rio**, и мы не сможем редактировать файлы с помощью **acme** или **sam**.
Вы можете использовать **ed**, но проще подготовить их сейчас и использовать просто **mv**, чтобы переименовать их позже.
Итак, мы перезагрузили систему, и вы можете видеть, что она ждет, когда я введу значение по умолчанию, которое имеет символ `-c`.
bootargs is (tcp, tls, il, local!device)[local!/dev/sdF0/fscache -c]
Нажмите `Enter`.
Далее появляется ввод `config`.
На этом этапе нам нужно ввести `noauth`.
Система сообщит, что авторизация отключена.
Я снова наберу `noauth`, и авторизация теперь включена.
Затем введите `end` и продолжайте загрузку системы.
config: noauth auth disabled config: noauth auth enabled config: end
Как вы можете видеть, **rio** не запущен.
Это просто приглашение командной строки.
Мы смонтируем раздел **9fat** и переместим файл `plan9.ini` с параметром конфигурации.
А затем переместите наш новый файл `plan9.ini` и перезагрузите систему еще раз.
# 9fs 9fat # cd /n/9fat/ # mv plan9.ini plan9.config.ini # mv plan9.new.ini plan9.ini # fshalt -r
Теперь вы можете выключить систему, а затем отключить монитор, клавиатуру и мышь и загрузить ее обратно.
Она будет спокойно работать и ждать запросов к файловому серверу.
Теперь вам нужен **drawterm**[^4] в вашей основной системе для подключения к файловому серверу.
drawterm -h 192.168.2.10 -u testuser -a 192.168.2.10
Введите пароль пользователя и вуаля!
Теперь вы подключены к файловому серверу.
Вы также можете получить доступ к файлам вашего локального компьютера в `/mnt/term`.
Это довольно полезно, вы можете написать какое-нибудь программное обеспечение в своем обычном текстовом редакторе и протестировать его в среде **Plan 9** без копирования каких-либо файлов.
На этом настройка фалового сервера с авторизацией завершена.
В последующих статьях мы подробней остановимся на применении **Plan 9**, работе в среде и расширении нашей сети.
[1] 9front FQA 4 - 9front Installation Guide
© 2024 POLYSERV BY MODERN HOME