Chapter 7. Системное администрирование

Где расположены файлы конфигурации системы?
Как проще всего добавить пользователя?
Как добавить в систему новый диск?
Как использовать устройство для чтения сменных дисков?
Как смонтировать вторичный раздел DOS?
Можно ли смонтировать другие файловые системы?
Как можно использовать загрузчик NT для запуска FreeBSD?
Как загрузить FreeBSD и Linux с помощью LILO?
Как загрузить FreeBSD и Linux с помощью BootEasy?
Не угрожает ли режим ``dangerously dedicated'' моему здоровью?
Как добавить дополнительную виртуальную память?
У меня проблемы с установкой принтера.
Раскладка клавиатуры неверна.
Не получается заставить работать дисковые квоты.
Что не так с устройством ccd?
Почему невозможно отредактировать метку диска ccd?
Поддерживает ли FreeBSD вызовы IPC из System V?
Как настроить sendmail для доставки почты по UUCP?
Как настроить почту при коммутируемом соединении с Internet?
Ой! Я забыл пароль администратора!
Как запретить перезагрузку по клавишам Control-Alt-Delete?
Как преобразовать текстовые файлы DOS в формат UNIX?
Как прервать процесс по имени?
Почему su выдаёт сообщение о том, что я не вхожу в root ACL?
Как деинсталлировать Kerberos?
Как добавить в систему дополнительные псевдотерминалы?
Не получается создать устройство snd0!
Как перечитать содержимое /etc/rc.conf и перестартовать /etc/rc без перезагрузки системы?
Что означает термин sandbox (песочница)?
Как разрешить обычным пользователям монтировать дискеты и другие сменные носители?

Q: Где расположены файлы конфигурации системы?

A: Для FreeBSD версий от 2.0.5R до 2.2.1R основным конфигурационным файлом является /etc/sysconfig. Все параметры указываются здесь, а остальные конфигурационные файлы, такие, как /etc/rc и /etc/netstart просто его используют.

Посмотрите файл /etc/sysconfig и измените значения переменных на соответствующие вашей системе. В файле содержатся комментарии, описывающие смысл этих переменных и способ их задания.

В системах выше 2.2.1 и в 3.0 файл /etc/sysconfig сменил название на говорящее само за себя rc.conf, синтаксис описания переменных был несколько улучшен. /etc/netstart тоже был переименован в /etc/rc.network, так что все конфигурационные файлы теперь можно перенести одной командой cp /usr/src/etc/rc* /etc.

/etc/rc.local как обычно, можно использовать для запуска дополнительных местных служб типа INN или для настройки дополнительных параметров.

Файл /etc/rc.serial предназначен для инициализации коммуникационных адаптеров (например, установки характеристик работы последовательных портов итд).

Файл /etc/rc.i386 предназначен для настройки специфичных для архитектуры Intel параметров, таких, как эмуляция iBCS2 или характеристик системной консоли ПК.

Начиная с версии 2.1.0R, вы можете иметь "местные" файлы автозапуска в каталоге, указанном в файле /etc/sysconfig (или /etc/rc.conf):

════════#═Location═of═local═startup═files.
════════local_startup=/usr/local/etc/rc.local.d
══════

Каждый файл, оканчивающийся на .sh, будет запущен на выполнение в алфавитном порядке.

Если вам нужно добиться определённого порядка выполнения не меняя имён файлов, можно использовать схему, в которой для упорядочения используются цифры, предшествующие имени файла.

════════10news.sh
════════15httpd.sh
════════20ssh.sh
══════

Это может выглядеть безобразно (как SysV :-)), но это простой и понятный метод для добавления дополнительных служб без шаманства с редактированием /etc/rc.local. Многие порты/пакаджи предполагают, что каталог /usr/local/etc/rc.d предназначен для размещения запускаемых при загрузке системы скриптов.

Q: Как проще всего добавить пользователя?

A: Используйте команду adduser. Для выполнения более сложных операций обратитесь к команде pw.

Чтобы удалить пользователя, используйте команду rmuser.

Q: Как добавить в систему новый диск?

A: Обратитесь к Руководству по форматированию дисков на сервере www.FreeBSD.org.

Q: Как использовать устройство для чтения сменных дисков?

A: Каким бы ни было это устройство, типа ZIP, EZ (или даже обычным дисководом, если вы хотите его использовать) или каким-то другим, как только оно будет установлено и распознано системой, и вы вставите в него картридж/дискету/что-там-ещё, всё будет выглядеть примерно одинаково.

(этот раздел опирается на FAQ по устройствам ZIP Марка Мэйо (Mark Mayo))

Если это устройство ZIP или обычный дисковод, и у вас уже есть файловая система DOS на дискетах, то вы можете нспользовать команду типа:

════mount═-t═msdos═/dev/fd0c═/floppy
══

для обычных дискет, или

════mount═-t═msdos═/dev/da2s4═/zip
══

для дискет ZIP со стандартной конфигурацией.

Для других дисков посмотрите их параметры с помощью fdisk или /stand/sysinstall.

Остальные примеры даны для привода ZIP на da2, третьем диске SCSI.

Если это дискета или сменный диск, который будет использоваться для обмена информацией с другими людьми, хорошой идеей будет помещение туда файловой системы BSD. Вы получите поддержку длинных имён файлов, увеличение производительности по крайней мере в два раза и гораздо большую надёжность. Первым делом вам снова будет нужно выполнить разбиение диска на разделы/файловые системы. Вы можете воспользоваться утилитой fdisk либо /stand/sysinstall, а в случае небольшого диска, на котором не нужно располагать несколько операционных систем, просто сотрите таблицу разделов (слайсов) FAT и используйте разбиение на разделы BSD.

════dd═if=/dev/zero═of=/dev/rda2═count=2
════disklabel═-Brw═da2═auto
══

Вы можете использовать disklabel или /stand/sysinstall для создания нескольких разделов BSD. Вам наверняка придётся это сделать, если вы станете добавлять место для раздела подкачки на винчестере, хотя это не имеет отношения к устройствам типа ZIP.

В итоге вы должны создать новую файловую систему (в этом примере она занимает весь наш диск ZIP):

════newfs═/dev/rda2c
══

и смонтировать её:

════mount═/dev/da2c═/zip
══

Хорошо ещё добавить строку типа следующей в файл /etc/fstab, чтобы в будущем можно было просто давать команду "mount /zip":

════/dev/da2c═/zip═ffs═rw,noauto═0═0
══

Q: Как смонтировать вторичный раздел DOS?

A: Вторичные разделы DOS находятся после ВСЕХ первичных разделов. Например, если раздел "E" является вторым разделом DOS на втором диске SCSI, вам нужно создать специальные файлы для пятого "слайса" в каталоге /dev, затем смонтировать /dev/da1s5:

════#═cd═/dev
════#═./MAKEDEV═da1s5
════#═mount═-t═msdos═/dev/da1s5═/dos/e
══

Q: Можно ли смонтировать другие файловые системы?

A: Компакт-диски с файловой системой UFS от Digital UNIX могут быть замонтированы без всяких проблем. Монтирование файловых систем Digital UNIX или других систем, поддерживающих UFS, может быть более сложным, в зависимости от особенностей разбиения диска конкретной операционной системой.

Linux: Версии 2.2 и выше имеют поддержку разделов ext2fs. За дополнительной информацией обратитесь к страницам справочника по команде mount_ext2fs.

NT: Существует драйвер, позволяющий под FreeBSD иметь доступ к NTFS в режиме "только для чтения". Посмотрите учебник от Марка Овенса (Mark Ovens) по адресу http://ukug.uk.freebsd.org/~mark/ntfs_install.html.

Нас интересует любая дополнительная информация по этому вопросу.

Q: Как можно использовать загрузчик NT для запуска FreeBSD?

A: Эта процедура выглядит по разному для версий FreeBSD 2.2.x и 3.x (с трёхступенчатым процессом загрузки системы).

Идея заключается в копировании первого сектора корневого раздела FreeBSD в файл, находящийся в разделе DOS/NT. Предположим, что вы назвали этот файл c:\bootsect.bsd (по аналогии с c:\bootsect.dos), после чего можете отредактировать файл c:\boot.ini, чтобы он выглядел примерно так:

════════[boot═loader]
════════timeout=30
════════default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
════════[operating═systems]
════════multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows═NT"
════════C:\BOOTSECT.BSD="FreeBSD"
════════C:\="DOS"
══════

Для систем 2.2.x предполагается, что DOS, NT, FreeBSD или другая операционная система были установлены в их соответствующие разделы fdisk на одном и том же диске. В моём случае DOS & NT находятся на первом разделе fdisk, а FreeBSD на втором. Я также установил FreeBSD для загрузки с её раздела, а не из MBR.

Смонтируйте дискету в формате DOS (если вы используете NTFS) или раздел FAT, скажем, в каталог /mnt.

════dd═if=/dev/rda0a═of=/mnt/bootsect.bsd═bs=512═count=1
══

Перезапустите DOS или NT. Пользователи NTFS должны скопировать файл bootsect.bsd и/или bootsect.lnx с дискеты на диск C:\. Измените атрибуты (права) на файл boot.ini следующим образом:

════attrib═-s═-r═c:\boot.ini
══

Отредактируйте этот файл, добавив соответствующие строки из примерного boot.ini выше, и восстановите атрибуты:

════attrib═+s═+r═c:\boot.ini
══

Если FreeBSD загружается из MBR, восстановите его командой DOS ``fdisk'' после того, как переконфигурировали их для загрузки с их ``родных'' разделов.

Для систем FreeBSD 3.x эта процедура выглядит несколько проще.

Если FreeBSD установлена на тот же самый диск, что и загрузочный раздел NT, скопируйте /boot/boot1 в c:\bootsect.bsd или, если FreeBSD установлена на другой диск, скопируйте /boot/boot0 в c:\bootsect.bsd. Затем измените c:\bootsect.ini так, как это описано выше.

Q: Как загрузить FreeBSD и Linux с помощью LILO?

A: Если у вас установлены FreeBSD и Linux на одном и том же диске, следуйте указаниям по установке LILO о загрузке не-Linux операционных систем. Они сводятся к следующему:

Загрузите Linux, и добавьте следующие строки в файл /etc/lilo.conf:


        other=/dev/hda2

        table=/dev/hda

        label=FreeBSD

      

(здесь вы предполагаем, что слайс с FreeBSD известен Linux как /dev/hda2; измените эту строку в соответствии с вашей конфигурацией). Затем достаточно будет запустить lilo, войдя в систему как администратор.

Если FreeBSD располагается на другом диске, вам нужно добавить строчку ``loader=/boot/chain.b'' в конфигурационный файл LILO. Например:


           other=/dev/dab4

           table=/dev/dab

           loader=/boot/chain.b

           label=FreeBSD

         

В некоторых случаях для успешной загрузки со второго диска вам может потребоваться указать номер диска BIOS загрузчику FreeBSD. Например, если диск SCSI с FreeBSD определяется BIOS как диск 1, в приглашении загрузчика FreeBSD нужно указать:

═══════Boot:═1:da(0,a)/kernel
═════

Во FreeBSD 2.2.5 и выше вы можете настроить boot(8) на автоматическое принятие таких параметров во время загрузки.

В документе Linux+FreeBSD mini-HOWTO содержится много информации, касающейся взаимодействия FreeBSD и Linux.

Q: Как загрузить FreeBSD и Linux с помощью BootEasy?

A: Установите LILO в начало загрузочного раздела Linux, а не в Master Boot Record. После этого можно запустить LILO из BootEasy.

Это рекомендуется сделать в любом случае при одновременном использовании Windows-95 и Linux, чтобы упростить восстановление работоспособности Linux после переинсталляции Windows95 (которая является Недоброжелательной Операционной Системой и не терпит присутствия других операционных систем в Master Boot Record).

Q: Не угрожает ли режим ``dangerously dedicated'' моему здоровью?

A: В процессе установки вы можете выбрать два различных метода разбиения вашего диска. По умолчанию это делается в режиме совместимости с другими операционными системами на этой же машине с использованием записей в таблице разделов fdisk (то, что называется ``слайсом'' во FreeBSD), со слайсом (разделом), выделенным FreeBSD. Опционально, вы можете выбрать установку менеджера загрузки для переключения между операционными системами. Либо вы можете выделить диск полностью под FreeBSD, не заботясь о совместимости с другими операционными системами.

Почему же этот режим называется ``dangerous''? Дело в том, что диск в этом режиме не будет содержать того, что обычные утилиты для ПК распознают как таблицу разделов. В зависимости от того, насколько хорошо они написаны, они могут сообщить вам об этом, как только обнаружат такой диск, или, что гораздо хуже, могут запортить загрузчик BSD, даже не спрашивая и не сообщая об этом. К тому же известно, что разметка диска в режиме ``dangerously dedicated'' вводит в заблуждение BIOS многих производителей, включая AWARD (которые используются в компьютерах HP Netserver, Micronics и многих других) и Symbios/NCR (производителя популярных SCSI-контроллеров серии 53C8xx). И это не полный список, есть ещё другие производители. Симптомами подобных проблем является сообщение "read error", выводимое загрузчиком FreeBSD, когда он не может найти сам себя, а также зависания системы при загрузке.

Тогда зачем вообще нужен этот режим? Он экономит всего лишь несколько килобайт дискового пространства и может вызвать серьёзные проблемы при новой инсталляции. Причиной появления этого режима является желание избежать появления одной из самых распространённых проблем, с которой сталкиваются новички - соответствие параметров BIOS и реальных параметров диска.

``Параметры'' диска являются устаревшей концепцией, но она лежит в основе работы BIOS с диском. Когда программа установки FreeBSD создаёт слайсы, она записывает их расположение в соответствии с тем, как с ними будет работать BIOS. Если это делается неправильно, вы не сможете выполнить загрузку системы.

Режим ``dangerously dedicated'' пытается обойти это, упрощая решение данной проблемы. Иногда он делает это правильно. Однако это значит, что его нужно использовать только как последнюю альтернативу - есть способы получше, решающие проблему в 99 случаях из 100.

Итак, как избежать использования режима ``DD'' во время установки? Сначала запишите параметры диска, которые сообщает BIOS. Вы можете выяснить это, заставив ядро вывести эти параметры при загрузке, указав ``-v'' в приглашении ``boot:'', или используя ``boot -v'' в загрузчике. Перед тем, как запустится программа установки, ядро выведет параметры, используемые BIOS. Не волнуйтесь - подождите запуска программы установки, а затем воспользуйтесь скроллингом, чтобы посмотреть значения этих параметров. Как правило, BIOS нумерует диски в том же порядке, что и FreeBSD, сначала IDE, затем SCSI.

Когда вы разбиваете диск на слайсы, проверьте, что параметры диска, выводимые в окне программы FDISK, корректны (то есть они соответствуют параметрам BIOS); если это не так, воспользуйтесь командой ``g'', чтобы их исправить. Вы можете это сделать, если на диске нет абсолютно ничего или если этот диск был перенесён с другой системы. Заметьте, что это касается только загрузочного диска; FreeBSD прекрасно разберётся с остальными дисками, которые могут у вас быть.

Как только вы добились соответствия параметров диска в BIOS и FreeBSD, скорее всего, проблем у вас больше не будет, и использовать режим ``DD'' не потребуется. Если, однако, страшной сообщение ``read error'' продолжает появляться при загрузке, самое время перекреститься и попробовать этот режим - вам больше нечего терять.

Чтобы вернуть диск из режима ``dangerously dedicated'' к нормальному режиму использования, есть два способа. Первый заключается в том, что вы записываете достаточное количество байтов NULL поверх MBR, чтобы любой инсталлятор думал, что это чистый диск. Это можно сделать, например, командой

════dd═if=/dev/zero═of=/dev/rda0═count=15
══

Другой способ - недокументированной командой DOS

════════fdisk═/mbr
══════

проинсталлировать новую MBR, удалив загрузчик BSD.

Q: Как добавить дополнительную виртуальную память?

A: Наилучший способ - увеличить размер раздела подкачки, может быть, добавив для этого ещё один диск. Общим правилом является выбор размера виртуальной памяти, в два раза превышающий объём физической памяти. Однако, если у вас очень мало физической памяти, этот объём гораздо больше. Хорошей практикой является задание достаточного объёма виртуальной памяти в ожидании добавления физической памяти, чтобы потом не испытывать трудностей.

Перенос виртуальной памяти на отдельный диск увеличивает быстродействие системы по сравнению с добавлением виртуальной памяти на том же диске. Например, компиляция исходных текстов происходит быстрее, если они находятся не на том же диске, что и раздел подкачки. Особенно это заметно для дисков SCSI.

Если у вас имеется несколько дисков, размещение раздела подкачки на каждом из них, даже на рабочем диске, обычно бывает полезно. Как правило, каждый быстрый диск в вашей системе должен иметь раздел подкачки. FreeBSD поддерживает по умолчанию до 4 устройств подкачки с чередованием. При задании нескольких разделов подкачки вам захочется сделать их одинакового размера, однако иногда первичный раздел подкачки делается несколько больше для того, чтобы он мог поместить аварийный образ ядра. Размер вашего первичного раздела подкачки должен по крайней мере быть равным объёму физической памяти, чтобы поместить аварийный образ ядра.

Диски IDE не позволяют реализовать одновременный доступ к обоим дискам по одному каналу (FreeBSD не поддерживает режим 4, так что весь ввод/вывод для дисков IDE ``программируется''). Однако я всё равно советую перенести раздел подкачки на отдельный диск. Диски достаточно дешёвы, и экономить тут не на чем.

Использование NFS для размещения раздела подкачки рекомендуется только в случае, если у вас нет локального диска. Подкачка поверх NFS медленна и неэффективна в релизах FreeBSD до 4.x, хотя достаточно быстра в релизах 4.0 и выше. Кроме того, её скорость будет ограничена реальной пропускной способностью сети и это даст дополнительную нагрузку на NFS-сервер.

Вот пример vn-файла подкачки размером 64Мб (/usr/swap0, хотя, конечно, вы можете выбрать любое другое имя.

Удостоверьтесь, что ядро откомпилировано со строкой

════════pseudo-device═══vn═1═══#Vnode═driver═(turns═a═file═into═a═device)
══════

в конфигурационном файле. Ядро GENERIC её содержит

  1. создайте vn-устройство

    ══════════cd═/dev
    ══════════sh═./MAKEDEV═vn0
    ════════

  2. создайте файл подкачки (/usr/swap0)

    ══════════dd═if=/dev/zero═of=/usr/swap0═bs=1024k═count=64
    ════════

  3. Установите корректные права на файл (/usr/swap0)

    ══════════chmod═0600═/usr/swap0
    ════════

  4. Включите использование файла подкачки в /etc/rc.conf

    ══════════swapfile="/usr/swap0"═══#═Set═to═name═of═swapfile═if═aux═swapfile═desired.
    ════════

  5. перезагрузите машину

Чтобы включить использование файла подкачки немедленно, наберите

════════vnconfig═-ce═/dev/vn0c═/usr/swap0═swap
══════

Q: У меня проблемы с установкой принтера.

A: Обратитесь к соответствующему разделу Руководства, посвящённому печати. В нём описаны решения большинства ваших проблем.

Q: Раскладка клавиатуры неверна.

A: Программа kbdcontrol имеет параметр, задающий файл раскладки. Файлы раскладок находятся в каталоге /usr/share/syscons/keymaps. Выберите соответствующий вашей системе и загрузите его.

════════kbdcontrol═-l═uk.iso
══════

Программа kbdcontrol предполагает использование каталога /usr/share/syscons/keymaps и расширения .kbd.

Это может быть настроено в файле /etc/sysconfig (или rc.conf). Обратитесь к соответствующим комментариям в этом файле.

В системах 2.0.5R и выше, всё, относящееся к знакогенератору, раскладке клавиатуры, находится в каталоге /usr/share/examples/syscons.

На данный момент поддерживаются следующие раскладки:

  • Belgian ISO-8859-1

  • Brazilian 275 keyboard Codepage 850

  • Brazilian 275 keyboard ISO-8859-1

  • Danish Codepage 865

  • Danish ISO-8859-1

  • French ISO-8859-1

  • German Codepage 850

  • German ISO-8859-1

  • Italian ISO-8859-1

  • Japanese 106

  • Japanese 106x

  • Latin American

  • Norwegian ISO-8859-1

  • Polish ISO-8859-2 (programmer's)

  • Russian Codepage 866 (alternative)

  • Russian koi8-r (shift)

  • Russian koi8-r

  • Spanish ISO-8859-1

  • Swedish Codepage 850

  • Swedish ISO-8859-1

  • Swiss-German ISO-8859-1

  • United Kingdom Codepage 850

  • United Kingdom ISO-8859-1

  • United States of America ISO-8859-1

  • United States of America dvorak

  • United States of America dvorakx

Q: Не получается заставить работать дисковые квоты.

A:

  1. Не включайте квотирование на '/',

  2. Помещайте файл с квотами в ту файловую систему, которую он обслуживает, то есть:

    ══════════ФС══════ФАЙЛ═КВОТ
    ══════════/usr════/usr/admin/quotas
    ══════════/home═══/home/admin/quotas
    ══════════...
    ════════

Q: Что не так с устройством ccd?

A: Симптом выглядит так:

════════#═ccdconfig═-C
════════ccdconfig:═ioctl═(CCDIOCSET):═/dev/ccd0c:═Inappropriate═file═type═or═format
════════#
══════

Это сообщение обычно выдаётся, когда вы пытаетесь объединить разделы 'c', по умолчанию имеющие тип 'unused'. Драйвер ccd требует, чтобы используемые разделы имели тип FS_BSDFFS. Отредактируйте метки тех дисков, которые вы хотите использовать, сменив типы разделов на '4.2BSD'.

Q: Почему невозможно отредактировать метку диска ccd?

A: Симптом выглядит так:

════════#═disklabel═ccd0
════════(здесь═выводится═информация═о═диске,═пробуем═отредактировать═метку)
════════#═disklabel═-e═ccd0
════════(редактирование,═сохранение,═выход)
════════disklabel:═ioctl═DIOCWDINFO:═No═disk═label═on═disk;
════════use═"disklabel═-r"═to═install═initial═label
════════#
══════

Это происходит из-за того, что метка диска, возвращаемая ccd, на самом деле 'ненастоящая', не соответствующая реально располагающейся на диске. Вы можете решить эту проблему, явно записав эту метку обратно следующим образом:

════════#═disklabel═ccd0═>═/tmp/disklabel.tmp
════════#═disklabel═-Rr═ccd0═/tmp/disklabel.tmp
════════#═disklabel═-e═ccd0
════════(теперь═это═будет═работать)
══════

Q: Поддерживает ли FreeBSD вызовы IPC из System V?

A: Да, FreeBSD поддерживает IPC из System V, а именно совместно используемую память, сообщения и семафоры. Чтобы они работали, вам нужно добавить следующие строки в файл конфигурации ядра.

════════options════SYSVSHM
════════options════"SHMMAXPGS=64"═══#═256Kb═of═sharable═memory
════════options════SYSVSEM══════════#═enable═for═semaphores
════════options════SYSVMSG══════════#═enable═for═messaging
══════

Перекомпилируйте и проинсталлируйте ядро.

ЗАМЕЧАНИЕ: Вам может потребоваться увеличить значение константы SHMMAXGS на что-то большее, типа 4096 (16М!), если вы собираетесь ипользовать GIMP. 256Кб достаточно для работы X11R6.

Q: Как настроить sendmail для доставки почты по UUCP?

A: Конфигурация sendmail, поставляемая с FreeBSD, предназначена для сайтов, которые имеют непосредственный выход в Internet. Сайты, которым требуется обмениваться почтой по UUCP, должны использовать другой конфигурационный файл.

Ковыряние в файле /etc/sendmail.cf вручную - это занятие для пуристов (и мазохистов). Восьмая версия sendmail поставляется с новой системой генерации конфигурационных файлов с использованием препроцессора m4, в которой ручная конфигурация перенесена на более высокий уровень абстракции. Используйте конфигурационные файлы в каталоге

════/usr/src/usr.sbin/sendmail/cf
══

Если вы не собираетесь инсталлировать все исходные тексты системы, специально для вас конфигурационные файлы sendmail выделены в отдельный дистрибутив. Если вы имеете смонтированный компакт-диск, выполните такую команду:

════════cd═/usr/src
════════tar═-xvzf═/cdrom/dists/src/ssmailcf.aa
══════

Не волнуйтесь, эти файлы занимают всего лишь несколько сотен килобайт. Файл README в каталоге cf может быть использован как начальное введение в конфигурацию m4.

Для доставки почты по UUCP лучше всего использовать mailertable. В этом файле содержится база данных, используемая sendmail при маршрутизации почты.

Первым делом создайте ваш файл .mc. Для таких файлов предназначен каталог /usr/src/usr.sbin/sendmail/cf/cf. Посмотрите в нём, там есть уже несколько примеров. Положим, что вы назвали ваш файл foo.mc, всё, что вам нужно для перобразования его в нормальный sendmail.cf, это:

════════cd═/usr/src/usr.sbin/sendmail/cf/cf
════════make═foo.cf
════════cp═foo.cf═/etc/sendmail.cf
══════

Типичный файл .mc выглядит примерно так:

════════include(`../m4/cf.m4')
════════VERSIONID(`Your═version═number')
════════OSTYPE(bsd4.4)

════════FEATURE(nodns)
════════FEATURE(nocanonify)
════════FEATURE(mailertable)

════════define(`UUCP_RELAY',═your.uucp.relay)
════════define(`UUCP_MAX_SIZE',═200000)

════════MAILER(local)
════════MAILER(smtp)
════════MAILER(uucp)

════════Cw════your.alias.host.name
════════Cw════youruucpnodename.UUCP
══════

Параметры nodns и nocanonify подавляют использование DNS в процессе доставки. Строка UUCP_RELAY может понадобиться только в очень странных случаях, не спрашивайте о них. Просто поместите здесь имя хоста Internet, который может обрабатывать адреса с псевдо-доменами .UUCP; в большинстве случаев достаточно поставить сюда имя почтового шлюза вашего провайдера.

Как только вы сгенерируете конфигурационный файл, вам понадобится /etc/mailertable. Типичный пример такого файла:

════════#
════════#═makemap═hash═/etc/mailertable.db═<═/etc/mailertable
════════#
════════horus.interface-business.de═══uucp-dom:horus
════════.interface-business.de════════uucp-dom:if-bus
════════interface-business.de═════════uucp-dom:if-bus
════════.heep.sax.de══════════════════smtp8:%1
════════horus.UUCP════════════════════uucp-dom:horus
════════if-bus.UUCP═══════════════════uucp-dom:if-bus
════════.═════════════════════════════uucp-dom:sax
══════

Как видите, это часть реально существующего файла. Первые три строки описывают особые случаи, когда почта, направленная на некоторые домены, будет посылаться не по стандартному маршруту, а на некоторую близлежащую UUCP-систему для `сокращения' маршрута доставки. Следующая строка описывает, что почта на локальный домен в сети Ethernet может быть доставлена по SMTP. В конце файла описаны близлежащие системы UUCP в псевдо-домене .UUCP, что позволит выполнять правильную доставку почты на адреса ``uucp-система!получатель''. В последней строке всегда присутствует одна точка, соответствующая всем остальным доменам, с доставкой по UUCP на блишнюю систему UUCP, который является универсальный почтовым шлюзом во весь остальной мир. Все имена узлов после uucp-dom: должны быть реально существующими узлами UUCP, что можно проверить командой uuname.

Как напоминание о том, что этот файл должен быть преобразован в формат базы данных DBM перед использованием, командная строка, выполняющая это действие, помещена как комментарий в начало файла. При изменении mailertable всегда нужно выполнять эту команду.

Последняя подсказка: если вы не уверены в правильности настройки маршрутизаци почты, используйте sendmail с опцией -bt. Она переводит sendmail в режим проверки адресов; введите ``0 '', а затем адрес, который вы хотите протестировать на правильность маршрутизации. В последней строке будут указаны используемый почтовый агент, хост получателя, с которым будет работать этот агент, и (может быть преобразованный) адрес. Выход их этого режима осуществляется по Control-D.

════════j@uriah═191%═sendmail═-bt
════════ADDRESS═TEST═MODE═(ruleset═3═NOT═automatically═invoked)
════════Enter═<ruleset>═<address>
════════>═0═foo@interface-business.de
════════rewrite:═ruleset══0═══input:═foo═@═interface-business═.═de
════════...
════════rewrite:═ruleset══0═returns:═$#═uucp-dom═$@═if-bus═$:═foo═\
════════<═@═interface-business═.═de═>
════════>═^D
════════j@uriah═192%
══════

Q: Как настроить почту при коммутируемом соединении с Internet?

A: Если вам выделен статический IP-адрес, вам не нужно ничего менять. Установите имя вашего хоста в соответствии с выделенным именем DNS, а sendmail сделаёт всё остальное.

Если ваш IP-адрес выделяется динамически при коммутируемом соединении по ppp с Internet, может быть, вам выделен почтовый ящик на сервере провайдера. Предположим, что домен вашего провайдера называется myISP.com, а ваше имя пользователя user. Также положим, что вы назвали вашу машину bsd.home и что ваш провайдер сказал, что вы должнв использовать relay.myISP.com как почтовый шлюз.

Чтобы забирать почту из вашего почтового ящика, вам нужно установить соответствующий агент. Хорошим агентов является fetchmail, так как он поддерживает много различных протоколов. Обычно провайдеры предлагают POP3. Если вы используете user-ppp, вы можете автоматически забирать вашу почту при установлении соединения с Internet, добавив такую строку в /etc/ppp/ppp.linkup:

════════MYADDR:
══════════!bg═su═user═-c═fetchmail
══════

Если вы используете sendmail (как показано ниже) для доставки почты для внешних пользователей, поместите команду

══!bg═su═user═-c═"sendmail═-q"
══════

после вышеуказанной строки. Это заставит sendmail обработать вашу очередь почтовых сообщений, как только будет осуществлено подключение к сети.

Предположим, что вы имеет учётную запись для user на машине bsd.home. В домашнем каталоге пользователя user на машине bsd.home создайте такой файл .fetchmailrc:

════════poll═myISP.com═protocol═pop3═fetchall═pass═MySecret;
══════

Излишним будет напоминание о том, что этот файл никому не должен быть доступен для чтения, кроме пользователя user, потому что он содержит пароль MySecret доступа к почтовому ящику.

Чтобы посылать почту с правильным заголовком from:, вы должны указать программе sendmail использовать , а не . Вам может понадобиться настроить sendmail для посылки всей почты через relay.myISP.com, чтобы убыстрить её передачу.

Следующий файл .mc должен подойти:

════════VERSIONID(`bsd.home.mc═version═1.0')
════════OSTYPE(bsd4.4)dnl
════════FEATURE(nouucp)dnl
════════MAILER(local)dnl
════════MAILER(smtp)dnl
════════Cwlocalhost
════════Cwbsd.home
════════MASQUERADE_AS(`myISP.com')dnl
════════FEATURE(allmasquerade)dnl
════════FEATURE(masquerade_envelope)dnl
════════FEATURE(nocanonify)dnl
════════FEATURE(nodns)dnl
════════define(SMART_HOST,═`relay.myISP.com')
════════Dmbsd.home
════════define(`confDOMAIN_NAME',`bsd.home')dnl
════════define(`confDELIVERY_MODE',`deferred')dnl
══════

В предыдущем разделе описано, как преобразовать файл .mc в sendmail.cf. И не забудьте перезапустить sendmail после обновления sendmail.cf.

Q: Ой! Я забыл пароль администратора!

A: Без паники! Просто перезапустите систему, наберите boot -s в приглашении Boot: (или просто -s в случае использования версий FreeBSD до 3.2) для входа в однопользовательский режим. На вопрос об используемой оболочке нажмите ENTER. На приглашение # введите mount -u /, чтобы перемонтировать корневую файловую систему в режиме чтения/записи, после чего выполните команду mount -a для монтирования всех файловых систем. Запустите команду passwd root, чтобы сменить пароль администратора и затем exit для продолжения процесса загрузки.

Q: Как запретить перезагрузку по клавишам Control-Alt-Delete?

A: Если вы используете драйвер консоли syscons (который является стандартным) во FreeBSD 2.2.7-RELEASE и выше, перегенерируйте и установите новое ядро со строчкой


    options SC_DISABLE_REBOOT

в конфигурационном файле. Если же вы используете драйвер консоли PCVT во FreeBSD 2.2.5-RELEASE и выше, то укажите следующую строку в конфигурационном файле:


    options PCVT_CTRL_ALT_DEL

Для более старых версий FreeBSD отредактируйте используемый для консоли файл раскладки клавиатуры, заменив ключевые слова boot на nop. Используемая по умолчанию раскладка находится в файле /usr/share/syscons/keymaps/us.iso.kbd. Вам может потребоваться явно указать в файле /etc/rc.conf загрузку этой раскладки, чтобы она действительно поменялась. Конечно, если в вашей стране вы используете другую раскладку, вы должны отредактировать именно её.

Q: Как преобразовать текстовые файлы DOS в формат UNIX?

A: Используйте такую команду:

perl═-i.bak═-npe═'s/\r\n/\n/g'═file═...

где file - это имя файла(ов) для преобразования. Преобразование делается в том же самом файле, оригинальные файлы сохраняются с расширением .bak.

Это преобразование также можно выполнить с помощью команды tr:

tr═-d═'\r'═<═dos-text-file═>═unix-file

где dos-text-file - это имя файла, содержащего текст DOS, а в файл unix-file будет помещён уже преобразованный текст. Этот способ может работать гораздо быстрее, чем при использовании perl.

Q: Как прервать процесс по имени?

A: Используйте команду killall.

Q: Почему su выдаёт сообщение о том, что я не вхожу в root ACL?

A: Эта ошибка выдаётся распределённой системой аутентификации Kerberos. Эта ошибка не фатальна, однако это раздражает. Вы можете запустит su с ключом -K либо деинсталлировать Kerberos, как описано в следующем разделе.

Q: Как деинсталлировать Kerberos?

A: Чтобы убрать Kerberos из системы, переинсталлируйте дистрибутив bin того релиза, который у вас запущен. Если у вас есть CDROM, вы можете смонтировать компакт-диск (положим, в каталог /cdrom) и выполнить команду

════════cd═/cdrom/bin
════════./install.sh
══════

Q: Как добавить в систему дополнительные псевдотерминалы?

A: Если у вас много пользователей, работающий в сеансах telnet, ssh, X или в screen, вам можете столкнуться с проблемой нехватки псевдотерминалов. Их количество можно уыеличить следующим образом:

  1. Откомпилируйте и инсталлируйте новое ядро, в конфигурационный файл которого входит строка

    ════════pseudo-device═pty═256
    ══════

  2. Выполните команду

    ════════#═cd═/dev
    ════════#═./MAKEDEV═pty{1,2,3,4,5,6,7}
    ══════

    для создания 256 дополнительных файлов устройств для новых терминалов.

  3. Отредактируйте файл /etc/ttys, добавив по строке для каждого из 256 терминалов. Они должны соответствовать формату существующих строк, то есть должны выглядеть как

    ════════ttyqc═none═network
    ══════

    Порядок назначения букв при записи в виде регулярного выражения имеет вид tty[pqrsPQRS][0-9a-v].

  4. Теперь осталось только перезапустить систему с новым ядром.

Q: Не получается создать устройство snd0!

A: Команда для создания устройств для звуковых адаптеров выглядит следующим образом:

═══════#═cd═/dev
═══════#═sh═MAKEDEV═snd0
═════

Однако при этом устройства с именем /dev/snd0 не создаётся. Вместо этого создаются устройства mixer0, audio0, dsp0 и другие. Запуск этой команды необходим для добавления звуковых устройств.

Q: Как перечитать содержимое /etc/rc.conf и перестартовать /etc/rc без перезагрузки системы?

A: Перейдите в однопользовательский режим, а затем возвратитесь обратно в многопользовательский.

На консоли выполните следующее:

════#═shutdown═now
══════(Замечание:═без═-r═или═-h)

════#═return
════#═exit
══

Q: Что означает термин sandbox (песочница)?

A: "Sandbox" - это термин, используемый при обеспечении безопасности. Он имеет два значения:

  • Процесс, помещённый внутрь некоторых виртуальных стен, которые предназначены для того, чтобы предотвратить взлом всей системы в результате взлома этого конкретного процесса.

    Говорится, что процесс может "играть" в границах этих стен. Что бы этот процесс ни делал, он эти стены разрушить не может, поэтому вам не нужен его особый аудит, чтобы с уверенностью сказать, насколько его работа безопасна для системы.

    Стеной может служить, например, идентификатор пользователя. Вот определение, даваемое на страницах справочника по named и часто используемое при обсуждении безопасности систем.

    Рассмотрим, например, службу 'ntalk' (смотрите /etc/inetd.conf). Раньше эта служба запускалась с идентификатором пользователя root, а сейчас - tty. Пользователь tty - это та песочница, которая осложняет взлом системы через ntalk посредством использования этого идентификатора пользователя.

  • Процесс, помещённый внутрь симулируемой машины. Это даёт больший уровень безопасности. В общем это означает, что некто, взломавший процесс, может думать. что может сломать и систему в целом, однако фактически может сломать только симулятор этой машины и не может модифицировать никаких реальных данных.

    Самым распространённым способом достигнуть такого результата является построение имитирующего окружения в каталоге и затем запуск процессов и этом каталоге через chroot (т.е. задав этот каталог в качестве "/" для этого процесса, а не реальный "/" всей системы).

    Другим часто используемым методом является монтирование низлежащей файловой системы в режиме "только для чтения" и затем создание уровня фаловой системы поверх неё, что даёт процессу видимость доступа по записи на ту файловую систему. Процесс будет полагать, что может записывать в те файлы, но это будет единственный процесс, который увидит результат ‐ другие процессы не будут этого делать, ни в коем случае.

    Попытка сделать такой тип песочницы настолько прозрачна, что пользователь (или взломщик) даже не поймёт, что он в ней находится.

В UNIX реализованы два типа "песочниц". Один на уровне процесса, и один на уровне идентификаторов пользователей.

Каждый процесс в UNIX полностью защищён от других процессов. Никакой процесс не может модифицировать адресное пространство другого процесса. Это отличается от Windows, где процесс может легко записать что-либо в адресное пространство другого процесса, что приводит к аварийным ситуациям.

В UNIX каждым процессом владеет некоторый идентификатор пользователя. Если этот пользователь не root, от ограждает процесс от других, владельцами которых являются другие пользователи. Этот идентификатор используется также для защиты данных на диске.

Q: Как разрешить обычным пользователям монтировать дискеты и другие сменные носители?

A: Обычным пользователям можно позволить монтировать устройства. Вот как это делается:

  1. Работая пользователем root, назначьте соответствующие права на устройства с поблочным доступом, которые соответствуют сменным носителям.

    Например, чтобы позволить пользователям монтировать дискеты в первом дисководе, воспользуйтесь командой

    
        # chmod 777 /dev/fd0
    
    
  2. Как пользователь root, установите значение sysctl-переменной vfs.usermount в значение 1.

    
        # sysctl -w vfs.usermount=1
    
    

Теперь пользователи смогут смонтировать /dev/fd0 в свои каталоги:


    % mkdir ~/my-mount-point

    % mount -t msdos /dev/fd0 ~/my-mount-point

Размонтировка устройства осуществляется просто:


    % umount ~/my-mount-point

Использование vfs.usermount, однако, имеет некоторые негативные стороны, связанные с вопросами безопасности. Более правильным способом работы с носителями в формате MSDOS является использование mtools из коллекции портов.



Banner.Novgorod.Ru