DESCR.HTML 100644 1773 1773 12523 7064203176 10665 0 ustar grey grey
В дереве каталогов дистрибутива FreeBSD все разложено по "полочкам"- директориям:
Как правило, в каждом таком разделе лежит соответствующий архив (чаще всего порезанный на небольшие куски).
Исключение могут составлять commerce и xperimnt - там внутри свое деление на поддиректории для каждого продукта в отдельности.
И, также, разделы src (исходные тексты всей ОС) и XF86... (система X-Window) остоят из нескольких архивов, так что вы можете выбрать там только те части, которые вам необходимы.
Как я уже сказал, в этом разделе лежит целая пачка архивов (разбитых на отдельные кусочки). Название каждого начинается на букву "s" (очевидно, от слова source), а по остальным буквам можно догадаться - что именно находится в этом архиве.
Исходные тексты программ, которые лежат в
Кроме того, программы, вошедшие в основной комплект, но взятые у других команд разработчиков могут быть в архивах :
scontrib и sgnu
(я так и не понял - по каким критериям их разделили, GNU'шные программы встречаются и в scontrib)
Другие исходники:
Этот раздел определяет - поддержка каких файловых систем будет включена в ядро.
Обратите внимание, если вы не включите поддержку какой-либо FS, это еще не означает, что вы не сможете ей воспользоваться. Некоторые из модулей поддержки FS оформлены в виде lkm(загружаемые модули ядра) и могут "подстыковываться" к ядру по мере необходимости во время работы.
Однако, некоторые из типов FS не имеют таких загружаемых модулей и, поэтому, их поддержка должна быть "встроена" в ядро (если, конечно, она вам нужна).
И, кроме того, обязательно встраивать в ядро поддержку той FS, с которой будет грузиться ваша система (где находятся /, /usr и /tmp). Обычно, это FFS. Но, если вы, например, собираетесь делать систему загружаемую по сети (типа discless station), то необходимо включить в ядро поддержку NFS (Network File System), хотя в других случаях она может подгружаться во время работы.
Кстати, интересно - с какими опциями скомпилирован lkm для NFS?
Эти "псевдо-" файловые системы предназначены для того, чтобы обращаться (считывать/изменять) к различным объектам операционной системы и их некоторым параметрам как к файлам, то есть обычными операциями чтения/записи файлов.
Какие из них вам нужны - это определяется теми прикладными программами, которые захотят их использовать.
Во всяком случае, все они существуют в виде lkm (кроме DEVFS) и, следовательно, включать их в ядро нет необходимости.
Это модули, которые используются "поверх" (или "между") реальных FS для некоторых дополнительных действий.
Все эти модули существуют в виде lkm и, следовательно, включать их в ядро нет необходимости.
Говорит о том, что архитектура процессора из семейства Intel 386.
Обязательный параметр.
"Подстройка" под конкретный тип процессора.
Можно оставить только тот тип, который у вас реально стоит.
Однако, если вы в дальнейшем захотите поменять процессор, или
просто перетащить винчестер в машину с другим CPU, то могут возникнуть
проблемы. Во всяком случае - ничего страшного не произойдет, если вы
оставите здесь несколько разных строчек.
Обязательно должна быть хотя бы одна из этих строчек.
Это собственно имя конкретной конфигурации ядра. Можно поставить
такое же, как название конфигурационного файла (MyConfig - например).
Но строчка должна быть обязательно.
Вообще-то по смыслу - это максимальное количество юзеров, одновременно
работающих на машине. Однако, исходя из этого количества вычисляется
размер некоторых таблиц в ядре (количество одновременно работающих
процессов, количество открытых файлов, количество буферов памяти и т.п.).
Подробнее можно посмотреть в файле /usr/src/sys/conf/param.c
Поэтому, даже если на вашей машине и не планируется много юзеров,
но вы собираетесь запускать одновременно много приложений (сервер ftp,
http, mail'овый, базы данных и т.п.), лучше сделать это число побольше.
Естественно, этот параметр - обязательный.
Кроме того, заметьте, что wd0 - драйвер IDE-винчестеров. Если у вас
SCSI-винчестер, то это слово нужно поменять на sd0. Ну и, возможно,
номер винчестера у вас будет не 0.
Но строчка должна быть обязательно.
Это мои комментарии к файлу LINT из исходников FreeBSD 2.2.1. Я выкинул из него наиболее экзотические опции. Которые, обычно, сопровождаются комментариями типа - "не работает и оставлено только для тех, кому будет интересно там покопаться и пофиксить баги" или просто "пока не работает". Я, также, выкинул те строчки, смысл которых не знаю и, следовательно, ничего умного сказать о них не могу. Если вам интересно - читайте оригинальный LINT или ищите разъяснения на www.freebsd.org
Будем считать, что дистрибутив вам доступен для просмотра и копирования. Если он находится на CD, отдельной партиции винчестера или доступен по NFS - смонтируйте его в любую подходящую директорию.
Если вы можете скопировать его через FTP или через флопики - выберите ту часть, которая вас интересует (можете посмотреть "Содержание дистрибутива FreeBSD") и скопируйте в подходящую директорию.
Если речь идет о "монолитных" частях дистрибутива (info, games, manpages и т.п), то забирайте все, что лежит в соответствующей директории дистрибутива. Если вам нужны исходники (директория src), то выберите - какой из архивов вас интересует и берите все файлы с таким названием. Например, если вам нужны исходники ядра, берите все файлы с именем ssys (ssys.aa, ssys.ab и т.д.). Кроме того, очень полезно взять еще файл install.sh из этой же директории.
Несколько слов о том, что это за файлы. На самом деле это архив *.tgz (tar-архив сжатый GNU zip'ом), только порезанный на кусочки программой split. Эти кусочки можно "склеить" обратно в единый файл командой cat после чего обращаться с ним как и с другими файлами типа tgz.
Однако, вам этого делать не обязательно.
Просто запустите командный файл install.sh из этой директории:
sh install.sh
он сам выполнит последовательно команды cat, которая "сольет" кусочки в единый файл и tar (с соответствующими ключами), которая развернет получившийся архив в нужную директорию. Если вы хотите развернуть какой-либо архив из исходников, то install.sh нужно указать в качестве аргумента имя архива (без начальной буквы "s") или all, если вы хотите развернуть все исходники. Например, для тех же исходников ядра:
sh install.sh sys
Все вышеописаные действия можно сделать и с помощью программы sysinstall. Однако, вручную можно сделать и более "тонкую" работу. Например, "вытащить" исходники только одной конкретной программы. Или "достать" из дистрибутива сдержимое директории /etc, какой она была в оригинале (если вы вдруг безнадежно испортили какой-нибудь файл при настройке).
Прежде всего, определите - в каком из дистрибутивных архивов лежит то, что вам нужно. Если речь идет об исходниках какой-то программы, найдите саму программ в своей развернутой системе (например, с помощью команды locate). По названию директории, в которой она находится, можно определить в каком из архивов искать ее исходники (см. "Содержание дистрибутива FreeBSD"). Естественно, если вам надо саму программу в бинарном виде или файлы из /etc, то их надо искать в той части дистрибутива, которая называется bin.
Теперь просмотрите соответствующий архив.
cat file.?? | tar tzvf - | more
(вместо more лучше использовать less, если он у вас уже стоит)
естественно, вместо file в команде должно быть имя конкретного архива.
Если вы не обнаружили в архиве то, что искали - попробуйте просмотреть другие архивы (например, часть исходников лежит в архивах scontrib и sgnu).
Если вы нашли, то что искали, можно приступать к "извлечению" из архива.
Решите, в какую директорию вы хотите положить извлеченное и запускайте
команду
cat file.?? | tar xzf - -C "куда положить" "что взять"
Например:
cat sgnu.?? | tar xzf - -C /home/vasia */uucp
Обратите внимание, что в архиве может быть большое дерево из директорий, и, те файлы, которые вам нужны, могут иметь длинный "префикс" из названий поддиректорий (так файлы-исходники uucp в архиве sgnu, выглядят как gnu/libexec/uucp/...). Поэтому в команде, в том месте, где "что взять", надо либо прописать начало имени полностью - gnu/libexec/uucp, либо начать со звездочки - */uucp. Кстати, в директории, куда вы извлекаете файлы, в этом случае создастся соответствующий кусочек дерева из архива. То есть, директория gnu, в ней - libexec, а в ней - uucp со всем своим содержимым.
Подробности о других возможностях программы tar можно почитать в
соответствующем man'уале
man tar.
Здесь все, что относится к поддержке сети (кроме драйверов самих "железных" сетевых карт).
Включает в ядро поддержку TCP/IP.
Скорее всего, вам это необходимо.
Поддержка IPX.
Насколько вам это нужно решайте сами. В настоящее время в FreeBSD есть
только маршрутизатор IPX. Ни серверной, ни клиентской программы для сетей
Novell NetWare (где в основном и используется IPX) в FreeBSD нет.
(Вообще-то, "софт" для сетей Novell NetWare под FreeBSD существует
в виде коммерческого продукта - http://www.netcon.com/.
Но он "родной" поддержкой IPX не пользуется и, соответственно,
эта опция к нему отношения не имеет.)
Не забудьте, что FreeBSD понимает (на ethernet) только фреймы Ethernet_II.
При включенной поддержке IPX определяет - выводить ли сообщения (через
syslogd) о каждом "отфорварденом" IPX пакете (1 - выводить, 0
- нет).
По умолчанию этот параметр - 1. Так что, для подавления лишней диагностики
желательно эту опцию включить.
При включенной поддержке IPX определяет - выводить ли сообщения об ошибках
при работе с IPX пакетами (1 - выводить, 0 - нет).
По умолчанию этот параметр - 0. Так что, в таком виде эта опция особого
смысла не имеет, а вот для того, чтобы включить эту диагностику, вставте
эту опцию, заменив 0 на 1.
Ничего, кроме того, что в комментарии, сказать не могу.
"Драйвер" loopback интерфейса. Используется во многих ситуациях.
Поэтому, это устройство должно быть обязательно.
Общие подпрограммы для всех ethernet'овских драйверов (независимо, какая
карточка у вас стоит).
Количество "псевдо-девайсов" значения не имеет (даже если у вас
несколько ethernet'ов).
Поэтому, если у вас используется хоть какой-нибудь ethernet-адаптер,
эта строчка должна быть обязательно.
Общие подпрограммы для всех fddi драйверов.
Если у вас какая-либо fddi карта, эта строчка обязательна.
Драйвер SLIP (протокол для передачи IP через COM-порт и, соответственно,
через модем).
Естественно, у вас должны быть включены драйверы для COM-портов (в разделе
hardware). Эта строчка только определяет - сможете ли вы на них использовать
SLIP.
Количество "псевдо-девайсов" в данном случае важно, именно столько
SLIP-коннектов вы сможете поддерживать одновременно (лучше всего их иметь
столько, сколько у вас COM-портов).
Подробнее - man sl.
Драйвер PPP (как и SLIP это протокол для передачи IP через COM-порт).
Комментарии те же, что и для "pseudo-device sl" (заменяя SLIP
на PPP :-).
Подробнее - man 4 ppp.
Драйвер PPP для синхронных последовательных каналов.
Нужен в том случае если у вас есть специальная карточка (ar,cx,sr).
Это драйвер для программ, которые "подсматривают" траффик
через какой-нибудь сетевой интерфейс (tcpdump и т.п.). Кстати, этот драйвер
может потребоваться и другим программам (например, DHCP-серверу).
Подробнее - man bpf.
Полезно их иметь (и побольше :-).
Важное замечание!
Поскольку через этот "девайс" соответствующие программы могут
просматривать содержимое пакетов, "пробегающих" по сети, юзер,
запустивщий программу, может подсмотреть чужие пароли, содержимое "пролетающих"
писем, файлов и т.п. Поэтому, bpfilter может оказаться не только
полезной "фичей", но и опасной. К счастью, по умолчанию, соответствующие
устройства /dev/bpf* доступны для чтения только root'у.
Так вот. Не надо менять права доступа к этим устройствам. Будет
лучше, если "рядовые юзеры" не смогут ими воспользоваться.
Это устройство аналогично устройству null для файлов. То есть в него
можно посылать пакеты "в никуда". Включено в систему для тестов.
В реальной работе вещь практически бесполезная. Можно выкинуть.
Это устройство используется только программой ppp (смотри man 8 ppp).
Если вы этой программой не пользуетесь (не путайте ее с pppd), то
и устройство вам не нужно.
Нужна только для совместимости с очень старой реализацией TCP протокола
(на других машинах).
Скорее всего, вам она не нужна.
Вставляет в ядро поддержку маршрутизации пакетов с multicast адресами.
Обратите внимание, эта опция нужна только если вы собираетесь маршрутизировать
(пропускать через свою машину из одной подсетки в другую) такие пакеты
с помощью mrouted (смотри man mrouted). Для того, чтобы ваша машина
могла принимать и посылать multicast-пакеты, эта опция НЕ нужна.
Короче, вам она врядли понадобится.
Поддержка FireWall. В данном случае это означает включение в ядро фильтра
для IP пакетов, который может выборочно запрещать/разрешать прохождение
через сетевые интерфейсы определенных пакетов (в зависимости от адреса
"кому" или "от кого", номера TCP-порта и т.п.). Кроме
того, этот модуль может считать количество пакетов (прошедших или, наоборот,
задержанных).
Сами правила (кого куда пускать/не пускать) задаются с помощью программы
ipfw (можете почитать man ipfw).
Важное замечание: в последних версиях FreeBSD, если FireWall включен
в ядро, по умолчанию все пакеты запрещаются. Поэтому, не забудьте сразу
же настроить этот firewall в файле /etc/rc.firewall и указать, что он у
вас есть, в файле /etc/sysconf (или /etc/rc.conf).
Добавляет в модуль FireWall вывод сообщений (через syslogd) о каждом
"загубленном" пакете.
Скорее всего, это лишнее.
Если вы включили опцию IPFIREWALL_VERBOSE, то эта строчка ограничивает
количество сообщений. Будут выводится только первые 100 (в данном примере).
После этого сообщения прекратятся.
Наверное, с этой опцией будет лучше.
Эта опция добавляет к FireWall еще возможность некоторые IP-пакеты "заворачивать"
на дополнительную обработку в прикладные программы (основные проверки делаются
в ядре). С помощью этого механизма вы можете писать свои программы, которые
смогут выполнить более сложную фильтрацию пакетов или даже их преобразование
(NAT, тунель IP в IP, и т.п.). Кстати, NAT-демон, использующий этот механизм
уже существует.
Подпробнее man divert.
Вещь полезная, если, конечно, вы знаете, что с ней делать :-).
Включает в подпрограммы TCP дополнительный код для диагностики. Похоже,
нужна только разработчикам.
PACKAGES.HTML 100644 1773 1773 11202 7064203177 11175 0 ustar grey grey
"Пакеты" - это архивы типа *.tgz (tar-архив, сжатый GNU zip'ом), в которых лежат уже собранные бинарники. А, также, мануалы к ним, необходимые конфиги и т.п.
Естественно, бинарники собраны под конкретную версию системы, поэтому желательно их не путать. Хотя это и не всегда критично.
Также, в этих архивах лежат несколько воспомогательных файлов, которые позволяют устанавливать их автоматически.
Используя эти файлы, утилита установки пакетов раскладывает все на свои места и регистрирует пакет.
Кроме того:
Некоторые пакеты "опираются" на другие. То есть для нормальной работы
пакета необходимо, чтобы у вас уже был установлен какой-то другой пакет
или пакеты (обычно это библиотеки). Естественно, в таких случаях программа
установки проверяет наличие всего необходимого.
При установки некоторых пакетов требуется выполнить какие-то дополнительные действия кроме просто раскладывания файлов по директориям. В таком случае в пакет добавляется "инсталляционный скрипт" (командный файл), который утилита установки и запустит в нужный момент.
В директории /var/db/pkg создается директория с тем же названием, что и пакет, в которую помещаются несколько файлов. В этих файлах находится
Все эти данные используются соответствующими утилитами, которые
Однако, все эти файлы просто текстовые и их легко можно посмотреть любым редактором/просмотрщиком.
Очень просто
pkg_add <имя архива>
Дальше все сделается автоматически. Хотя, если в пакете есть "инсталляционный скрипт", он, возможно, захочет задать вам несколько вопросов.
Еще, возможно, вам всетаки придется потом "вручную" отредактировать конфигурационные файлы. Но это уже зависит от той программы, которую вы ставите.
pkg_delete <имя пакета>
Точное имя пакета можно подсмотреть в /var/db/pkg. (Даже если вы каждый день пользуетесь программой elm, например, - это еще не значит, что вы безошибочно назовете имя пакета, откуда его поставили - elm-2.4ME+8 :-)
При удалении пакета могут возникнуть некоторые сложности.
Во-первых, если пакет используется другими пакетами, утилита откажется
его удалять. Однако ее можно заставить это сделать с помощью ключа -f.
Во-вторых, если при установке пакета для него специально создавались
какие-либо директории, обычно, при удалении пакета они не удаляются.
Опять же, утилиту удаления можно заставить это делать ключем -d.
И, наконец, кое-какой "мусор" все равно может остаться. Например, если
для какой-то программы каждый пользователь может иметь собственный конфиг
в домашней директории, естественно, никто их подчищать не будет.
man pkg_add - установка пакетов
man pkg_delete - удаление пакетов
man pkg_info - вывод информации об установленных пакетах
Ну, и те, которые будут указаны в этих мануалах в разделе
See Also (смотри также...).
В некоторых версиях FreeBSD есть еще утилита pkg_manage, которая должна была по замыслу авторов объединить в себе все функции вышеперечисленных. Но, потом от нее отказались (говорят, из-за повышенной глючности :-). Возможно, в последующих версиях она опять появится.
PORTS.HTML 100644 1773 1773 552 7064203177 10674 0 ustar grey greyВообще-то, установка ports подробно описана в /usr/share/doc/handbook/. Поэтому я пока эту часть не описываю.
REBUILD.HTML 100644 1773 1773 21406 7064203177 11114 0 ustar grey greyПри инсталяции FreeBSD у вас появится в системе ядро, которое вполне работоспособно. Зачем его переделывать?
Дело в том, что это ядро (так называемая GENERIC конфигурация) как раз предназначена для того, чтобы система успешно развернулась на "железе" любой конфигурации (из поддерживаемых, конечно).
В эту конфигурацию встроена поддержка ВСЕХ типов накопителей (HDD и CD) и ВСЕХ сетевых карт, которые на данный момент поддерживаются FreeBSD. Это вполне логично - вы должны иметь возможность поставить свой Unix и дополнительные программы на тот HDD, который имеется у вас в машине и суметь войти в сеть, какой бы сетевой карточкой вы ни пользовались.
В то же время, в ядро не включены некоторые полезные модули, которые могут вам понадобится в дальнейшем, особенно, если вы хотите использовать вашу машину в качестве сервера. (Например - поддержка firewall, PPP-сервера, bpf и т.п.).
Итак. Перегенерировать ядро стоит для того чтобы -
- убрать все лишнее (драйверы устройств, которых у вас нет);
- добавить то, чего не хватает.
Первое позволит вам ускорить загрузку (так как система не будет тратить время на поиск и тестирование несуществующих в вашей машине устройств) и сэкономить место в ОЗУ, занимаемое ядром.
Ну, а без второго, скорее всего, вы не сможете решить свои задачи :).
В общем виде этот процесс выглядит так:
- развернуть исходники ядра (я обычно заказываю их в процессе инсталяции,
но если вы этого не сделали, то можно добавить их "вручную");
- составить свою конфигурацию (конфигурационный файл);
- запустить программу config, которая создаст необходимые файлы
*.h и *.c в соответствии с вашей конфигурацией;
- скомпилировать новое ядро с помощью программы make;
- установить новое ядро на место;
- перезагрузиться.
Теперь более подробно.
Прежде всего посмотрите в директорию
/usr/src/sys
если она не пустая, то все что вам нужно уже на месте. И вы можете спокойно перейти к следующему пункту.
В противном случае, вам надо взять из дистрибутива нужные файлы и
установить их.
Не забудьте, что вам в данном случае необходима только та их часть,
которая называется sys.
Перейдите в директорию /usr/src/sys/i386/conf.
Здесь имеются два конфигурационных файла GENERIC и LINT. Первый представляет собой конфигурацию того ядра, которое установилось у вас при инсталяции системы. Вы можете посмотреть там - что в данный момент может ваше ядро.
Второй же файл представляет собой скорее описание всех возможных элементов конфигурационного файла, чем реальную конфигурацию. Если вы попытаетесь построить ядро в такой конфигурации, оно, скорее всего даже не будет работать. Во всяком случае, памяти "отожрет" по максимуму :).
Вам необходимо составить свой файл. Его название значения не имеет. Можете назвать его MyConfig или MyComputer. Я обычно даю ему то же название, что и доменное имя машины.
В качестве основы для нового файла вы можете использовать один из уже имеющихся файлов - GENERIC или LINT.
Если вы возьмете за основу GENERIC, то вам придется убрать оттуда описания всех лишних устройств и дописать необходимые вам options.
Если же вы возьмете за основу LINT, то все редактирование будет заключаться в удалении всего ненужного. Однако, это может оказаться весьма утомительным занятием.
Итак. Скопируйте один из имеющихся конфигов
cp GENERIC MyConfig
или
cp LINT MyConfig
И подправьте его любым текстовым редактором.
Hint: Если вы не успели еще поставить никакого текстового редактора "с человеческим лицом", можно использовать редактор ee, который у вас наверняка уже стоит. Он довольно простой, но вполне полноценный экранный редактор.
Как я уже сказал, основным "мануалом" по составлению новой конфигурации служит файл LINT. Причем, там должны быть описаны самые "свежие" options, которые появились в той версии, которую вы ставите, и еще не описаны в других "мануалах". (К сожалению, "должны быть" и "есть" - не одно и то же.)
На всякий случай я попытался написать свои "Комментарии к config файлу".
После того, как вы закончили редактировать свою конфигурацию (пусть она называется MyConfig, например), наберите команду
config MyConfig
Она создаст в директории /usr/src/sys директорию compile/MyConfig (о чем и сообщит вам в конце своей работы) и поместит туда файлы, необходимые для компиляции ядра.
Перейдите в директорию /usr/src/sys/compile/MyConfig и наберите команду
make
она сделает все что нужно.
Учтите, что kernel - достаточно сложная программа, поэтому ее компиляция
потребует довольно много времени. От 15-20 минут на Pentium'е до часа,
на 386 процессоре.
Если в процессе компиляции обнаружатся фатальные ошибки, придется пересмотреть свой конфиг, исправить его и повторить пункты 2.3 - 2.4.
(У меня такие случаи были, когда я попросил некоторые опции, возможные только для Pentium, забыв указать в начале файла, что хочу поддержку процессора i586)
После того, как компиляция ядра успешно завершилась наберите комманду
make install
она переименует старое ядро в kernel.old и поместит в корневую директорию ваш новый kernel.
После этого можно (и нужно) перегрузить компьютер.
Если загрузка нового ядра не получилась (такое тоже возможно), вы можете загрузится со старым ядром. Для этого, в начале загрузки на подсказку Boot: надо быстро сказать kernel.old.
Естественно, после этого надо снова вернуться к редактированию вашей конфигурации и повторить все последующие пункты.
Только не торопитесь. Если новое ядро опять окажется неработоспособным,
вы можете попасть в неприятную ситуацию, так как после очередного
"make install" -
kernel.old - предыдущая неработающая версия kernel
kernel - новая, столь же бесполезная.
Конечно, если вы не пожалели места на диске, у вас должен был остаться в корневой директории файл kernel.GENERIC и вы можете всегда загрузить его. Однако, в остальных случаях он не нужен, поэтому я, например, его обычно удаляю.
А чтобы при этом не попасть в вышеописаную ситуацию, можно переименовать пока еще работающий kernel.old в kernel.work или kernel.original и продолжать свои эксперименты. Во всяком случае, у вас всегда останется по крайней мере один "загружабельный" вариант ядра.
Если вы добавили в конфигурации ядра устройства (реальные или pseudo-device), возможно потребуется создать для них файлы-устройства в директории /dev.
Какие-то общие рекомендации по этому поводу дать трудно, поскольку это зависит от того - какие устройства вы добавляли в конфиг-файл, а их много разных.
Во всяком случае, если вы знаете какого файла (в /dev) не хватает, его можно создать с помощью программки MAKEDEV, которая лежит в той же /dev. Это даже не программа, а командный файл, в начале которого есть коментарии, в которых более-менее подробно описаны возможные аргументы (имена устройств) для MAKEDEV.
И еще, поскольку, /dev наверняка не прописана в вашем PATH, запускать ее нужно /dev/MAKEDEV ... , или, если вы находитесь в самой директории /dev, то ./MAKEDEV ... SYSINST.HTML 100644 1773 1773 2704 7064203177 11162 0 ustar grey grey
Надеюсь, что вы уже точно знаете - что именно из дистрибутива вам нужно и откуда его (дистрибутив) можно взять. Итак...
/stand/sysinstall
Configure - Do post-install configuration of FreeBSD
Distributions - Install additional distribution sets
> > Custom - Specify your own distribution set
Вот, в общем, и все. Если вы правильно указали где брать дистрибутив все поставится автоматически. Можно выходить из программы.
USERS0.HTML 100644 1773 1773 2752 7064203177 10772 0 ustar grey grey Unix - система многопользовательская.
Значит, для нормальной работы нужно...
Во-первых, разграничить права различных юзеров - какие файлы они
могут читать/писать/изменять, какие программы запускать и т.п.
Во-вторых, дать возможность каждому юзеру создавать свою "среду обитания"
(environment) - иметь свои настройки для любимых программ, свои
папки-директории, настройки терминала и т.п.
Для этого в системе должна быть какая-то база данных (пусть даже
очень примитивная), в которой хранятся основные сведения о каждом
юзере, допущеном к работе на данной машине.
(Естественно, все вышесказанное относится к любой многопользовательской
системе, но в данном случае речь об Unix'е).
Итак. В Unix такая запись в соответствующей БД, содержащая сведения об юзере называется user account. Для того, чтобы допустить нового пользователя в систему, необходимо создать для него этот account.
Слово "account" обычно переводится как "банковский счет". Понятно, что в данном случае это не очень подходящий перевод. Поэтому, как мне кажется, наиболее подходяшим по смыслу будет - "личная учетная карточка пользователя". Примерно так я и буду называть его (или ее) в дальнейшем.
USERS10.HTML 100644 1773 1773 2263 7064203177 11050 0 ustar grey greyЕстественно, man'уалы, имеющие отношение к теме.
man 5 passwd - описывает структуру учетной карточки (user account)
man adding_user - общие слова о добавлении юзера. Кстати, там есть рекомендации - каким должно быть Login name
Утилиты для регистрации нового юзера. А, также, для удаления, изменения
полей в учетной карточке и т.п.
man pwd_mkdb
man vipw
man adduser
man pw
Утилиты для внесения изменений.
man passwd - изменение пароля
man chpass - другие изменения в учетной карточке
man pw - тоже делает изменения в учетной карточке
Утилиты для удаления юзера.
man rmuser
man pw
К вопросу о временной блокировке входа юзеру.
man login.access
man login.conf
А, также, в каждом из них есть раздел See Also (смотри также...). Их тоже можно почитать, хотя, в основном, они все ссылаются друг на друга.
USERS2.HTML 100644 1773 1773 12724 7064203177 11014 0 ustar grey greyПрежде чем перечислить - какие поля есть в учетной карточке, хотелось бы обратить внимание вот на что.
Каждому юзеру присваивается уникальный номер (user ID), именно этот цифровой номер и используется внутри операционной системы при проверке прав доступа, сборе и хранении статистики и т.д. Однако, для человека оперировать все время номерами юзеров не удобно. Поэтому, каждому юзеру кроме номера присваивается еще уникальное имя (login name).
Если в какой-нибудь команде требуется в качестве аргумента указать юзера, обычно используется это "login name". И, наоборот, если какая-либо программа в своем выводе как-нибудь упоминает конкретных юзеров, она обычно называете их этим именем, а не просто печатает номер юзера.
То есть, между user ID и name должно быть всегда однозначное соответствие. Просто user ID используется во внутренних данных системы, а name при общеннии человек-компьютер.
Итак. В учетной карточке юзера хранится
Назначение этих полей.
Это уникальное имя юзера. Его спрашивают при входе в компьютер. Оно используется в командах администрирования.
Пароль. Для того, чтобы никто другой, кроме этого юзера не мог войти в систему, естественно, у каждого юзера должен быть его собственный секретный пароль для входа. Вообще-то, пароль может и отсутствовать, но это очень не рекомендуется. Особенно, если машина доступна по сети.
Кстати, пароли хранятся в базе в закодированном виде, поэтому, даже администратор не может его узнать. (Собственно администратору он и не нужен, у него и так права не ограничены. А вот если юзер забудет свой пароль, то проще попросить администратор записать новый пароль, чем пытаться извлечь старый).
Уникальный номер юзера. Он однозначно соответствует имени (Name) и используется внутри системы.
Номер группы, к которой принадлежит юзер. Подробнее о группах ????
Это просто некоторые "анкетные данные" того реального человека, который скрывается под Name. Это поле можно и не заполнять. Обычно там пишут просто реальное имя/фамилию юзера (например John Doe).
Однако, полностью это поле может состоять из
Домашний каталог юзера. Именно в этом каталоге помещаются настроечные файлы для различных программ с настройками под конкретного юзера. Здесь же юзеру дается полная свобода создавать/удалять свои файлы.
Программа, которая запускается для юзера, когда он входит в систему. Обычно это "исполнитель комманд" (типа command.com в DOS'е), который принимает комманды с терминала и, в свою очередь, запускает программы, необходимые юзеру.
В современных Unix'ах обычно есть несколько таких "исполнителей" (sh, csh, tcsh, bash ...) из которых можно выбрать наиболее подходящий.
Но, вместо такого "исполнителя команд" здесь может быть указана любая другая программа, что часто используется для некоторых задач.
Подробнее об этом сказано в разделе "Для чего используется учетная карточка".
Это поле пока ничего не означает. По замыслу, юзер может принадлежать к некоему login-классу. При этом, когда он будет входить в систему, могут быть сделаны какие-нибудь установки (например заданы переменные среды), общие для всех юзеров этого класса. Естественно, должна быть еще некая база данных, в которой указанно - что делать для юзера из конкретного класса (или не делать). Но, сейчас (по крайней мере до версии 2.2.2) это поле никакими программами не используется.
Здесь администратор может указать дату, когда юзеру следует поменять пароль. Дело в том, что, если требуется повышенная секретность, одной из мер предосторожности является то, что пароли должны периодически меняться (раз в неделю, месяц и т.п.). Для того, чтобы заставить юзера следовать этому правилу, администратор задает дату, после наступления которой компьютер будет предлагать юзеру при входе систему поменять свой пароль.
А здесь администратор задает дату, после которой доступ юзеру в систему будет запрещен. То есть, account юзера сохраняется (и все его файлы тоже), но войти в систему он не сможет (пока не договорится с администратором :-).
Подробнее обо всем этом можно прочитать в соответствующем man'уале.
man 5 passwd.
А вот это - очень не простой вопрос.
Конечно, основное назначение учетной карточки - зарегистрировать юзера, чтобы он мог войти в систему и поработать на этой машине. Однако, существует некоторые нестандартные применения для этого механизма, в которых используются скорее "побочные эффекты" регистрации пользователя.
Когда обычный юзер заходит в систему (с физического терминала или по сети), он должен сказать свое имя (Login Name) и пароль (Password). Соответствующая программа сверяет эти данные с теми, что записаны в учетной карточке и, если они сопадают, "пускает" юзера в систему. То есть запускается программа, которая указана как Shell в учетной карточке. Юзер с помощью этой программы может запускать другие. При этом ему можно создавать/удалять/писать/читать файлы, которые находятся в его Home dir (которая тоже указана в учетной карточке).
Часто бывает полезно ограничить некоторым программам (которые запускаются автоматически - ftp-сервер, www-сервер и т.п.) доступ к файлам и директориям.
Например, вы создаете на своей машине WWW-сервер. Естественно, его назначение - выдавать в сеть какие-то документы (файлы *.shtml), специально предназначенные для публичного обозрения. В то же время, не хотелось бы, чтобы он (из-за возможных ошибок или злонамеренных "закладок" в программе) мог выдавать наружу другие файлы находящиеся в системе.
В Unix предусмотренно, что права на чтение каждого файла можно связать с определенным пользователем. Юзер может читать файлы, для которых он является "хозяином" или "владельцем" (на самом деле разграничение прав несколько более сложное, но в данном объяснении это не важно). Все остальные файлы можно сделать для него недоступными.
Таким образом, для решения задачи нужно
- зарегистрировать фиктивного пользователя - например www;
- все файлы, к которым должна иметь доступ программа WWW-сервера, объявить
"собственностью" юзера www (естественно, что ваши секретные файлы должны
быть недоступны этому самому www);
- обяснить системе, что когда запускается программа WWW-сервера, все
должно выглядеть так, как будто его запустил реальный юзер www.
Все остальное сделается автоматически средствами Unix.
Разумеется, при таком подходе никакого реального человека, который скрывается под именем www может не быть.
Следовательно, в учетной карточке такого фиктивного юзера не нужен реальный пароль (вместо пароля ставится какая-нибудь абракадабра, так, чтобы никто не мог даже подобрать его. Точнее, ставится знак "*", поскольку в настоящих шифрованных паролях такой знак никогда не встречается), никакой General information, не нужна также Home dir (хотя, иногда имеет смысл объявить его домашней директорией ту, где лежат его данные) и Shell.
Особым случаем псевдо-юзера является юзер ftp. Дело в том, что у ftp-сервера могут быть две задачи. Первая - дать возможность реальным пользователям этой машины перекачивать свои файлы из этого компьютера (или, наоборот, "вкачивать") по сети. Вторая - предоставить некую "свалку" файлов всем желающим (то, что обычно называют "анонимный ftp"). В первом случае каждый реальный юзер говорит серверу свое имя и пароль и получает доступ к файлам такой же, как если бы он вошел в систему. Во втором случае, если вы не зарегистрированы в качестве юзера на этой машине, вы можете сказать, что вы - юзер anonimous или юзер ftp. В этом случае, программа ftp-сервер проверяет - зарегистрирован ли в БД учетных карточек псевдо-юзер ftp (именно ftp, а не anonimous) и, если такой юзер зарегистрирован, то пускает вас в домашнюю директорию (Home dir) этого юзера, там и должна лежать "свалка" файлов для всех желающих.
Таким образом, в учетной карточке псевдо-юзера ftp существенным являются в основном поля Name и Home dir. Остальные, обычно, значения не имеют.
Таких псевдо-юзеров в любой системе существует несколько. Вы можете сами убедиться, заглянув в /etc/passwd.
В последнее время получил большое распространение способ доставки почты по протоколу POP. Суть его состоит в том, что почта для конкретного адресата копится на "почтовом сервере" в его личном "почтовом ящике", а сам адресат время от времени запускает на любой машине, имеющей доступ по сети к "почтовому серверу", специальную программу (POP-клиент), которая связывается с сервером и забирает все письма, накопившиеся в "почтовом ящике".
Если в качестве "почтового сервера" используется Unix-машина, то самым простым способом обеспечить прием почты и поддержание "почтового ящика" для конкретного человека - это зарегистрировать его как обычного юзера этой машины. (Точнее, это единственный стандартный способ.) Кроме того, для того, чтобы никто посторонний не мог получить доступ к "почтовому ящику", при соединении с "почтовым сервером" используется процедура аналогичная входу в систему обычного юзера - то есть POP-клиент должен предьявить серверу имя и секретный пароль юзера. Причем, обычно, программа POP-сервер ищет эти имя и пароль в той же базе учетных карточек.
Особенность этой ситуации состоит в том, что человек, который пользуется этой Unix-машиной как "почтовым сервером", может больше никакого отношения к ней не иметь. То есть ему нет необходимости заходить на эту машину как ее пользователю, запускать программы, хранить файлы. Более того, возможно, администратору и не хотелось бы, чтобы такой юзер имел доступ к чему-либо, кроме своего "почтового ящика".
Следовательно, в учетной карточке такого юзера нет домашней директории, или ставится какя-нибудь "левая" директория, одна на всех таких юзеров.
А, самое главное, не должно быть реальной программы Shell. Вместо нее лучше всего подставить какую-нибудь программу, которя просто напечатает сообщение типа: "Sorry, вам сюда нельзя" и завершит работу. В качестве такой программы можно использовать /bin/date - она напечатает текущую дату и завершится.
Кстати, если поле Shell в учетной карточке просто оставить пустым, то система все равно впустит юзера и даст ему "исполнителя комманд" /bin/sh.
Поскольку, вместо Shell (программы, которая автоматически запускается для вошедшего юзера) можно использовать любую программу, можно сделать небольшую информационную систему для публичного просмотра. Для этого регистрируется пользователь, например, guest (гость). В качестве Shell у этого юзера должна быть программа, которая позволяет просмотреть документы, предназначенные для публики (какя-нибудь BBS, www-browser или другая, специально для этого написанная программа). Естественно, надо принять меры предосторожности, чтобы эта программа не могла прочитать другие файлы из вашего компьютера и не могла записать ничего лишнего на диск.
Особенностью такого юзера является то, что у него должен быть необычный Shell, домашней директории может и не быть (это зависит от той информационной программы), и, главное, может не быть пароля (все равно, если он есть, придется сообщить его всем желающим).
Если к компьютеру подкючен модем, он может оказывать различные услуги через телефонные линии (BBS, прием/передачу e-mail, IP-доступ и т.п.). Если один и тот же телефонный вход используется для различных услуг, то возникает проблема - как обеспечить запуск различных коммуникационных программ для разных клиентов.
Одно из решений заключается в следующем. Для каждой возможной услуги регистрируется пользователь, у которого в качестве Shell указывается соответствующая коммуникационная программа.
Например, можно зарегистрировать пользователей:
UUCPuser - для которого запускается программа uucico (из пакета uucp),
PPPuser - для которого запускается драйвер, для связи по протоколу PPP,
SLIPuser - для которого запускается драйвер, для связи по протоколу SLIP.
Теперь, если клиент, позвонивший на модем, введет в качестве Login name PPPuser (например), то для него на этом конце модемной линии включится драйвер PPP и он получит IP доступ по этому протоколу.
Кроме того, любой Unix, всегда запоминает время, когда юзер вошел в систему и когда закончил работу. Поэтому, если каждому клиенту дать отдельное имя (и, естественно, секретный пароль), то можно легко вести статистику - сколько времени каждый клиент занимал ваш телефон.
Особенностью учетной карточки такого юзера, как и в предыдущем случае, является нестандартный Shell. Может отсутствовать Home dir (это зависит от коммуникационной программы, некоторые из них пытаются извлечь некоторые настроечные данные из домашней директории юзера).