Главная arrow Администрирование arrow FreeBSD, Linux, ... arrow Дневник ламера Wednesday, November 22 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

Дневник ламера Версия для печати
Написал microsin   
13.02.2008

Тут решил поместить свои записи первых шагов. Поначалу непонятных вопросов было слишком много, и если ответ находил, то старался сразу его записать. Q1 означает "вопрос 1", AQ1 - "ответ на вопрос 1".

-------------------------------------------------------------------------------------------------
16 декабря 2004
Раскопал книжку "FreeBSD. Энциклопедия пользователя. Администрирование: искусство достижения равновесия". Авторы Майкл Эбен, Брайан Таймен. Издательство DiaSoft 2002. 
Нашёл дистрибутив FreeBSD 4.5, подобрал тестовую машинку с сетевой карточкой RTL8139C, Pentium-MMX 200, 192 mb RAM и диском на 30 гиг. Пока уселся за чтение.

-------------------------------------------------------------------------------------------------
17 декабря 2004
Итак, что я знаю? Не очень-то много:
- у FreeBSD и Linux своя файловая система, загрузочный раздел для которой должен быть не далее чем 8 гиг от начала диска.
- установить её проще с загрузочного CD-ROM.
- все устройства вроде как представлены в виде файлов в каком-то каталоге.
- пользователь с суперправами называется root.
- в системе используется какой-то мощный язык shell (вроде как на основе C) - аналог языка   bat-файлов.
- выход из большинства консольных программ - кнопка q.
- для работы в сетях Windows существует загадочная Samba.
 
Того, чего я не знаю, намного больше:
Q1. Система именования устройств (hdd, floppy и любых других).
Q2. Какими пользоваться загрузчиками, как их установить и настроить, чтобы иметь на машине, кроме Linux, другие операционки.
Q3. Как устанавливать софт под FreeBSD (с компиляцией и без).
Q4. Какой лучше использовать файловый менеджер (хотелось бы типа Нортона).
Q5. Какой лучше использовать текстовый редактор (хотелось бы иметь MultiEdit 6).
Q6. Как настраивается русская раскладка клавиатуры и отображение русских имён файлов, где редактируются параметры системных шрифтов.
Q7. Как назначаются права на файлы и каталоги, какая применяется методика для назначения этих прав, где и какие права назначаются по умолчанию после установки, как посмотреть права на файлы и папки.
Q8. Как писать программки на языке shell
Q9. Как настраиваются компоненты системы - больше всего волнует сеть.
Q10. Как установить и настроить Samba.
Q11. Как сделать FreeBSD контроллером домена Active Directory.
Q12. Как устанавливается оборудование, как устанавливаются драйвера для него и где эти драйвера искать.
Q13. Каким лучше пользоваться софтом для http и ftp.
Q14. Как установить и настроить почтовик, веб и другие сервера, какие из них лучше.
Q15. Как установить и настроить firewall, роутер, NAT, прокси, публиковать сервера из локалки через роутер и проч.
Q16. Как определить уязвимости в системе и сервисах, как установить заплатки и где их искать.
Q17. Как бэкапить конфигурацию системы.
Q18. Как копировать байт-в-байт HDD, floppy и CD-ROM.
Q19. Как выбрать, установить и запустить терминального клиента для Windows.
Q20. Как делать загрузочные floppy и CD-ROM диски, как комплектовать их нужным софтом.
Q22. Что такое слайс?
Q23. Что такое порты FreeBSD?

Сначала я научился делать загрузочные floppy-диски - их два (можно было и без них, поскольку у меня уже был загрузочный CD, но дело принципа - учится так учиться). Для этого с загрузочного FreeBSD 4.5 я воспользовался программой tools\fdimage.exe и загрузил на 2 дискеты 2 образа - floppies\kern.flp и floppies\mfsroot.flp (I: у меня был CD-ROM под Windows 2000 Server):
I:\>tools\fdimage floppies\kern.flp a:
I:\>tools\fdimage floppies\mfsroot.flp a:

Далее все-таки загрузился с CD, на предложение режима Kernel Configiration Menu выбрал "full-screen visual mode" (для новичков). Попал в меню начальной конфигурации устройств. В верхней части находятся уже установленные устройства, в нижней те, что можно выбрать для установки. Мою сетевушку Genius на чипе RTL8139 в списке пока не нашел - были установлены какие-то другие Intel. Далее на синем экране выбрал опцию Standard.
AQ1. ad0 - первый hdd, ad1 - втрой hdd (нумерация начинается от Primary Master и кончается Primary Slave, и первый попавшийся диск в этом направлении будет ad0), fd - привод гибких дисков. После этого будет запущена программа - аналог fdisk, редактор разделов FreeBSD. Я устанавливал систему на 30-гиговый диск, в котором уже было 3 раздела:
1. Активный primary-раздел FAT32 с Windows 98 на 7 гигабайт.
2. Пустой extended-раздел, никак не отформатированный, на 15 гигабайт.
3. Еще один primary-раздел NTFS на 8 гигабайт.
AQ22. Что такое слайс? Это синоним раздела (partition) в терминах fdisk.

Редактор разделов увидел все разделы правильно, кроме NTFS - его он распознал как unused. Я захотел создать раздел для FreeeBSD (далее FBSD) на месте extended-раздела - выделил его горизонтальным курсором и нажал на "C". Не тут-то было, пришлось сначала extended-раздел удалить - нажать на "D". После этого у меня и extended, и NTFS разделы слились в один сплошной unused. Ну ладно, делать нечего, снова нажимаю "C", указываю размер "10000M" (10 гигабайт). Подтверждаю тип раздела 165 (FreeBSD). Напротив слайса стоит "=" - это значит, что он выровнен правильно (начало находится до 1024 цилиндра, насколько я понял), успешно создаю раздел и нажимаю на "Q" (выход).

Запускается Disk Label Editor. Эта программа создаёт на новом FBSD-слайсе рабочую файловую систему, на которой должны быть, как минимум, 2 раздела - root и swap. Можно не париться, и нажать на "A" (авто), но книжка этого делать не советует. Оказывается, есть смысл раздел root предоставить только для редкоизменяемых системных данных, и поставить потом на раздел root маркировку только для чтения (такую маркировку можно поставить только на целый раздел). Для других данных лепятся отдельные разделы. Рекомендуется их создать как минимум 4 раздела:
- root (/)
- swap - для данных виртуальной памяти ("файл подкачки")
- /usr - для данных пользователей
- /var - для файловой системы

Можно создать дополнительные разделы /tmp и /home. Раздел swap рекомендуется создать 256..512 мбайт, но не меньше объема ОЗУ (иначе при kernel panic запись на диск ОЗУ может повредить разделы за swap), и причём раздел swap рекомендуется разместить на самом быстром диске, поближе к началу диска. Я создал следующие разделы:
ad0s3a  /          400MB
ad0s3b  swap    512MB
ad0s2e  /var     400MB
ad0s2f  /tmp     200MB
ad0s2g  /usr     5000MB
ad0s2h  /home 3581MB

ad0s2x означает диск 0 (ad0), слайс 2 (на слайсе 1 у меня primary-раздел с Windows 98). Жму "Q" (выход), не пользуясь "W" (W не для создания новых разделов). Буквами нумеруются FBSD-разделы по порядку (с пропуском буквы "c" из-за того, что имя ad0s2c ссылается на диск ad0s2 целиком, со всеми разделами, и с пропуском буквы "d" из-за того, что это имя использовалось для специальных целей).

Следующий экран выбирает тип установки, другими словами - набор программ для установки. Если позволяет дисковое пространство, есть смысл нажать пробел на "All". Далее будет вопрос об установке портов. То же самое - если есть место, то лучше ответить "да". Что такое "порты", пока не понятно, но в книжке сказано, что "набор портов обеспечивает простую установку множества дополнительных программ, которые, возможно, снимут с ваших плечей большую часть 'грязной работы'" (потом я выяснил, что порты - это специальные папки, где находятся скрипты команды make, автоматизирующие установку программы при наличии Интернета - все необходимые части программы подкачиваются автоматически. Вот уже почти AQ23). далее выбираем источник для инсталляции (у нас CD-ROM). Пошёл процесс. Минут через 15 на заполнении /bin что-то сбойнуло - ошибка чтения CD. Сделал скрепкой для старенькому CD-ROM харакири, подышал на диск, запихнул назад. Пошло по-новой, но теперь для папки /doc. Чует моё сердце, что придётся переустанавливать по новой.

Что узнал нового?
1. Слайс - это аналог раздела в терминах Windows. На слайсе уже могут размещаться FBSD-разделы. AQ22.
2. Точка монтирования - это просто символическое имя, назначенное FBSD-разделу. Например, "/" - это точка монтирования root, "/usr"- точка монтирования /usr. Монтировать можно часть слайса (в терминах FreeBSD это раздел).
3. Бывает 2 типа FBSD-разделов. Один тип FS (файловая система) для root, /usr, /tmp и других. На тип FS можно назначать точки монтирования. Другой тип - swap для данных подкачки. Этот тип раздела нельзя монтировать.
4. Нужно назначать размер swap-раздела 256..512 мегов, но не менее, чем размер оперативки.
5. Немножко узнал про именование дисков и разделов (ad0s2x, см. выше).

-------------------------------------------------------------------------------------------------
21 декабря 2004
Скачал с ftp.freebsd.org образы CD-ROM для FreeBSD 5.3, купил новый привод CD-ROM. Начал ставить по новой, теперь уже версию 5.3.

Поставилась, но при установке пакетов выдавала кучу ошибок. Замучался жать на Enter, вытащил CD-ROM (снова применив скрепку как отмычку), после чего программа установки зависла напрочь. Разобрался с программой boot0cfg - для этого достаточно оказалось почитать справку (man boot0cfg). Вот примеры:
boot0cfg ad0 - установка загрузчика на самый первый hdd
boot0cfg -v ad0 - вывод подробной информации о текущей конфигурации загрузки
boot0cfg -s 1 ad0 - установка загрузочного слайса 1 по умолчанию (у меня Windows 98)
boot0cfg -s 2 ad0 - установка загрузочного слайса 2 по умолчанию (у меня FBSD)
Оказалось, что boot0cfg запоминает последнюю загруженную ось и делает этот выбор выбором по умолчанию.

Q24. Где прописываются надписи для загрузочного меню boot0cfg?
Q25. Как установить и сконфигурить boot0cfg без установки FBSD?
Q26. Где и как прописываются и редактируются команды автозагрузки?
Q27. Как просмотреть в консоли, какая сейчас текущая директория?
Q28. Как включить DHCP на интерфейсе Ethernet?

Переписал заново болванки FBSD 5.3, поставил 1-й компакт, запустил установку заново и отправился спать.

Что узнал нового?
6. CD-ROM при установке блокируется от открывания.
7. По умолчанию после установке логин - root, а пароль отсутствует.
8. Для логина и работы доступны сразу 8 консолей - вызываются по Alt+F1..F8.
9. /sbin/shutdown -h now служит для выключения системы. Команда для перезагрузки (эквивалентна команде reboot):
   /sbin/shutdown -r now 
Можно указать, когда перезагрузиться или сделать останов (при этом сообщение в кавычках получают все пользователи):
   shutdown -r 09:30 "Reboot for maintenance"
Можно указать относительное время для перезагрузки или останова:
   shutdown -h +15 "Going down for disk repair"
Команда halt -n подавляет системный вызов sync при останове, что используется в некоторых специальных случаях (например, после восстановления корневого раздела командой fsk, чтобы ядро не смогло затереть испроавления старыми версиями раздела, хранящимися в кеше). Команда reboot -n также подавляет вызов sync.
Комбинация Ctrl+Alt+Del по умолчанию перехватывается FBSD и вызывает действия, эквивалентные команде reboot. 
Команда poweroff идентична halt, но отличие у неё в том, что после останова системы посылается запрос системе управления питанием (если такая есть) с целью выключить питание. Это позволяет дистанционно включать машины.
10. ls - просмотр списка текущего каталога.
11. boot0cfg - конфигуратор начального загрузчика FBSD.
12. Типы слайсов такие - 0x0b (11) DOS FAT32, 0xa5 (165) FreeBSD.
13. http://opennet.ru/man_1_bsd.shtml..man_8_bsd.shtml - обалденная справка (man) в инете.
14. Во время установки доступны 3 консоли - Alt+F1 (собственно сам красивый инсталлятор), Alt+F2 (там, насколько я понял, выполняются все команды копирования и распаковки) и Alt+F4 (совершенно пустая рабочая консоль). Остальные консоли заблокированы (комп пикает при попытке в них войти).

-------------------------------------------------------------------------------------------------
22 декабря 2004
На этот раз компакт за ночь загрузился успешно (проблемы были как раз в нечитабельности CD) - вылезло поздравление, предложение нажать enter или space, и подсказка, что после окончания установки можно снова войти в эту утилиту, выполнив /usr/sbin/sysinstall.

Далее задали вопрос - будем ли конфигурить устройства Ethernet или SLIP/PPP? Я ответил "Да", и вывелся список интерфейсов, которые были обнаружены у меня на компе - адаптер Realtek 8139, 2 интерфейса SLIP для COM1 и 2 интерфейса PPP для COM2. Я начал с Realtek 8139. На вопрос о IPv6 ответил отрицательно.

Команда ls показала такие каталоги (текущая директория, но какая? Я пока не знал, что есть команда pwd =)):
.gnome
.history
.login
.cshrc
.gstreamer-0.8
.k5login
.profile

А вот что показала ls -F (слеши в конце показывают, что это каталог):
.gnome/
.history
.login
.cshrc
.gstreamer-0.8/
.k5login
.profile
 Опция -R включает отображение вложенных папок.

Когда я использовал ls -F .., то я вывел все папки уровнем выше. Потом пробовал выводить содержимое папок по порядку, и на команде
  ls -F ../root
получил тот же список, что и по
  ls -F
значит, текущая директория сейчас root.

AQ27. Есть более простой способ узнать текущую директорию - команда pwd. Она работает и для клиента ftp.

Что узнал нового?
15. ifconfig - конфигурирование параметров сетевого интерфейса.
16. dhclient - DHCP клиент. Его вызов без параметров пытается переконфигурировать все сетевые интерфейсы. Чтобы не поломать систему, в качестве параметра нужно как минимум указывать имя сетевого интерфейса (их узнать можно командой ifconfig без параметров).
17. Когда заводишь нового пользователя, которого планируется потом наделить правами root, то его лучше сделать членом группы wheel (тогда этот пользователь может получить привилегии root с помощью команды su(1)).
Q29. С помощью какой утилиты можно админить пользователей?
Q30. Как различаются типы файлов, как, например, определить, какой файл исполняемый, а какой - просто текст?
A30. Насколько я понял, есть 3 типа файлов (если не считать директории, а также жесткие и мягкие ссылки, пайпы) - текстовые, скрипты и бинарные исполняемые. Скрипт - это набор команд, который можно запустить на выполнение (наподобие файла *.bat или *.cmd в Windows). Таким образом, скрипты от текстовых файлов отличаются только тем, что у скриптов в начале файла стоит специальная запись, которая определяет выбор интерпретатора для скрипта, а также скрипт имеет установленный атрибут для выполнения файла (подробнее про скрипты смотри далее).
Q31. Где просматриваются и меняются переменные окружения?
AQ31. Команда set просматривает (и, возможно, меняет) переменные окружения.
Переменные окружения для шеллов csh или tcsh выводят/меняют setenv. Чтобы получить значение переменной, например, в командной строке, поместите символ $ перед именем переменной. Например, команда echo $TERM выведет значение переменной $TERM, а команда $EDITOR запустит системный текстовый редактор (у меня после свежей установки прописался vi). Имена переменных окружения чувствительны к регистру. set и setenv имеют иногда совпадающие по значению, но разные по регистру переменные окружения. Например, команды
# echo $home
# echo $HOME
    выводят одинаковый ответ
/root
Для просмотра переменных окружения также есть команда pintenv. Почему-то set и pintenv выводят несколько различающиеся списки.

-------------------------------------------------------------------------------------------------
24 декабря 2004
Залогинился под root, начал тестить сеть. Клиент DHCP, который я настроил на окончательных этапах установки, при автозагрузке корректно получил адрес и все параметры (и DNS в том числе). Ping идёт нормально и с FBSD, и снаружи, клиенты telnet и ftp работают нормально. DNS работает как-то странно - запросы наружу, в интернет, резолвятся нормально, а внутренние - нет. На попытку, например, ping as01 ответ такой - "ping: cannot resolve as01: Unknown server error".
Проблема, думаю, из-за того, что DNS у меня локальный, доменный Active Directory, и тут какая-то заморочка с авторизацией. Скан снаружи на открытые порты не показал ни одного работающего сервиса.

Что узнал нового?
18. dmesg выдаёт список сообщений загрузки. dmesg | more позволяет просматривать эти сообщения постранично. По этим сообщениям можно узнать имена устройств (идут в начале строки, а затем двоеточие).
    Например:
rl0  - у адаптера Ethernet RTL8139
psm0  - У мыши
ppc0  - у параллельного порта
lpt0  - у принтера
ad0  - жесткий диск (там же можно увидеть и размер жесткого диска)
fdc0  - контроллер floppy
fd0  - сам floppy-дисковод.
19. Добавление к команде | more позволяет просмотреть многоэкранный вывод (что-то вроде аналога опции /P в DOS).
20. После сообщений загрузчика (которые мы можем просмотреть с помощью dmesg) идут сообщения серого цвета. Это сообщения утилиты init.
21. init проверяет флажок clean - если он сброшен, init запускает проверку диска fsck. Если fsck обнаруживает ошибку, которую не может исправить, то она переводит систему в однопользовательский режим (для ручного исправления ошибки).
22. fsck можно запустить вручную. Без параметров она довольно долго (минут 5) проверяла диск. Просмотрев fsck | more, я обнаружил, что проверялись отдельно все точки монтирования (кроме ad0s3b swap) -
ad0s2e  /var
ad0s2f  /tmp
ad0s2g  /usr
ad0s2h  /home
23. Далее init монтирует все файловые системы, перечисленные в /ets/fstab, для которых установлен флажок mount at boot. Если вы хотите добавить точки монтирования (например, когда подсоединили диск после установки системы), автоматически включающиеся при загрузке, или изменить их, то вы должны отредактировать этот файл.

-------------------------------------------------------------------------------------------------
27 декабря 2004
Q32. Как просмотреть список запущенных процессов?
Q33. Как просмотреть список работающих пользователей?
Q34. Где (в каком файле и каталоге) хранятся пароли пользователей? Можно ли их посмотреть и как?

X-Window можно запустить командой startx. Это простейшая по виду графическая система, состоящая из трёх запущеных окон консолей и одного окна часиков. Вернуться обратно из X-Window можно, набрав в графической консоли - exit.

Команда clear очищает экран консоли.

Q35. Как установить gnome?

В FBSD по умолчанию установлены 2 консольных текстовых редактора - ee (попроще) и vi (посложнее). Рекомендуется изучить vi, поскольку он в UNIX стандарт де-факто. Немного о vi (по сути, вольный перевод man vi, секция FAST STARTUP):
- vi - экранный редактор текста. Это значит, что в Вашем распоряжении для редактирования весь экран, кроме последней строки. Эта самая последняя строка используется как интерфейс команд для vi, а также как строка выдачи от vi информации.
- у vi два режима - командный (сразу после старта) и редактирования текста (вход по одной из команд [a]ppend, [i]nsert, [o]pen). Выйти назад в командный режим можно одним или несколькими нажатиями на Esc, пока не бикнет динамик. Бипом также обозначаются ошибочные действия, при этом внизу высвечивается информация об ошибке.
- для запуска редактирования файла вводят vi имя_файла. Если имя файла не указать, то подразумевается новый файл (назначается имя /tmp/vi.случ_посл_символов).
- для выхода из vi вводят :q. Команда :q! сбрасывает все сделанные модификации файла.
- для записи файла вводят :w или :w имя_файла.
- команда :set verbose showmode выводит подробные сообщения и режим работы в нижней строке экрана.
- Ctrl+G показывает инфо о файле.
- ZZ (то же, что и :wq) сохранение изменений и выход.
- команда dd удаляет строку.
- команда x удаляет символ.

AQ32. Список запущенных процессов выдает команда ps. Расширенный список (с указанием прерываний и системных фоновых процессов) получают командой ps -ax. Список получится большой, поэтому если ищете какой-то конкретный процесс, воспользуйтесь ps -ax | grep имя_процесса.
      Кроме того, очень удобно просматривать загрузку машины командой top.

Что узнал нового?
24. Есть удобная команда для того, чтобы узнать имя текущего каталога - pwd.
25. Обычные пользователи (не root) при логине получают текущую директорию /home/логин_пользователя. Пользователь root получает текущую директорию /root.
26. Команда cd, как в DOS, меняет текущий каталог. "/" Означает самый верхний уровень каталогов. Точно так же, как в DOS, ".." означает родительский каталог, а "." - текущий каталог.
27. pine - почтовый клиент для консоли (попроще), mutt - тоже почтовый клиент для консоли, только гораздо мощнее.
28. Командный интерпретатор в FBSD называется shell. Традиционный shell для FBSD - csh. Другой интерпретатор (более ранний) sh имеет меньше возможностей (то, что я заметил сам - недоступна с помощью стрелок вверх/вниз история команд), чем csh. Можно sh запустить прямо из-под csh, а выйти назад - командой exit. По переменной окружения shell можно узнать, какая разновидность командного интерпретатора используется в теущей сессии. Еще более продвинутый шелл - bash (если ввести первые несколько букв команды и нажать два раза TAB, то выведется подсказка в виде списка возможных команд).
30. Команда grep позволяет распечатать строку(и) файла, в которой встретилось искомое слово. Например, команда grep user_name /etc/passwd
 выдаёт строку
user_name:*:1001:1001:Andrey:/home/sin:/bin/sh
 что говорит о том, что командный интерпретатор для пользователя user_name - sh.
32. Для просмотра сообщений загрузки можно использовать команду dmesg или more /var/run/dmesg.boot
33. Команда kill позволяет убить процесс. С её помощью можно сделать логоут из консоли. Еще логоут можно
    сделать командой exit.
34. При выдаче списка содержимого папки командой ls -F папка последний символ означает следующее (это не все возможные символы):
    / элемент является подкаталогом текущего каталога.
    * элемент является выполняемым файлом или сценарием.
    @ элемент является ссылкой на другой элемент файловой системы на жёстком диске.
35. В FBSD то, что файл является исполняемым, определяет бит прав доступа, который хранится в индексном дескрипторе файла (ваУ! Что-то слишком много новых терминов... отсюда сразу 2 вопроса...).

Q36. Что такое бит прав доступа, который определят, что файл исполняемый?
Q37. Что такое индексный дескриптор файла?

36. По умолчанию (это не касается пользователя root) ls не выводит скрытые файлы (dot-файлы, имя которых начинается с точки). Большинство скрытых файлов являются конфигурационными.
37. В конфигурационных файлах и скриптах строка комментария имеет в начале строки символ #.

-------------------------------------------------------------------------------------------------
28 декабря 2004
Что узнал нового?
38. cp - копирование, mv - перемещение файла, rm - удаление файла, папки или группы файлов и папок, rmdir - удаление пустого каталога (-p с подкаталогами).
39. touch - создание пустого нового файла, или изменение даты/времени последнего доступа для существующего файла, или модификация существующего файла. Следующие команды делают пустой файл (получаем файл 002.txt в текущем каталоге):
$ cat /dev/null > 002.txt
$ touch 002.txt
$ echo '' > 002.txt
40. Жёсткая ссылка (hard link, или просто link) - элемент файловой системы, указывающий на тот же индексный дескриптор, что и другой файл. Hard link нельзя использовать для каталогов и они не могут "пересекать границы" файловых систем. При удалении hard link сам файл не удаляется, уменьшается только счётчик ссылок (удаляется файл, когда счётчик ссылок становится равным 0). Создаётся командой ln, например:
# ln -s /usr/src/sys /sys
    В этом примере создается символическая ссылка (soft link; по умолчанию ln делает жесткую ссылку) /sys для папки /usr/src/sys
AQ37. Индескный дескриптор файла - это физическая точка на жёстком диске (месторасположение файла).
      На индексный дескриптор файла создаются жёские ссылки (hard links). Количество индексных дескрипторов на диске ограничено, поэтому нельзя делать на диске бесконечное количество малых файлов.
Q38. Сколько всего на диске индексных дескрипторов? Как узнать оставшееся незанятым количество индексных дескрипторов? Какие объекты, кроме файла, занимают отдельный индексный дескриптор?
41. Символическая ссылка (soft link, symbolic link, symlink) во многом подобна ярлыкам Windows. В отличие от жесткой, символическая ссылка представляет собой отдельный файл, имеющий свой индексный дескриптор на диске. В этом файле имеется ссылка на другой файл. Создается soft link командой ls -s.
    Отличия soft link от hard link:
- права доступа символической ссылки не отражают прав доступа к файлу. Кроме того, атрибуты символической ссылки (права доступа, владелец, группа) нельзя изменить. Это необходимо проделать с самим файлом.
- счётчик ссылки равен одному, а не двум.
- размер, приведённый для soft link, не равен размеру файла, на который она указывает.
- время модификации soft link не относится к файлу, на который она указывает.
- удаление или перемещение файла делают soft links на него нефункциональными.
- hard links не создают дополнительные индексные дескрипторы.
42. Рекомендация для создания ссылок - в работе с файлами в пределах одной файловой системы лучше использовать hard links. Они не устаревают при удалении или перемещении исходного файла, не занимают лишние индексные дескрипторы.
43. Символы заместители ? и * те же, что и в DOS. Однако, кроме этого существует ещё диапазон символов, например:
file[1-3] - совпадает с file1, file2 и file3
file[a-c] - совпадает с filea, fileb и filec
file[1234]* - совпадает с файлами, которые начинаются на file1, file2, file3 и file4
file[!1234]* - совпадает с файлами, которые НЕ начинаются на file1, file2, file3 и file4
Q39. Какая максимальная длина одиночного имени? Полного имени?
44. UNIX позволяет в имени файла использовать любые символы (даже * и ?). Если в имени файла есть пробел, что такое имя надо в командной строке использовать с кавычками. Нежелательно начинать имя с дефиса, поскольку в командах дефис используется как признак опции. В именах можно использовать escape-символ '\'. Применение этого символа в командной строке называется экранированием. Например, файл, который имеет название "*" лучше удалить так (чтобы не стереть другие файлы применяется экранирование символа *):
rm -i \*
 Файл file\1.txt надо удалить так:
rm -i file\\1.txt
 Файл file"3".txt надо удалить так:
rm -i file\"3\".txt
 Файл -p0 надо удалить так:
rm -- -p0
rm -f -- -p0
 -f отключает интерактивное подтверждение на удаление файла.
45. Поиск файла осуществляется командой find. Пример поиска файла в текущем каталоге, начинающегося на "lostfile":
find . -name "lostfile*"
Для поиска по содержимому файлов (не по имени) нужно использовать find совместно с grep. Например, следующая команда выводит список скриптов, в содержимом которых содержится слово test (поиск стартует рекурсивно с корневого каталога):
find / -name "*.sh" | grep test
46. Команда locate осуществляет поиск намного быстрее, поскольку она просматривает не диск, а базу данных.

-------------------------------------------------------------------------------------------------
13 января 2005
Что узнал нового?
47. wc - подсчёт в файле строк, слов и символов
wc .cshrc выводит
 35 128 801 .cshrc
48. less и more - поэкранный просмотр текстовых файлов (more является жёсткой ссылкой на less).
    Кроме того, файлы можно просмотреть с помощью текстового редактора, например ee. Выход из more достигается простой прокруткой до конца или нажатием Ctrl+C, а выход из less -
    нажатием q.
    Просмотреть файл, начинающийся с дефиса (например -p0), можно командой
less -- -p0
    more не позволяет просматривать такие файлы.
49. Поиск по шаблону grep, fgrep и egrep. egrep использует регулярные выражения, а grep и fgrep ничем не отличаются.
Пример:
grep if .cshrc
выводит строки, содержащие if и endif.
Чтобы искать именно слово if, нужно делать так:
grep " if " .cshrc
50. Сортировка текстового файла - sort.
51. Замена символов (внимание - не строк!) в файле -  tr. Пример:
tr 'a-z' 'A-Z' меняет строчные буквы на прописные, читая их из стандартного входного потока (клавиатура) и выводя на стандартный выходной поток (экран).
tr 'a-z' 'A-Z' file1 >file2 то же самое, но данные берутся из file1 и попадают в file2
52. cut - вывод частей строк из текстовых файлов. Примеры:
cut -c1-5 file1  выводит по 5 первых символов из каждой строки
cut -f1 file1  выводит первое поле каждой строки (разделитель полей по умолчанию - табуляция)
cut -f1 -d':' /etc/passwd выводит список пользователей системы (разделитель полей - символ :)
53. Простое форматирование и обработка текста - fmt. Более сложная обработка текста - sed и awk.
54. cat file1 - вывод файла file1 на экран. То же самое, однако, делают less и more.
55. uniq -c file1 - подсчёт в файле одинаковых строк и вывод только разных строк с количеством их вхождений.

-------------------------------------------------------------------------------------------------
11 апреля 2005
 Опять начал эксперименты. Выянил, что забыл пароль root. Кое-как вспомнил пароль к логину обычного пользователя.
Q40. Как сбросить/поменять забытый пароль root?
Q41. Как зайти в однопользовательский режим, и какие у него возможности?
 
AQ41. Выяснил, что если после выбора операционной системы FreeBSD высветится меню, справа от которого нарисована ASCII-картинка демона. В этом меню надо выбрать single user mode.

Так я и сделал. Загрузился в single user mode. Попытался запустить команду passwd root.
Не тут-то было - получил от ворот поворот (Command not found). Попытался воспользоваться man, find - с тем же результатом.
Пришлось заходить в обычном режиме, чтобы найти команду passwd. В итоге такой файл нашелся во многих каталогах, но самый вероятный кандитат был (остальное сорцы и просто файл паролей):
/usr/bin/passwd
В том же каталоге /usr/bin нашлась и команда find.

-------------------------------------------------------------------------------------------------
30 июля 2005
 Поставил FBSD 5.3. На VMware (GSX Server ver. 3.1.0 build-9089).
 Что узнал нового?
56. dhclient при старте системы получает установки из файла dhclient.conf. Список полученных ранее адресов хранится в dhclient.leases.

-------------------------------------------------------------------------------------------------
1 августа 2005
 Что узнал нового?
57. tarball - набор скриптов и исходников, облегчающих пользователю установку программы в систему.

-------------------------------------------------------------------------------------------------
2 августа 2005
 Что узнал нового?
58. Командная строка консоли, начинающаяся с # подразумевает root-а, а начинающаяся с % (или с $) - подразумевает обычного пользователя.
59. Во время установки последние несколько сотен линий, отображенные на экране, сохраняются и могут быть просмотрены. Для просмотра буфера нажмите Scroll Lock. Это включит прокрутку экрана. Вы можете использовать клавиши навигации или PageUp и PageDown для просмотра результатов. Нажмите Scroll Lock еще раз для отключения прокрутки.

-------------------------------------------------------------------------------------------------
4 августа 2005
 При установке FBSD 5.3 под VMware почему-то на начальном этапе пропускается шаг "Конфигурация ядра (kernel)". При этим должен предлагаться выбор устройств компьютера и их
конфигурирование, устранение конфликтов. Возможно, это связано с тем, что набор устройств, предоставляемых VMware, стандартен, и никаких конфликтов обнаружено не было.

-------------------------------------------------------------------------------------------------
5 августа 2005
60. Принцип назначения прав на файлы, каталоги и устройства (а каталоги и устройства тоже представлены как файлы) во FreeBSD очень прост. Права бывают трех типов: на чтение/запись/исполнение (rwx). Кроме того, права могут прикладываться только к трем объектам: владельцу, группе, которой принадлежит файл, и всем остальным. Таким образом, права на любое устройство/файл задаются комбинацией из 9 бит. Записывается это так:
rwxrwxrwx
    что означает - владельцу назначены все права (на чтение, запись и выполнение) группе назначены все права, всем назначены все права (редко встречающаяся ситуация), или:
rwxr-xr--
    что означает - владельцу назначены все права, группе на чтение и выполнение, а всем только на чтение.
    Права на файлы можно посмотреть командой ls -l папка/или_файл, они будут выведены в первом столбце. Причем первый символ в столбце означает не права, а тип файла (l link, - файл, d directory). В следующих столбцах будет выведены имя пользователя-владельца (3-й столбец) и группа, которой он принадлежит (4-й столбец).
61. Каталог /dev содержит все устройства, представленные в виде файлов, которые можно открывать, читать и писать в них.
62. Каталоги также являются файлами. К ним применимы те же права на чтение, запись и выполнение. Правда, в данном случае ''выполнение'' имеет несколько другой смысл. Когда каталог помечен как ''исполнимый'', это означает, что можно ''зайти'' в него (с помощью команды cd, change directory). Это также означает, что в данном каталоге можно получить доступ к файлам, имена которых известны (конечно, если собственные права на файл разрешают такой доступ).
    Если же требуется получить список файлов в некотором каталоге, права доступа на него должные включать доступ на чтение. Для того, чтобы удалить из каталога какой-либо файл, имя которого известно, на этот каталог должны быть даны права на запись и на исполнение.
63. Для изменения прав применяется команда chmod. В синтаксисе командной строки она использует "Символические обозначения прав":
 Опция   Буква  Значение
 (кто)   u  Пользователь (User)
 (кто)   g  Группа (Group)
 (кто)   o  Другие (Other)
 (кто)   a  Все (All, ''world'')
 (действие)  +  Добавление прав
 (действие)  -  Удаление прав
 (действие)  =  Явная установка прав
 (права)  r  Чтение (Read)
 (права)  w  Запись (Write)
 (права)  x  Выполнение (Execute)
 (права)  t  Sticky бит
 (права)  s  SUID или SGID
Например, вы можете использовать следующую команду для запрета доступа других пользователей к FILE:
% chmod go= FILE
Для изменения более чем одного набора прав можно применить список, разделенный запятыми. Например, следующая команда удалит права группы и ''всех остальных'' на запись в FILE, а затем добавит права на выполнение для всех:
% chmod go-w,a+x FILE
    Можно также задавать права в цифровом восьмеричном виде:
% chmod 600 logfile
64. Каждая программа, запущенная на BSD, порождает как минимум один процесс. Каждый процесс имеет уникальный номер PID. Процессы, не требующие интерактивного общения с пользователем в консоли и работающие в фоновом режиме, называются демонами. Обычно имя демона оканчивается на 'd', например, named.
65. Всем процессам с помощью команды kill можно посылать сообщения. Сообщения могут быть следующие (имена сигналов могут быть без префикса SIG):
 SIGSEGV  нарушение сегментации памяти
 SIGALRM  уведомление по истечении определенного периода времени
 SIGTERM  сообщение мягкого завершения процесса (может быть проигнорировано процессом)
 SIGKILL  сообщение жесткого завершения процесса
 SIGHUP  сообщение обычно используется для обновления установок (смотрите доку к приложению)
 SIGUSR1  (смотрите доку к приложению)
 SIGUSR2  (смотрите доку к приложению)
    Пример использования kill для посылки сообщения (обновление изменений конфигурации демона inetd. Команда grep(1) используется для поиска по заданной строке в выходном потоке. Эта команда запускается под обычным пользователем, а inetd(8) под root, поэтому ps(1) должна быть запущена с параметром ax):
% ps -ax | grep inetd
  198  ??  IWs    0:00.00 inetd -wW
%su
Password:
# /bin/kill -s HUP 198
Гарантированное уничтожение процесса по его идентификатору (-9 означает сигнал KILL):
# kill -9 идентификатор                
Гарантированное уничтожение процесса по его идентификатору (опция -s позволяет использовать имена сигналов):
# kill -s KILL идентификатор
Напомню, что идентификатор процесса можно узнать командой ps.
    Есть также удобная команда killall, которая удаляет процесс по имени. Вот так посылается сигнал SIGHUP демону syslogd:
# killall -e -HUP syslogd
66. В некоторых ситуациях требуется, чтобы интерпретатор воспринимал метасимволы как обычные, не несущие специальной смысловой нагрузки. Этого можно достичь, поставив перед символом обратную косую черту (\) [как в языке C] - так называемое экранирование. Например, команда echo $TERM выведет тип вашего терминала, в то же время команда echo \$TERM выведет именно слово $TERM, а не значение переменной $TERM.
67. По традиции, конкретный раздел справочника man указывается в скобках после команды, например, chmod(1) относится к утилите chmod (раздел справочного руководства 1), а chmod(2) - к соответствующему системному вызову (раздел справочного руководства 2).

-------------------------------------------------------------------------------------------------
6 августа 2005
 Запомним же эту дату - у меня впервые получилось установить и запустить приложение - Midnight Commander. В этом мне очень помогла книжка по FreeBSD "FreeBSD Handbook". Её можно найти на http://freebsd.org, а также в других местах Интернета в различных форматах. Мне даже удалось найти её перевод на русском языке, и довольно свежий. Книжка очень сжатая и хорошо организованная, подойдет как для новичков, так и для пользователей с опытом. 
 Что узнал нового?
68. ПО для FreeBSD поставляется в двух видах "дистрибутивов" - пакет и порт. Оба этих понятия появились, чтобы облегчить и автоматизировать процесс установки программы в системе.
69. Пакет - это вроде как уже откомпилированный бинарник. Из себя представляет единственный Файл, оканчивающийся на .tbz. Например, пакет, который я скачал с freebsd.org (и который у меня не установился из-за отсутствия некоторых библиотек в системе, но это уже другой вопрос), назывался mc-4.6.0_15.tbz. В FreeBSD Handbook почему-то окончания были другие - .tgz, и меня это поначалу слегка смутило.
70. Порт - это "суповой наборчик" исходников и конфигурационных скриптов, предназначенный для полностью автоматической компиляции и установки на целевой машине. Из себя представляет папку с конфигурационными файлами Makefile, distinfo, pkg-descr, pkg-plist, /files (если вы при установке установили порты, то это хозяйство находится у вас на машине. Например, в случае Midnight Commander все находилось в папке /usr/ports/misc/mc), а также файл архива (для Midnight Commander он назывался mc-4.6.0.tar.gz), который вам следует перед запуском make положить в папку /usr/ports/distfiles. Процедура установки порта по времени на порядки дольше, чем установка пакета, поскольку вовлекает процесс компиляции.
71. Процедура установки пакета подробно описана в FreeBSD Handbook. Все манипуляции с пакетами производятся командами:
pkg_add файл_пакета  //устанавливает приложение
pkg_delete имя_приложения //удаляет приложение
pkg_info   //показывает список установленных приложений
    Я эту систему опробовал - закачал по ftp во временно созданную папку /tmp/mc пакет mc-4.6.0_15.tbz, запустил pkg_add mc-4.6.0_15.tbz прямо в этой папке, и у меня все три команды отработали успешно. Правда, в результате Midnight Commander все-таки не заработал - при запуске ругался на отсутствие какой-то необходимой библиотеки. Наверное, их нужно скачивать и ставить отдельно. Не очень-то тут все "автоматизировано"!
72. Для закачки по ftp надо знать следующие команды:
ftp    //запускает интерактивный диалог ftp
open имя_сайта  //открывает соединение с нужным сервером имя_сайта. После успешного соединения надо будет ввести имя пользователя и пароль.
binary                  //переход из текстового в двоичный режим. Чтобы файл программы не испортился, это необходимо сделать.
get /путь_к_файлу_на_сайте/имя_файла /локальный_путь_куда_закачать/имя_файла
close
   //закрывает соединение с сервером имя_сайта
exit   //выход из интерактивного диалога ftp в командную строку
    Для общения с миром сетей Windows для меня пока единственный канал - ftp.
73. Процедура установки порта подробно описана в FreeBSD Handbook. Для установки пакета нужно:
- положить предварительно закачанный файлик архива с пакетом (у меня это был mc-4.6.0.tar.gz) в папку /usr/ports/distfiles.
- перейти в папку с пакетом на локальном компьютере - у меня это была папка /usr/ports/misc/mc - с помощью команды cd /usr/ports/misc/mc (проверить текущий каталог можно командой pwd).
- выполнить команду make. На этом этапе производится поиск архива с пакетом и его проверка, и если что-нибудь с ним не в порядке (отсутствует, не совпадает конторольная сумма), то
  производится попытка автоматически его получить с внешних ftp. Если все в порядке, то происходит процесс распаковки и компиляции (с кучей выводимых на экран сообщений).
- выполнить make install. Опять вывод кучи сообщений, и после этого установленную программу можно запускать из любой папки (в моем случае достаточно просто ввести mc[Enter]).
- выполнить make clean (удаление временных файлов?).
Насколько я понял, и make, и make install использует файл Makefile, находящийся в текущем каталоге. Чтобы удалить программу, установленную таким образом, нужно выполнить make deinstall (или make uninstall). Чтобы переустановить программу - make reinstall. Последовательность команд make deinstall и make reinstall не сработает, если вы запустите команду make clean. Если вы хотите убрать порт из системы после очистки каталога, используйте команду pkg_delete(1), как это описано в разделе о пакетах FreeBSD Handbook.
74. После установки порта команда pkg_info все равно выведет информацию об установленном приложении.
    Таким образом, порты и пакеты тесно взаимосвязаны. Воспользуйтесь командой pkg_info(1) для определения того, куда и какие файлы были установлены. К примеру, если вы только что установили Midnight Commander версии 4.6.0.13, то по команде
# pkg_info -L mc-4.6.0_13 | less
    будет выведен список всех файлов, установленных пакетом. Обратите особое внимание на файлы в каталогах man/, которые являются справочными страницами, etc/, которые являются конфигурационными файлами, и doc/, которые являются более подробной документацией. Если вы не уверены, какая версия приложения была только что установлена, то по команде вида
# pkg_info | grep -i mc-4.6.0_13
    будет выведен список всех установленных пакетов, в названии которых присутствует mc-4.6.0_13.
75. Порты и программы удобно искать командой whereis имя_приложения. Например, я нашел порты Midnight Commander командой:
# whereis mc
76. Структура файловой системы FreeBSD строго иерархическая - начинается с каталога /. Таким образом, если запустить поиск файла со стартовым путем /, можно не сомневаться - будет просмотрена вся машина со всеми смонтированными устройствами (винда нервно курит в сторонке).
77. Почему-то на моем CD-ROM не захотела работать команда mount. На попытку
# mount /dev/acd0 /cdrom
    выводилось сообщение об ошибке
mount: /dev/acd0 on /cdrom: incorrect super block
    Поиск man -k moint подсказал команду mount_cd9660(8), которая сработала нормально:
# mount_cd9660 /dev/acd0 /cdrom
    Запуск mount без параметров показывает список всех смонтированных устройств. Оказывается, /cd-rom правильно монтируется командой
mount /cdrom
    и демонтируется (это надо обязательно сделать для смены образа диска CD-ROM в VMware)
umount /cdrom
    Впоследствии я прочитал соответствующий раздел (16.6.7) в FreeBSD Handbook и узнал, почему не работала команда mount /dev/acd0 /cdrom - нужно указать команде mount(8), что файловая система имеет тип ISO9660 (параметр -t cd9660 всего лишь задаёт выполнение утилиты mount_cd9660(8)):
# mount -t cd9660 /dev/acd0 /cdrom
78. Справка man. Что означают скобки в ссылках на статью, например, ipnat(5)?
    Справочная система man разбита по командам (секциям, section) и по страницам (pages). Цифра 5 в скобках ссылки ipnat(5) означает страница 5 секции команды ipnat. Примеры вызова справки:
# man ipnat  //показывает подробную многостраничную помощь по команде
# man -S 5 ipnat (тот же эффект man 5 ipnat) //показывает страницу 5 по команде ipnat (вместо ipnat может быть
                                             // любая другая команда)
В работе с командой man удобны также следуюшие опции и приемы:
# man -h команда //выводит сжатый экран информации по опциям команды (часто более удобно)
# man -k команда //выводит список всех разделов справки, где встретилась команда
# man -f команда //-f дает почти тот же результат, что и -k (аналог whatis(1))
   // (n может состоять из списка номеров разделов, отделенных друг от друга двоеточием)
79. Про Midnight Commander 4.6.0 (безусловно, большая помощь для мозга, "загаженного" и избалованного Norton и Total Commander'om):
- легче стало ориентироваться в каталогах, просматривать содержимое архивов
- если открыть панель Info, можно посмотреть сколько свободного места на устройстве, тип файла, права и другую информацию
- выход из меню и help срабатывает только при двойном нажатии Esc, потому что Esc как горячая префиксная кнопка к командам. Например, горячая комбинация M-? (поиск файла) означает последовательное нажатие Esc и ?
- клавиши навигации не очень удобны и не соответствуют общепринятым. Пока непонятно, как перенастроить.
- у меня почему-то не заработало подключение к ftp, хотя из консоли команда ftp работает нормально - не отображается список файлов и папок ftp в панели, причем команда cd отрабатывает нормально. Зато отлично работает подключение к сетям Windows (SMB link). При этом отображаются длинные имена, и русские буквы видны кракозябрами.
- mc не использует никакого прямого вывода на экран и работает чисто как консольное приложение. Это означает, что он хорошо подойдет для текстового терминального подключения. Клиент telnet и ssh программа putty очень хорошо подходит для работы с Midnight Commander, поскольку поддерживает передачу цвета (!) а также гибко настраивается под кодировки терминала, что позволяет корректно отобразить линии псевдографики (ими рисуются панели mc) и русские буквы, если они где-нибуль встретятся (лучше бы этого не было!..).
- значок @ перед именем файла в списке панели означает ссылку, / каталог, ~ домашний каталог пользователя (в моем случае /root).
- если в строке виден синий значок [^], то это значит, что доступен список history (история команды или введенного ранее параметра), который можно вызвать M-h (нажимаем Esc и затем h).
- Crtl-o убирает панели mc и позволяет полноценно воспользоваться командной строкой.
- встроен samba-клиент (можно подключиться по сети к шарам Windows) - меню Левая панель\SMB-соединение...
80. Если делать полную установку FreeBSD 5.3 вместе с портами, то 4 гигабайта для слайса FreeBSD - оптимальный минимум. У меня на самом большом разделе /usr из 3096 мбайт свободным осталось 836 мбайт.

-------------------------------------------------------------------------------------------------
6 августа 2005
81. Попытался по указаниям FreeBSD Handbook установить и настроить графическую подсистему Xorg.
- В файл /etc/make.conf добавил переменную X_WINDOW_SYSTEM=xorg
- попытался сделать
# cd /usr/ports/x11/xorg
# make install clean
  и выяснил, что Xorg у меня уже установлен
- попытался выяснить тип моего VGA адаптера в виртуальной машине. В консоли VMware никакой информации получить не удалось. Посмотрел сообщения загрузки командой
# dmesg
  и прочитал строчку:
vga0: <Generic ISA VGA> at port ...
  Объем видеопамяти так выяснить и не удалось.

-------------------------------------------------------------------------------------------------
7 августа 2005
- начал экспериментировать. Тупо выполнил команду Xorg. Появился характерный черно-белый "точечный экран" с курсором в виде буквы X. Машина не повисла, просто консоли не переключаются, можно управлять только курсором. Как оттуда выйти, не понял, пришлось сделать rewert виртуальной машине.
- для того, чтобы система Xorg протестила оборудование и создала файл xorg.conf.new, запустил
# Xorg -configure
  По внешним признакам систестема зависла - появился черный экран без курсора, активность дисков пропала консоли не переключаются, комбинация Ctrl+Alt+Backspace не работает. Попытки переключения консолей и ввода команд выдают звуковые сигналы. Удалось перезагрузиться, введя в текущей консоли вслепую
# shutdown -h now
- файл xorg.conf.new все-таки появился, где и должен быть (там, куда после su(1) или непосредственного входа будет указывать переменная $HOME)
- запустил для тестирования команду
# Xorg -config xorg.conf.new
  Появился точь-в-точь такой же экран, как я получал при запуске Xorg без параметров. Для завершения тестирования нажал одновременно Ctrl+Alt+Backspace. Произошел выход назад в консоль.
- поигрался с xdm (вроде как графическая оболочка для логина, не понял, для чего и как использовать, и оставил на будущее). Попробовал понастраивать режимы с помощью xorgcfg(1), xorgconfig. Попробовал запустить startx.

-------------------------------------------------------------------------------------------------
8 августа 2005
82. Для подключения расшаренному каталогу Windows-машины можно использовать smbclient (samba-клиент):
# smbclient //имя_компьютера/зашаренный_каталог
smb: \>
    Становятся доступны определенные команды манипулирования файлами (список команд можно получить, введя ?). Для распознавания имен в сети FreeBSD не использует браузинг сети NetBIOS, а использует DNS. Поэтому, если вам не хочется вместо //имя_компьютера/... вбивать //IP_компьютера/..., то на сервере DNS надо прописать A-записи хостов сети.
83. Для копирования и вставки текста с экрана можно использовать мышиный демон - сначала выделяется кусок текста, а потом щелкается средняя кнопка мыши. Текст вставляется в то место, где находился текстовый курсор. Работает даже между консолями.
84. Во FreeBSD для оптимизации использования ресурсов есть возможность пересобрать ядро.
Ядро - это программа, в которую включен код операционной системы, работающий с периферийными устройствами. Можно отключить в ядре поддержку устройств, которые в вашей машине не используются. FreeBSD Handbook достаточно подробно описывает процесс переконфигурирования и сборки ядра в разделе 8.
- папка /usr/src/sys/i386/conf содержит шаблон конфигурации ядра GENERIC, который надо скопировать в свой собственный конфигурационный файл, например, MYKERNEL:
# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL
- теперь нужно в файле MYKERNEL закомментировать символом # все строки, которые включают поддержку отсутствующего у вас оборудования. Каждая строка шаблона и её назначение подробно описана в той же FreeBSD Handbook. Я закомментировал следующие строки (получил из результата команды diff -a GENERIC MYKERNEL):
#cpu  I486_CPU
#cpu  I586_CPU
#options  INET6   # IPv6 communications protocols
#options  SCSI_DELAY=15000 # Delay (in ms) before probing SCSI
#device  eisa
 
#device  ataraid  # ATA RAID drives
#device  atapist  # ATAPI tape drives
#device  ahb  # EISA AHA1742 family
#device  ahc  # AHA2940 and onboard AIC7xxx devices
#device  ahd  # AHA39320/29320 and onboard AIC79xx devices
#device  amd  # AMD 53C974 (Tekram DC-390(T))
#device  isp  # Qlogic family
#device  mpt  # LSI-Logic MPT-Fusion
#device  sym  # NCR/Symbios Logic (newer chipsets + those of `ncr')
#device  trm  # Tekram DC395U/UW/F DC315U adapters
#device  adv  # Advansys SCSI adapters
#device  adw  # Advansys wide SCSI adapters
#device  aha  # Adaptec 154x SCSI adapters
#device  aic  # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
#device  bt  # Buslogic/Mylex MultiMaster SCSI adapters
#device  ncv  # NCR 53C500
#device  nsp  # Workbit Ninja SCSI-3
#device  stg  # TMC 18C30/18C50

#device  scbus  # SCSI bus (required for SCSI)
#device  ch  # SCSI media changers
#device  da  # Direct Access (disks)
#device  sa  # Sequential Access (tape etc)
#device  cd  # CD
#device  pass  # Passthrough device (direct SCSI access)
#device  ses  # SCSI Environmental Services (and SAF-TE)
#device  amr  # AMI MegaRAID
#device  asr  # DPT SmartRAID V, VI and Adaptec SCSI RAID
#device  ciss  # Compaq Smart RAID 5*
#device  dpt  # DPT Smartcache III, IV - See NOTES for options
#device  hptmv  # Highpoint RocketRAID 182x
#device  iir  # Intel Integrated RAID
#device  ips  # IBM (Adaptec) ServeRAID
#device  mly  # Mylex AcceleRAID/eXtremeRAID
#device  twa  # 3ware 9000 series PATA/SATA RAID
#device  aac  # Adaptec FSA RAID
#device  aacp  # SCSI passthrough for aac (requires CAM)
#device  ida  # Compaq Smart RAID
#device  mlx  # Mylex DAC960 family
#device  pst  # Promise Supertrak SX6000
#device  twe  # 3ware ATA RAID

#device  agp  # support several AGP chipsets
     
#device  cbb  # cardbus (yenta) bridge
#device  pccard  # PC Card (16-bit) bus
#device  cardbus  # CardBus (32-bit) bus

#device  wlan  # 802.11 support
#device  an  # Aironet 4500/4800 802.11 wireless NICs.
#device  awi  # BayStack 660 and others
#device  wi  # WaveLAN/Intersil/Symbol 802.11 wireless NICs.

#device  uhci  # UHCI PCI->USB interface
#device  ohci  # OHCI PCI->USB interface
#device  usb  # USB Bus (required)

#device  ugen  # Generic
#device  uhid  # "Human Interface Devices"
#device  ukbd  # Keyboard
#device  ulpt  # Printer
#device  umass  # Disks/Mass storage - Requires scbus and da
#device  ums  # Mouse
#device  urio  # Diamond Rio 500 MP3 player
#device  uscanner # Scanners
#device  aue  # ADMtek USB Ethernet
#device  axe  # ASIX Electronics USB Ethernet
#device  cue  # CATC USB Ethernet
#device  kue  # Kawasaki LSI USB Ethernet
#device  rue  # RealTek RTL8150 USB Ethernet
#device  firewire # FireWire bus code
#device  sbp  # SCSI over FireWire (Requires scbus and da)
#device  fwe  # Ethernet over FireWire (non-standard!)
  
- не забудьте в файле MYKERNEL исправить ''метку'' ядра
ident          GENERIC
  на
ident          MYKERNEL
- кроме этого шаблона, описывающие устройства, есть дополнительный файл /usr/src/sys/conf/NOTES. Оттуда можно методом copy/paste брать строки для включения в основной шаблон MYKERNEL. Я этого делать не стал.
- сборка ядра "традиционным" способом:
# cd /usr/src/sys/i386/conf
# /usr/sbin/config MYKERNEL
- Перейдите в каталог, в котором будет собираться ядро. Запущенный как показано выше config(8) выведет имя этого каталога.
# cd ../compile/MYKERNEL
- Соберите ядро.
# make depend
# make
- Установите новое ядро.
# make install
- после перезагрузки система должна нормально заработать уже с новыми установками. Я сравнивал использование памяти и ресурсов у оригинальной системы и перекомпилированной, и разницы не заметил. Вслучае ошибок и проблем в загрузке перекомпилированной системы смотрите советы раздела 8.6. Решение проблем из FreeBSD Handbook.

-------------------------------------------------------------------------------------------------
9 августа 2005
85. Для сравнения файлов (поиска различий между ними) используются cmp и diff.
86. В файле /var/mail/root появляются письма от системы "You have new mail in /var/mail/root" - сообщения о действиях системы и ошибках, неудачных попытках логина, советы - что надо сделать системному администратору. Этот файл можно прочитать обычным текстовым редактором.
87. На больших системах с несколькими SCSI дисками (или несколькими IDE дисками, находящимися на разных контроллерах), рекомендуется создавать раздел подкачки на каждом диске (до четырёх дисков). Разделы подкачки должны быть примерно одного размера. Ядро не накладывает ограничений на размер раздела подкачки, но внутренние структуры позволяют иметь общий размер разделов подкачки, равный наибольшему, умноженному на четыре. Выделение под разделы подкачки примерно одинакового места позволить ядру оптимально расположить разделы подкачки. Установка размера подкачки больше требуемого нормальна, даже если этот объем не используется. В этих условиях может быть проще восстановиться после зависания программы перед тем, как возникнет необходимость перезагрузки.
88. Основные настройки системы располагаются в /etc/rc.conf - например, имя машины, использование DHCP, тип мыши. Изначально этот файл очень маленький - большинство установок
берется из /etc/defaults/rc.conf - файла установок по умолчанию. Администратор должен сделать записи в rc.conf, чтобы переопределить строки по умолчанию из /etc/defaults/rc.conf
(непосредственно /etc/defaults/rc.conf редактировать нельзя).
89. Файлы конфигурации приложений обычно устанавливаются в /usr/local/etc. В случае, если приложению нужно большое количество конфигурационных файлов, для их хранения будет создан подкаталог. Обычно, вместе с установкой портов и пакетов, устанавливаются и примеры конфигурационных файлов. Обычно они имеют расширение .default
Если не существует конфигурационных файлов для этого приложения, они будут созданы путём копирования .default файлов.

-------------------------------------------------------------------------------------------------
14 августа 2005
90. Низкоуровневое форматирование дискет на виртуальной (VMware) машине откровенно глючит, команда fdformat -f 1440 /dev/fd0 выполняется чрезвычайно долго и выдает кучу ошибок (timeout).
91. Многие программы используют внешний текстовый редактор для редактирования, например, конфигурационных файлов. При этом они запускают тот редактор, который указан в переменной окружения EDITOR (по умолчанию прописан vi, хотя я предпочел бы ee). Если эта переменная не установлена, то по умолчанию вызывается vi.
92. Версию установленной системы можно узнать командой
# uname -r
    Полная информация выводится так:
# uname -a
    Название и номер релиза можно посмотреть так (на Red Hat Linux):
# more /etc/redhat-release (или cat /etc/redhat-release)
93. Можно сохранить в виде файла все, что выводится на экран консоли с помощью утилиты script. Вот пример записи в файл протокола пересборки системы:
# script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
# make world
... compile, compile, compile ...
# exit
Script done, ...
    Совет из FreeBSD Handbook - не сохраняйте вывод в /tmp. Этот каталог может быть очищен при следующей перезагрузке. Лучше сохранить его в /var/tmp (как в предыдущем примере) или в домашнем каталоге пользователя root.

-------------------------------------------------------------------------------------------------
15 августа 2005
94. В файле /boot/device.hints находятся настройки оборудования, которые FreeBSD применяет при загрузке (номера прерываний, диапазон портов и проч.).

-------------------------------------------------------------------------------------------------
10 апреля 2006
95. Использование tcpdump и моста для анализа сетевых соединений
Для использования tcpdump нужно узнать имена сетевых карточек, на которых будем глядеть трафик:
# ifconfig
В дампе вывода этой команды слева присутствуют имена интерфейсов. У меня они назывались bde0 (сетевушка BroadCom) и rl0 (сетевушка на чипе Realtek 8139). Так смотрятся все соединения, которые проходят, например, через карточку rl0 (известные порты вместо чисел будут иметь имена)
# tcpdump -i rl0
А так - все соединения устройства, которое имеет MAC-адрес 00:0a:e4:75:a1:9e - это у меня был IP-телефон с IP loc1.loc2.2.164, который я подключил через мост (опция -n отключает подставление имен вместо IP-адресов и портов):
# tcpdump -n ether host 00:0a:e4:75:a1:9e
 Пример вывода tcpdump:
;инициализация IP-телефона - после включения он ищет станцию
15:52:35.213243 arp who-has 192.168.100.101 tell 192.168.100.101
15:52:48.319508 arp who-has loc1.loc2.2.164 tell 0.0.0.0
15:52:48.821464 arp who-has loc1.loc2.2.164 tell loc1.loc2.2.164
15:52:50.888930 arp who-has loc1.loc2.0.56 tell loc1.loc2.2.164
15:52:50.889096 arp reply loc1.loc2.0.56 is-at 00:02:b3:ef:d4:95
15:52:50.889826 IP loc1.loc2.2.164.5000 > loc1.loc2.0.56.4100: UDP, length: 13
15:52:50.890461 IP loc1.loc2.0.56.4100 > loc1.loc2.2.164.5000: UDP, length: 6
15:52:50.892892 IP loc1.loc2.2.164.5000 > loc1.loc2.0.56.4100: UDP, length: 13
15:52:50.893059 IP loc1.loc2.0.56.4100 > loc1.loc2.2.164.5000: UDP, length: 6
15:52:50.893216 IP loc1.loc2.0.56.4100 > loc1.loc2.2.164.5000: UDP, length: 10
15:52:50.896602 IP loc1.loc2.2.164.5000 > loc1.loc2.0.56.4100: UDP, length: 10
...
15:52:54.720344 IP loc1.loc2.0.163.7300 > loc1.loc2.2.164.5000: UDP, length: 9
15:52:54.728703 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.7300: UDP, length: 10
15:52:54.729529 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.7300: UDP, length: 15
15:52:54.729696 IP loc1.loc2.0.163.7300 > loc1.loc2.2.164.5000: UDP, length: 6
15:52:54.729852 IP loc1.loc2.0.163.7300 > loc1.loc2.2.164.5000: UDP, length: 10
15:52:54.738703 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.7300: UDP, length: 10
15:52:54.739526 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.7300: UDP, length: 20
15:52:54.739694 IP loc1.loc2.0.163.7300 > loc1.loc2.2.164.5000: UDP, length: 6
15:52:54.739850 IP loc1.loc2.0.163.7300 > loc1.loc2.2.164.5000: UDP, length: 11
15:52:54.739854 IP loc1.loc2.0.163.7300 > loc1.loc2.2.164.5000: UDP, length: 10
...
;звонок на обычный (не IP) телефон Nortel
15:55:19.786602 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 13
15:55:19.786859 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 6
15:55:19.811359 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 20
15:55:19.811363 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 14
15:55:19.811367 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 12
15:55:19.811516 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 12
15:55:19.811673 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 11
15:55:19.811677 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 10
15:55:19.811836 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 11
15:55:19.811841 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 15
15:55:19.811987 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 9
15:55:19.811991 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 15
15:55:19.818512 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:19.818679 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 9
15:55:19.820128 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:19.820294 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 11
15:55:19.821007 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:19.821175 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 11
15:55:19.822621 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:19.822788 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 12
15:55:19.824382 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
...
15:55:26.635539 arp reply loc1.loc2.2.164 is-at 00:0a:e4:75:a1:9e
...
15:55:26.674454 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 14
15:55:26.674621 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 6
15:55:26.706303 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.716292 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.726281 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.736271 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.746259 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.756248 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.766237 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.776381 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.786370 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.796358 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.806347 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.816336 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.826324 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.836469 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.846457 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.856446 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.866435 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.876423 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.886412 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.896245 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.906389 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.916377 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.924265 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:26.926308 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.934205 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:26.936249 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.944390 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:26.946434 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.954026 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:26.956382 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.963873 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:26.966384 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.973866 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:26.976379 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.984030 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:26.986386 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
15:55:26.993891 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:26.996403 IP loc1.loc2.0.139.5204 > loc1.loc2.2.164.5200: UDP, length: 92
...
15:55:29.559781 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 11
15:55:29.559785 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 15
15:55:29.564248 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.565198 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.569548 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.569714 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 9
15:55:29.571076 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.571243 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 15
15:55:29.571957 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.572123 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 9
15:55:29.573899 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.574848 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.574928 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.575095 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 11
15:55:29.576467 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.577077 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.578112 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.579007 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.580104 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.580778 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.581395 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.582016 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.582620 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.584006 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.584691 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:29.584800 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.586612 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 184
15:55:29.586831 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 6
15:55:29.594894 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.595844 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.604611 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.605405 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.613963 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.614757 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.624089 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.625039 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.634108 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.635057 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.644375 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.645169 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.654508 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.655302 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.664278 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.665072 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.673981 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.674774 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:29.683871 IP loc1.loc2.2.164.5200 > loc1.loc2.0.139.5204: UDP, length: 92
15:55:29.684664 IP loc1.loc2.0.139 > loc1.loc2.2.164: icmp 36: loc1.loc2.0.139 udp port 5204 unreachable
15:55:30.517564 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 13
15:55:30.517731 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 6
15:55:30.542075 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 11
15:55:30.542079 IP loc1.loc2.0.163.5100 > loc1.loc2.2.164.5000: UDP, length: 12
15:55:30.546213 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
15:55:30.546842 IP loc1.loc2.2.164.5000 > loc1.loc2.0.163.5100: UDP, length: 10
;конец звонка

[Еще использование tcpdump]
-n отключает имена вместо IP и номеров портов
-F файл читает выражение фильтра из файла
   (пример содержимого файла фильтра:
   host loc1.loc2.2.164 or host 10.80.82.10 or host 10.80.82.1 or host 10.80.82.2 or host 10.80.82.3)
-i eth1 задает имя интерфейса, который будет снимать статистику; eth1 может не иметь IP.
-w - задает бинарный вывод (-w) на консоль (-)
-l просто буферизирует вывод на консоль (будут выводиться только соединения с адресами и портами)
| tee outfile.txt пишет все, что пошло на консоль в файл

# tcpdump -n -F filt01.txt -i eth1 -w - | tee outfile.txt
Эта строка берет фильтр из файла и обеспечивает одновременный вывод на консоль и в файл соединений с IP и номерами портов.

# tcpdump -n -F filt02.txt -i eth1 -l | tee outfile.txt
Эта строка берет фильтр из файла и обеспечивает одновременный вывод на консоль и в файл RAW-данных (они не теряются и не перекодируются).

# tcpdump 'host 10.80.80.100 and udp' -n  -i eth1 -l | tee outfile.txt
Собирает только соединения 10.80.80.100 по протоколу UDP

# tcpdump 'host 10.80.80.100 and udp port 5000' -n  -i eth1 -l | tee outfile.txt
Собирает только соединения 10.80.80.100 по протоколу UDP порт 5000 (5000-й порт исходящий для 10.80.80.100)

-------------------------------------------------------------------------------------------------
11 апреля 2006
96. Безумно просто клонируются flash-диски любой системы под ASPLinux10. Например, я слил в файл систему, проинсталлированную на флешке:
# dd if=/dev/sda of=freeBSD.bin
    А так слил FAT-диск:
# dd if=/dev/sda of=fat1G.bin
    А вот так залил назад образ на флешку:
# dd if=freeBSD.bin of=/dev/sda
    После проверки оказалось, что клонирование происходит АБСОЛЮТНО ЧИСТО. Просто песня какая-то. Проверял и FAT (побитным сравнением файлов), и файловую систему FreeBSD. Самая большая сложность - определить, как именуется устройство (в моем случае флешка называлась /dev/sda. Помочь узнать имена устройств может команда dmesg | more), которое надо склонировать.
97. Так просматривается список смонтированных дисков, их размер и сколько на них осталось свободного места:
# df -m

-------------------------------------------------------------------------------------------------
12 апреля 2006
Как поднять мост на ASPLinux10
Мост - это очень полезная штука, которая позволяет прозрачно для всех протоколов соединить две сетевые карты. Полезно для удлинения кабеля Ethernet (как известно, длина одного сегмента Ethernet не может превышать 100 м, а с мостом можно увеличить размер сегмента до 200 м), для анализа проходящего трафика (с помощью tcpdump). Настройку производил с помощью доки http://linux-net.osdl.org/index.php/Bridge#Bridging_and_Firewalling.
1. Сначала опишу грабли, на которые наткнулся при попытке установить и настроить мост.
   - Попытался настроить мост по аналогии с FreeBSD (добавлением в sysctl.conf строк net.link.ether.bridge.enable и net.link.ether.bridge.config), но ничего не вышло - sysctl выдавал ошибку, что дескать, таких переменных нету.
   - Потом нашел какое-то старое руководство, которое предлагало закачать с ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz и установить пакет "Конфигурирование моста", но этот пакет тоже не пошел.
   - потом нашел на загрузочном DVD, с которого ставил ASPLinux10, пакеты bridge-utils-devel-0.9.6-3.1.i386.rpm и bridge-utils-0.9.6-3.1.i386.rpm (искал в Midnight Commander по маске именя файла *bridge*),
     установил их стандартным установщиком. Информации по этим пакетам не нашел, и как сделать мост с их помощью не разобрался.
   - потом каким-то чудом набрел на страничку http://linux-net.osdl.org/index.php/Bridge#Bridging_and_Firewalling, и все довольно легко получилось. Итак, опишу процесс.
2. Изначально я ставил ASPLinux10 с одной сетевой карточкой, она у меня нормально опозналась и работала, называлась eth0. Потом я добавил вторую карточку Realtek 8139. Она у меня разпозналась системой при загрузке, какой-то досовский мастер предложил сконфигурить её на этапе загрузки, но я отказался, решив все сделать руками на полностью загруженной системе. Сначала ifconfig у меня не показывала новую эту карточку.
3. C помощью команды dmesg | more узнал название новой сетевушки - eth1.
4. Ввел команду ifconfig eth1 up. После этого ifconfig начала выдавать информацию по новой карте.
5. Если дальше следовать руководству http://linux-net.osdl.org/index.php/Bridge#Bridging_and_Firewalling, то надо было действовать так:
# ifconfig eth0 0.0.0.0   // удаляется IP на eth0
# ifconfig eth1 0.0.0.0   // удаляется IP на eth1
# brctl addbr mybridge   // добавляется мост mybridge
# brctl addif mybridge eth0  // добавляется к мосту mybridge интерфейс eth0
# brctl addif mybridge eth1  // добавляется к мосту mybridge интерфейс eth1
# ifconfig mybridge up   // запускается мост
   После вышеуказанных действий на моей машине не были бы назначены IP, и она бы полностью пропускала трафик по мосту. Но у меня на eth0 уже был прописан адрес, и я решил попробовать его оставить. Опишу небольшие траблы, с которыми пришлось столкнуться при этом.
6. Прописал мост:
# brctl addbr mybridge
   После этого команда brctl show показала мне мост mybridge, а команда ifconfig показала сетевое устройство mybridge.
7. Добавил к мосту две сетевушки (напомню, что я IP-адрес с eth0 не снимал):
# brctl addif mybridge eth0
# brctl addif mybridge eth1
   После ввода первой команды у (brctl addif mybridge eth0) у меня переслала работать сеть по IP, настроенном на eth0. причем это выглядело таким образом - ifconfig исправно показывала этот старый IP, на самой машине с ASPLinux этот IP пинговался, а все другие хосты из подсети были не доступны, и сама ASPLinux перестала видеться по сети.
8. Поднял мост:
# ifconfig mybridge up
   После этого пошел весь трафик по мосту - у меня заработал IP-телефон, подключенный кроссом к eth0, и tcpdump показал сетевую активность. Старый IP (a.b.2.62), прописанный на eth0,
по-прежнему был не доступен снаружи, хотя ifconfig его показывал как ни в чем не бывало.
9. Удалил старый IP на eth0:
# ifconfig eth0 0.0.0.0
   После этого ifconfig перестал показывать старый адрес на eth0. Мост продолжал исправно работать.
10. Назначил на мост новый IP (на мосте старый адрес a.b.2.62/16 ifconfig установить не дал):
# ifconfig mybridge a.b.2.63/16
   После этого машина стала доступна по сети под IP a.b.2.63/16 (сеть у неё полностью заработала). Мост тоже продолжил работать.
11. Запустил проверку трафика IP-телефона - узнал MAC у него (командой arp -n), а потом запустил
   tcpdump:
# tcpdump -n ether host 00:0A:E4:75:A1:9E
-------------------------------------------------------------------------------------------------
13 апреля 2006
98. Как сделать и запустить скрипт (командный файл).
- сначала в любом текстовом редакторе создаем файл с произвольным названием и расширением (пусть это будет firstscript.txt) и запишем туда какую-нибудь
  команду (например ifconfig eth0 down).
- меняем добавляем права на запуск к этому файлу. Это можно проделать командой chmod или с помошью GUI-интерфейса (правой кнопкой щелкаем на файл и выбираем
  Properties).
- запускаем файл двойным кликом или введя его имя в командной строке:
# . имя_файла
   или
# bash имя_файла
- для скриптов рекомендуется использовать расширение .sh
- если в начале текстового файла есть строка #!/bin/bash (это так называемая "магическая строка" - "shebang"), то тогда такой файл тоже будет интерпретироваться системой как скрипт (все остальные строки будут переданы указанному командному процессору bash). Файл может также начинаться на #!/bin/sh.
- ОЧЕНЬ ВАЖНЫЙ МОМЕНТ: строки должны заканчиваться Unix-like (только LF или символ 0x0A), ни в коем случае не Windows-like (CR+LF или 0x0D,0x0A). Для этого под Windows лучше воспользоваться специальным редактором, например notepad2.
99. Настройка сети и моста на ASPLinux10 скриптом.
Перед выполнением этого скрипта я сделал так, что у меня сетевые интерфейсы при загрузке ASPLinux не настраивались (ifconfig выдавал только конфигурацию интерфейса lo [loopback]). Это я проделал GUI-остнасткой.

ifconfig eth0 0.0.0.0
ifconfig eth0 down
ifconfig eth1 0.0.0.0
ifconfig eth1 down

brctl addbr mybridge0
brctl addif mybridge0 eth0
brctl addif mybridge0 eth1

ifconfig mybridge0 loc1.loc2.11.111
ifconfig mybridge0 broadcast loc1.loc2.255.255
ifconfig mybridge0 netmask 255.255.0.0
ifconfig mybridge0 up

ifconfig eth0 up
ifconfig eth1 up

route add -net 0.0.0.0 netmask 0.0.0.0 gw loc1.loc2.0.254 dev mybridge0

Чтобы этот скрипт автоматически загружался при включении компьютера, в файле /etc/rc.d/rc.sysinit в конце я указал строку (просто указал путь к скрипту и его название):
/root/Desktop/network_setup.txt
Само собой, перед этим я установил права на запуск этого файла (см. пост 97). Кроме того, команды на запуск скрипта можно вставить в файл /etc/rc.d/rc.local.

-------------------------------------------------------------------------------------------------
14 апреля 2006
100. Логи ошибок на ASPLinux10 можно посмотреть в файле /var/log/messages

-------------------------------------------------------------------------------------------------
16 апреля 2006
101. mkdir имя_папки создаёт папку.
102. Как поставить пакет samba (включает в себя samba-клиент smbclient) из командной строки под FreeBSD:
- вставим CD-ROM №1 или его образ
- смонтируем CD-ROM
# mount /cdrom
- перейдём в папку со всеми пакетами (там находится нужный нам пакет). Внимание! Регистр букв пути ИМЕЕТ ЗНАЧЕНИЕ!
# cd /cdrom/packages/All
- установим пакет samba-2.2.12.tbz
# pkg_add samba-2.2.12.tbz
- проверяем, установился ли пакет
# man smbclient
Он у меня установился по адресу (узнал командой whereis smbclient)
/usr/local/bin/smbclient
103. Устранение ошибки 'Shared object "libm.so.4" not found, required by "libslang.so.1"'.
Такая ошибка у меня начала появляться на запуск mc после установки пакета mc-4.6.0_15.tbz. Сначала найдем библиотеку, которая есть у нас - она имеет название, похожее на libm.so.4
# find /lib/ -name "libm*"
/lib/libm.so.3
/lib/libmd.so.2
Теперь делаем линк с новым именем (libm.so.4) на старую библиотеку (libm.so.3):
# ln -s /lib/libm.so.3 /lib/libm.so.4
Все, теперь mc начал нормально запускаться.

-------------------------------------------------------------------------------------------------
17 апреля 2006
104. Сравнение двух файлов (-l задает печатать номер отличающихся байт и их значение).
# cmp -l файл1 файл2 | more
105. Печать списка файлов с их размером в байтах (-1 значит в каждой строчке по файлу, -s печатает размер каждого файла в блоках, -h задает человеко-читабельный формат,
--block-size=1 задает размер блока в 1 байт):
# ls -1 -s -h --block-size=1

-------------------------------------------------------------------------------------------------
18 апреля 2006
106. Анализ трафика с помощью tethereal
Чтение всего трафика с интерфейса eth1 (на нем может и не быть IP-адреса), вывод его на консоль и одновременная запись в файл на диске:
# tethereal -i eth1 | tee outfile.txt
Файл outfile.txt получится примерно такого формата:
 10.475720   10.81.16.5 -> loc1.loc2.0.168  UDP Source port: 5254  Destination port: 5218
 10.475722   10.81.16.5 -> loc1.loc2.0.139  RTP Payload type=ITU-T G.711 PCMA, SSRC=2864434397, Seq=1075, Time=86000
 10.475738   10.81.16.5 -> loc1.loc2.0.168  UDP Source port: 5258  Destination port: 5258
 10.475754   10.81.16.5 -> loc1.loc2.0.139  UDP Source port: 5236  Destination port: 5242
 10.475833  10.90.49.36 -> loc1.loc2.0.139  UDP Source port: 5200  Destination port: 5228
 10.475865     00.00.00 -> 00.00.00     FC Unknown frame
 10.476091     00.00.00 -> 00.00.00     FC Unknown frame
 10.476252  10.90.49.16 -> loc1.loc2.0.139  UDP Source port: 5200  Destination port: 5244

То же самое, но с запретом преобразования IP в DNS-имена и номеров портов в имена сервисов:
# tethereal -i eth1 -n | tee outfile.txt

То же самое, но в строке слева выводится время в формате HH:MM:SS.SSSSSS
# tethereal -i eth1 -n -t a | tee outfile.txt

Опция -V включает вывод подробной информации по пакетам. Указано > outfile.txt вместо | tee outfile.txt
не случайно, иначе у меня вешалась putty, подключенная через ssl.
# tethereal -i eth1 -n -t a -V > outfile.txt

Записывает RAW-данные в файл dump.bin. С опцией -w не работают опции -n, -t a, -V
# tethereal -i eth1 -w dump.bin

Опция -x включает после информации о соединении ASCII-HEX дамп:
# tethereal -i eth1 -n -t a -x > outfile.txt
Эта команда выводит данные в формате:
16:04:44.048575  loc1.loc2.3.185 -> loc1.loc2.255.255 BROWSER Host Announcement WS-HUB54604TM, Workstation, Server, NT Workstation, Potential Browser

0000  ff ff ff ff ff ff 00 0f fe a7 f2 20 08 00 45 00   ........... ..E.
0010  00 f2 32 b2 00 00 80 11 ef 2c 0a 32 03 b9 0a 32   ..2......,.2...2
0020  ff ff 00 8a 00 8a 00 de b9 33 11 0e 80 90 0a 32   .........3.....2
0030  03 b9 00 8a 00 c8 00 00 20 46 48 46 44 43 4e 45   ........ FHFDCNE
0040  49 46 46 45 43 44 46 44 45 44 47 44 41 44 45 46   IFFECDFDEDGDADEF
0050  45 45 4e 43 41 43 41 43 41 00 20 46 43 45 4a 45   EENCACACA. FCEJE
0060  4e 45 50 46 44 46 50 45 4f 46 45 46 50 44 41 44   NEPFDFPEOFEFPDAD
0070  42 43 41 43 41 43 41 43 41 42 4e 00 ff 53 4d 42   BCACACACABN..SMB
0080  25 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   %...............
0090  00 00 00 00 00 00 00 00 00 00 00 00 11 00 00 2e   ................
00a0  00 00 00 00 00 00 00 00 00 e8 03 00 00 00 00 00   ................
00b0  00 00 00 2e 00 56 00 03 00 01 00 00 00 02 00 3f   .....V.........?
00c0  00 5c 4d 41 49 4c 53 4c 4f 54 5c 42 52 4f 57 53   .\MAILSLOT\BROWS
00d0  45 00 01 00 80 fc 0a 00 57 53 2d 48 55 42 35 34   E.......WS-HUB54
00e0  36 30 34 54 4d 00 00 00 05 00 03 10 01 00 0f 01   604TM...........
00f0  55 aa 53 65 64 69 6e 20 4d 69 63 68 61 65 6c 00   U.Sedin Michael.

То же самое, что и предыдущая команда, только добавлен сложный фильтр по нескольким IP
(принцип построения фильтров захвата тот же что и у tcpdump). Можно в фильтре использовать
одинарные и двойные кавычки:
# tethereal host 10.80.82.1 or host 10.80.82.2 -i eth1 -n -t a -x > MyDoc/001.txt
# tethereal host '10.80.82.1 or host 10.80.82.2' -i eth1 -n -t a -x > MyDoc/001.txt
# tethereal host "10.80.82.1 or host 10.80.82.2" -i eth1 -n -t a -x > MyDoc/001.txt

-------------------------------------------------------------------------------------------------
21 апреля 2006
107. В файл /var/spool/mail/root сыплются сообщения системы об ошибках и других событиях.

-------------------------------------------------------------------------------------------------
27 мая 2006
108. Если не срабатывает quit и exit для выхода из программы, то наверняка поможет Ctrl+C или Ctrl+Break.
109. Исследование хостинга agava
a) Система - FreeBSD, версия ядра 4.11-RELEASE-p11, http-сервер Apache 1.3.33 (русифицированный, с автоматической перекодировкой контента win-1251 в нужную кодировку по запросу браузера), версия Perl 5.6.1, путь к Perl /usr/bin/perl, путь к sendmail /usr/sbin/sendmail, версия PHP 4.3.9, версия MySQL 4.1.14-log, версия cPanel 9.9.8-STABLE 14 (http-система управления сайтом).
b) Каждому пользователю предоставляются в тарифном плане "Normal" следующие сервисы:
- 500 мб дискового пространства (под сайт, архивы и файлы пользователя).
- ограниченный SSH2-шелл к командной строке FreeBSD (bash-2.05b);
- система управления сайтом cPanel (можно просматривать статистику подключений и трафика, почту, версию системы и ресурсов, информацию по установленным модулям, использование дискового пространства, заводить почтовые аккаунты, поддомены, базы данных MySQL и проч.);
c) Шелл предоставляет следующие команды:
 ls посмотр списка файов и каталогов
 pwd просмотр текущей директории
 cd смена каталога
 more просмотр содержимого файла
 less просмотр содержимого файла
 man просмотр документации по командам
 cp copy
 mv move
 rm удаление файлов и папок
 rmdir удаление папок
 mc Midnight Commander (!)
 ftp
 ssh
 telnet
 perl (как оттуда выходить, непонятно)
 ps просмотр запущенных процессов
 su изменение привилегий пользователя
 set  просмотр и изменение переменных окружения
 clear  очистка экрана консоли
 vi текстовый редактор
 ee текстовый редактор
 top просмотр использования ресурсов системы
 sh командный интерпретатор
 csh командный интерпретатор
 grep поиск по файлу
 fgrep поиск по файлу
 egrep поиск по файлу с использованием регулярных выражений
 find поиск файла
 kill операции по завершению с процессами
 touch создание нового файла, смена даты-времени
 ln создание hard link на файл
 wc  подсчёт в файле строк, слов и символов
 sort сортировка текстового файла
 tr замена строки в файле
 cut вывод частей строк из текстовых файлов
 fmt форматирование и обработка текста
 sed более сложная обработка текста
 awk более сложная обработка текста
 cat вывод файла на экран
 uniq подсчет одинаковых строк
 chmod изменение прав на файл
 whereis поиск программы
 make
 diff сравнение файлов
 cmp сравнение файлов
 uname посмотреть версию системы
 script сохранить в файл работу в консоли
 df просмотреть смонтированные устройства и сколько занято/свободно места
 mkdir создать папку
   Отсутствуют (или запрещены) команды:
 ping
 nslookup
 traceroute
 ifconfig
 boot0cfg
 dhclient 
 dmesg просмотр сообщений загрузки
 fsck проверка диска
 setenv 
 pine почтовый клиент
 mutt почтовый клиент
 pkg_add
 pkg_delete
 pkg_info
 mount
 umount
 shutdown
 smbclient
 fdformat
 tcpdump
 dd копирование дисков
 tethereal
d)
-bash-2.05b$ ls -l
total 92060
lrwxr-xr-x   1 root      hstuser        10 Oct 13  2005 FTP -> public_ftp
lrwxr-xr-x   1 root      hstuser        11 Oct 13  2005 WWW -> public_html
-rw-r--r--   1 hstuser  virthost  94204131 Feb 14 15:58 backup-2006.2.14-15.56.56.hstuser.tgz
drwxrwx---   3 hstuser  mail           512 Feb 17 12:09 etc
drwxr-xr-x   2 hstuser  virthost       512 May 27 01:52 log
drwxrwx---   3 hstuser  mail           512 Mar 20 11:10 mail
drwxr-xr-x   3 hstuser  hstuser       512 Apr 17 09:49 public_ftp
drwxr-x---  17 hstuser  nobody        1024 May 24 18:24 public_html
drwx------   6 hstuser  hstuser       512 Oct 13  2005 tmp
-bash-2.05b$ pwd
/home/hstuser

-----------------------------------------------------------------------------------------------------------------
23 июня 2006
110. ls -laF  позволяет просмотреть список каталога с правами на файлы и каталоги, размерами (только у файлов), датой создания.
  Пример вывода:
total 92124
drwx-----x   13 hstuser  virthost       512 Jun 23 11:18 ./
drwxr-xr-x  352 root      wheel         7680 Jun  1 16:49 ../
-rw-------    1 hstuser  virthost       915 Jun 23 10:48 .bash_history
-rw-------    1 hstuser  hstuser        17 May  2 12:03 .contactemail
-rw-------    1 hstuser  hstuser     29978 Feb 14 15:56 .cpanel-ducache
drwx------    2 hstuser  hstuser       512 Oct 14  2005 .gnupg/
-rw-r--r--    1 hstuser  virthost       337 Feb 14 18:05 .gpgtemp
drwxr-xr-x    2 hstuser  hstuser       512 Oct 14  2005 .htpasswds/
-rw-------    1 hstuser  hstuser        12 Jun 22 13:06 .lastlogin
drwxr-xr-x    3 hstuser  virthost       512 Jun 23 10:48 .mc/
drwx------    2 hstuser  virthost       512 Mar  2 11:02 .spamassassin/
-rw-------    1 hstuser  hstuser        24 Oct 17  2005 .spamkey
drwx------    2 hstuser  hstuser       512 Oct 14  2005 .trash/
-rw-r--r--    1 hstuser  virthost        18 Feb 14 18:09 .xmbs
lrwxr-xr-x    1 root      hstuser        10 Oct 13  2005 FTP@ -> pub_ftp
lrwxr-xr-x    1 root      hstuser        11 Oct 13  2005 WWW@ -> pub_html
-rw-r--r--    1 hstuser  virthost  94204131 Feb 14 15:58 backup-2006.2.14-15.56.56.hstuser.tgz
drwxrwx---    3 hstuser  mail           512 Feb 17 12:09 etc/
drwxr-xr-x    2 hstuser  virthost       512 Jun 22 23:55 log/
drwxrwx---    3 hstuser  mail           512 Mar 20 11:10 mail/
drwxr-xr-x    3 hstuser  hstuser       512 Jun 23 10:47 pub_ftp/
drwxr-x---   17 hstuser  nobody        1024 Jun  2 09:32 pub_html/
drwx------    6 hstuser  hstuser       512 Oct 13  2005 tmp/
-rw-r--r--    1 hstuser  virthost       108 May 27 22:54 typescript

111. hostname позволяет узнать имя текущей машины
112. sockstat -4 показывает открытые TCP сокеты. Пример вывода:
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
hstuser sshd     20396    4 tcp4   x.y.7.175:22       z.u.24.7:45854
113. netstat -a показывает статистику сетевых соединений, с адресами и портами. С опцией -n без символьных имен (работает намного быстрее). Строки, содержащие *.* показывают открытые порты сервисов, ожидающие соединения клиентов.
114. history  Просмотр листинга ранее введённых в консоли команд

-----------------------------------------------------------------------------------------------------------------
23 июня 2006
115. Как просматривать размер каталогов.
Команда ls, как ни странно, этого не умеет. Можно с помощью команды du, например (-h показать в человеческом формате с глубиной подпапок 2):
du -h -d2 | more
Можно также с помощью Midnight Commander через меню Command\show directory sIzes, но это неудобно, поскольку при переходе из каталога в каталог показ размеров отключается и приходится снова и снова лезть в это меню.

-----------------------------------------------------------------------------------------------------------------
9 июня 2007
116. Как логиниться по SSH2 под нужным именем:
# ssh -l login_here a.b.c.d
+ использовать только протокол ssh1
# ssh -l login_here -1 .a.b.c.d

-----------------------------------------------------------------------------------------------------------------
13 июня 2007
117. Файл /etc/hosts полностью аналогичен по назначению и методу использования, что и файл %SystemRoot%\system32\drivers\etc\hosts на платформе Windows.

-----------------------------------------------------------------------------------------------------------------
15 июня 2007
118. Смена пароля root
passwd root
119. Архивирование в linux
     Под Линукс в архивировании для новичков есть маленькая трудность, поскольку общеупотребительным форматом для архивов является так называемый tar.gz. Это не что иное, как двойной архив, продукт последовательной работы сначала утилиты tar, которая может слить файлы и каталоги в один несжатый файл (так называемый tarfile), а потом сжатие этого файла архиватором gzip. Такая практика повелась де-факто потому, что gzip не умеет работать с каталогами, а утилита tar, предназначенная для создания программных пакетов, это делать умеет.
     См. пункт 116 про утилиту tar и 117 про gzip, а также по утилите zip пункт 129.
120. Утилита tar позволяет слить несколько файлов в один.
Чтобы занести файлы 'apple', 'angst' и 'asparagus' в архив по имени 'afiles.tar', используйте следующую команду:
# tar --create --file=afiles.tar apple angst asparagus
   или
# tar -c -f afiles.tar apple angst asparagus
При этом если файл afiles.tar существует, старое содержимое его будет уничтожено.
Как забэкапить, например, каталог /usr, с подкаталогами (c - create, f - делать вывод в файл, а не на ленту):
# tar -cf backup_usr.tar /usr
Как посмотреть подробно содержимое tar (t - вывести список содержимого архива, v - verbose, f - file):
# tar -tvf backup_usr.tar
Как сразу сделать архив со сжатием:
# tar -czvf compressed-archive.tar file-stored-to-archive
Подсказка по командам tar:
# tar --help
121. Утилита gzip позволяет создавать архив со сжатием (с расширением .gz).
Как заархивировать файл (в этом примере создается архив backup_usr.tar.gz, а исходный файл удаляется):
# gzip backup_usr.tar
В этом примере исходный файл сохраняется, и создается новый файл архива backup_usr.tar.gz:
# gzip -c backup_usr.tar >backup_usr.tar.gz
Вывод подсказки:
# gzip -h
122. Утилита bzip2 делает более современный архив (с расширением .bz2).
Как заархивировать файл (в этом примере создается архив backup_usr.tar.bz2, а исходный файл удаляется):
# bzip2 backup_usr.tar
В этом примере исходный файл сохраняется, и создается новый файл архива backup_usr.tar.bz2 (k - keep):
# bzip2 -k backup_usr.tar
Как распаковать файл gcc-g++-4.2.2.tar.bz2 (d - decompress, при этом файл gcc-g++-4.2.2.tar.bz2 стирается, и появляется файл gcc-g++-4.2.2.tar):
# bzip2 -d gcc-g++-4.2.2.tar.bz2
В этом примере исходный файл сохраняется, и создается новый файл gcc-g++-4.2.2.tar:
# bzip2 -d -k gcc-g++-4.2.2.tar.bz2
Вывод подсказки:
# bzip2 -h
# bzip2 --help
123. Создание дерева каталогов одной командой:
# mkdir -p tmp/a/b/c

-----------------------------------------------------------------------------------------------------------------
18 июня 2007
124. Как сделать, чтобы сохранялись добавляемые командой route маршруты (ASPLinux):
- прописать эти команды в /etc/rc.d/rc.sysinit или в /etc/rc.d/rc.local (см. советы 97 и 98).

-----------------------------------------------------------------------------------------------------------------
21 июня 2007
125. Как в ASPLinux устанавливать пакеты (приложения) не из командной строки
Top Panel\Applications\System Settings\Add/Remove Applications - запустится утилита управления пакетами Package Management.

-----------------------------------------------------------------------------------------------------------------
25 октября 2007
126. ASPLinux10, установка пакета rpm из командной строки (на примере gcc):
# rpm -i gcc-3.3.3-7asp.i386.rpm
     Файл gcc-3.3.3-7asp.i386.rpm был взят с установочного DVD ASPLinux10.

-----------------------------------------------------------------------------------------------------------------
28 октября 2007
127. Поиск программ в системе.
which показывает, прописана ли программа в переменной среды PATH
# which httpd
whereis Поиск в системных каталогах:
# whereis httpd
locate поиск по скомпилированному индексу файловой системы (обычно этот индекс обновляется каждую ночь автоматическим запуском с помощью cron программы updatedb). locate позволяет искать не только программы, но и вообще любые файлы по заданному шаблону:
# locate signal.h
В операционках Red Hat, SuSE, ASPLinix можно проверить наличие установленного пакета rpm с помощью утилиты rpm, для этого надо знать имя пакета:
# rpm -q python
128. Комбинация клавиш Ctrl+D служит признаком конца файла (EOF, End Of File), обычно означает в консоли, что ввод пользовательских команд завершен.

-----------------------------------------------------------------------------------------------------------------
29 октября 2007
129. Как закачать файл по http с командной строки.
     В этом примере файл по ссылке http://ru.php.net/distributions/php-4.3.4.tar.gz скачается и сохранится в текущую директорию.
# wget http://ru.php.net/distributions/php-4.3.4.tar.gz

-----------------------------------------------------------------------------------------------------------------
30 октября 2007
130. В ASPLinux 10 есть приятная фича консоли, автоподсказка по командам и по именам файлов и папок (обеспечивается шеллом bash).
Работает это просто - вводится первая или несколько начальных букв искомого (команда, имя файла или папки). Одиночное нажатие на Tab выводит список имен, в которых присутствует введенная комбинация. Двойное нажатие выводит или список команд, (если введена одна буква, например), или содержимое директории.
Во FreeBSD 6.3 приятной фичи со списком нет, потому что по умолчанию запускается интерпретатор команд sh, но bash в системе установлен, поятому лучше сразу запустить его:
msinhome# bash
[root@msinhome ~]#
Как видно, у bash другой вид промта командной строки. К сожалению, у своя история команд (history не покажет, какие команды запускались до запуска bash).

-----------------------------------------------------------------------------------------------------------------
2 ноября 2007
131. Попытка забэкапить ASPLinux10.
     Слил содержимое папок:
/Distrib  тут дистрибутивы
/etc
/home
/root
/temp     сюда я закачивал всякие дистрибутивы и пакеты для установки
/usr
/var
      в архив (сначала создал папки /aaa и /bbb и закачал нужные папки в /aaa):
# tar -cf /bbb/071102asplinux10.tar /aaa
      После сжал полученный файл /bbb/071102asplinux10.tar:
# gzip -c /bbb/071102asplinux10.tar >/bbb/071102asplinux10.tar.gz
      В конце получил файл /bbb/071102asplinux10.tar.gz
132. История команд пользователя root хранится в файле /root/.bash_history
     Выводится история команд командой history.
133. Архивирование в ASPLinux с помощью утилиты zip. В следующем примере создается стандартный файл архива /bbb/071102asplinux10.zip и туда добавляется содержимое папок /home и /etc со всеми файлами и подкаталогами (опция -r):
# zip -r /bbb/071102asplinux10.zip /home /etc
-----------------------------------------------------------------------------------------------------------------
18 ноября 2007
134. Как посмотреть маршруты.
ASPLinux:
# route
# netstat -rn
FreeBSD:
# netstat -rn
Напомню, что буква n в опции -rn отключает перевод IP-адресов в доменные имена.

-----------------------------------------------------------------------------------------------------------------
20 ноября 2007
135. Midnight Commander (mc) в консоли некорректно рисует линии псевдографики, текст "съезжает". Причина заключается в неверно установленной кодировке терминала. У меня при наличии такой проблемы были следующие условия:
Midnight Commander 4.6.1-pre1a
PuTTY Release 0.58, конфигурация Windows\Translation\Win1251 (Cyrillic)
Linux 2.6.9-42.EL #1 Wed Jul 12 23:16:43 EDT 2006 i686 i686 i386 GNU/Linux (Red Hat Enterprise Linux AS release 4 (Nahant Update 4))
В файле /etc/sysconfig/i18n было прописано следующее:
LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en:ru_RU.UTF-8:ru_RU:ru"
SYSFONT="latarcyrheb-sun16"
Решение проблемы - замена в файле /etc/sysconfig/i18n строки LANG="en_US.UTF-8" на LANG="en_RU.UTF-8"

-----------------------------------------------------------------------------------------------------------------
25 декабря 2007
136. Команда date. Часто используется в скриптах для генерации уникального имени файла.
#количество секунд, прошедших с начала "эпохи UNIX":
date +%s
#выводит 2 цифры текущего года:
date -j +%y
#выводит 2 цифры месяца:
date -j +%m
#выводит 2 цифры:
date -j +%d
#выводит 6 цифр в формате YYMMDD:
date -j +%y%m%d
137. Запись результата вывода команды в строку (здесь результат команды date -j +%y%m%d записывается в переменную $resultstring):
resultstring=`eval date -j +%y%m%d` (FreeBSD)
138. Склеивание строк (FreeBSD):
str1=aaa
str2=bbb
str3=$str1$str2
echo $str3
  выведется aaabbb

-----------------------------------------------------------------------------------------------------------------
14 января 2008
139. Если установлен Midnight Commander (mc), то есть возможность использовать удобный текстовый редактор:
$ mcedit textfile_to_edit
140. Какие-то операции в webalizer-ом:
ls -al
ps -aux
kill -9 4399
kill -9 4404
kill -9 4405
ps -aux
kill -9 4406
kill -9 4407
w
top
cd tmp/webalizer
cd ~/tmp/webalizer
mv dns_cache.dns dns_cache.dns.bak
rm dns_cache.dns
/usr/local/cpanel/3rdparty/bin/webalizer -N 5 -D dns_cache.dns /usr/local/apache/domlogs/microsin.ru
141. Команда host несет в себе функции nslookup от Windows, например:
$ host krumpdance.513.com1.ru
krumpdance.513.com1.ru has address a.b.65.53
krumpdance.513.com1.ru mail is handled by 10 mail.513.com1.ru.
$ host a.b.65.53
53.65.b.a.in-addr.arpa domain name pointer mh16.agava.net.
142. Команда w отображает кто залогинился и что он делает (FreeBSD).

-----------------------------------------------------------------------------------------------------------------
16 января 2008
143. Программа, позволяющая работать с RS232 (COM-портами) - minicom (RedHat Linux).

-----------------------------------------------------------------------------------------------------------------
25 января 2008
144. Софт для записи CD - cdrecord или K3B.

145. Автостарт команд в Debian и vyatta прописывается в /etc/rc.local.

-----------------------------------------------------------------------------------------------------------------
2 февраля 2007
      Настройка роутера на FreeBSD 6.3 для Корбины.
1. Ставим как обычно. При смене дисков меняем их не спеша - сначала при запросе на смену жмем Enter, потом извлекаем диск, терпеливо ждем, пока привод определит диск (на это надо секунд 10..15), и только потом еще раз жмем Enter, подтверждая, что поменяли диск.
2. Настраиваем интерфейсы. Для проверки работы интерфейсов нам нужны команды:
# ifconfig
msinhome# ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet loc1.loc3.103.223 netmask 0xfffff800 broadcast loc1.loc3.103.255
        ether 00:90:27:29:5b:8e
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
fxp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 192.168.7.254 netmask 0xffffff00 broadcast 192.168.7.255
        ether 00:90:27:be:e6:3c
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
  Показывает, какие интерфейсы есть в системе, статус (если кабель воткнут, то должен быть статус active).
  У меня были интерфейсы fxp0 и fxp1.
# ifconfig fxp1 inet 192.168.7.254 netmask 255.255.255.0
  Назначает адрес на интерфейс.
# ping 192.168.7.254
# ping 192.168.7.1
  Проверяем работу интефейса (на компе 192.168.7.1 должен быть отключен файервол).
# dhclient fxp0
  Проверяем автоназначение адреса с DHCP-сервера Корбины. При этом в файле /var/db/dhclient.leases.fxp0
  должна появится запись наподобие:
 # more /var/db/dhclient.leases.fxp0
lease {
  interface "fxp0";
  fixed-address loc1.loc3.103.223;
  option subnet-mask 255.255.248.0;
  option routers loc1.loc3.96.1;
  option domain-name-servers 213.234.192.8,85.21.192.3;
  option dhcp-lease-time 604800;
  option dhcp-message-type 5;
  option dhcp-server-identifier 83.102.233.200;
  option classless-routes 8,10,10,160,96,1,24,85,21,79,10,160,96,1,24,85,21,90,10,160,96,
1,28,85,21,138,208,10,160,96,1,27,83,102,146,96,10,160,96,1,24,172,16,16,10,160,96,1,
28,85,21,72,80,10,160,96,1,32,78,107,69,98,10,160,96,1,24,78,107,23,10,160,96,1,28,85,
21,108,16,10,160,96,1;
  renew 3 2008/2/6 00:48:28;
  rebind 5 2008/2/8 15:48:28;
  expire 6 2008/2/9 12:48:28;
}
3. Это мы только тестировали интерфейсы. Чтобы настройки интерфейсов сохранились и применялись после перезагрузки,
   редактируем файл /etc/rc.conf:
# vi /etc/rc.conf
   В файле надо лдобавить строки:
ifconfig_fxp1="inet 192.168.7.254 netmask 255.255.255.0"
ifconfig_fxp0="DHCP"
4. Включаем сервер ssh. Для этого редактируем файл /etc/rc.conf и добавляем строку:
sshd_enable="YES"
   Потом редактируем файл /etc/ssh/sshd_config, раскомментруем и изменяем следующие опции (они должны быть в
   файле в таком виде, как указано здесь):
 ...
PermitRootLogin yes
 ...
PasswordAuthentication yes
 ...
   перезапускаем сервер sshd (доступны, кроме restart, команды start и stop):
# /etc/rc.d/sshd restart
5. Смотрим, какие есть в системе маршруты:
# netstat -r
Routing tables
Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            loc1.loc3.96.1        UGS         0      247   fxp0
10                 loc1.loc3.96.1        UGS         0       20   fxp0
loc1.loc3.96/21       link#1             UC          0        0   fxp0
loc1.loc3.96.1        00:15:e9:39:5c:02  UHLW       12        0   fxp0   1200
78.107.23/24       loc1.loc3.96.1        UGS         0        0   fxp0
78.107.69.98/32    loc1.loc3.96.1        UGS         0        0   fxp0
83.102.146.96/27   loc1.loc3.96.1        UGS         0        0   fxp0
85.21.72.80/28     loc1.loc3.96.1        UGS         0        0   fxp0
85.21.79/24        loc1.loc3.96.1        UGS         0        0   fxp0
85.21.90/24        loc1.loc3.96.1        UGS         0        0   fxp0
85.21.108.16/28    loc1.loc3.96.1        UGS         0        0   fxp0
85.21.138.208/28   loc1.loc3.96.1        UGS         0        0   fxp0
localhost          localhost          UH          0        0    lo0
172.16.16/24       loc1.loc3.96.1        UGS         0        0   fxp0
192.168.7          link#2             UC          0        0   fxp1
192.168.7.1        00:0e:a6:5a:43:56  UHLW        1    14654   fxp1    751
Internet6:
Destination        Gateway            Flags      Netif Expire
localhost          localhost          UHL         lo0
fe80::%lo0         fe80::1%lo0        U           lo0
fe80::1%lo0        link#4             UHL         lo0
ff01:4::           fe80::1%lo0        UC          lo0
ff02::%lo0         fe80::1%lo0        UC          lo0
    Вместо опции -r можно указать -rn, тогда таблица построится быстрее (без попыток
    преобразования IP в адреса).
 В системе обязательно должен быть маршрут по умолчанию:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            loc1.loc3.96.1        UGS         0      247   fxp0
 Если его нет, то сервера DNS не будут отвечать (они находятся за роутерами). В этом
 случае надо добавить маршрут:
# route add default loc1.loc3.96.1
6. Проверяем работу DNS:
# nslookup ftp.corbina.ru
Server:         213.234.192.8
Address:        213.234.192.8#53
ftp.corbina.ru  canonical name = earth.corbina.ru.
Name:   earth.corbina.ru
Address: 195.14.50.21
7. Проверяем доступность сервера VPN Корбины:
# ping vpn.corbina.net
PING view0.viewdns.corbina.net (85.21.0.90): 56 data bytes
64 bytes from 85.21.0.90: icmp_seq=0 ttl=248 time=1.222 ms
64 bytes from 85.21.0.90: icmp_seq=1 ttl=248 time=1.696 ms
64 bytes from 85.21.0.90: icmp_seq=2 ttl=248 time=1.398 ms
8. Устанавливаем nmap (из пакета). Пакет nmap.tar.gz и порты nmap-4.20.tar.bz2, make-3.81.tar.bz2 были предварительно скачаны из Интернета и положены в корень ftp-сервера 192.168.7.1. Если бы было настроено подключение к Интернету на FreeBSD, то необходимые порты nmap-4.20.tar.bz2 и make-3.81.tar.bz2 скачались бы автоматически. Скачиваем все, что нужно (nmap.tar.gz, порты nmap-4.20.tar.bz2, make-3.81.tar.bz2), с локального (192.168.7.1) ftp:
ftp 192.168.7.1
Connected to 192.168.7.1.
220 Fastream IQ FTP Server
Name (192.168.7.1:root): anonymous
331 Password required for anonymous.
Password:
230 User anonymous has successfully logged in.
Remote system type is Fastream.
ftp> ls
500 'EPSV': command not understood.
227 Entering Passive Mode (192,168,7,1,4,161).
150 Opening data connection for folder list.
dr--r--r--   1 ftp      ftp            0 Sep 09  2007 .
d---------   1 ftp      ftp            0 Sep 09  2007 ..
drw-rw-rw-   1 ftp      ftp            0 Sep 09  2007 public
dr--r--r--   1 ftp      ftp            0 Sep 09  2007 torrents
-r--r--r--   1 ftp      ftp         4162 Feb 02 16:21 nmap.tar.gz
-r--r--r--   1 ftp      ftp      2156077 Feb 02 17:17 nmap-4.20.tar.bz2
-r--r--r--   1 ftp      ftp      1151445 Feb 02 17:26 make-3.81.tar.bz2
226 File sent ok
ftp> binary
200 Type set to I.
ftp> get nmap.tar.gz
local: nmap.tar.gz remote: nmap.tar.gz
227 Entering Passive Mode (192,168,7,1,4,162).
150 Opening data connection for nmap.tar.gz.
100% |***********************************************************************************|  4162       2.25 MB/s    00:00 ETA
226 File sent ok
4162 bytes received in 00:00 (41.34 KB/s)
ftp> get nmap-4.20.tar.bz2
local: nmap-4.20.tar.bz2 remote: nmap-4.20.tar.bz2
227 Entering Passive Mode (192,168,7,1,4,183).
150 Opening data connection for nmap-4.20.tar.bz2.
100% |***********************************************************************************|  2105 KB    5.58 MB/s    00:00 ETA
226 File sent ok
WARNING! 8997 bare linefeeds received in ASCII mode.
File may not have transferred correctly.
2156077 bytes received in 00:00 (5.56 MB/s)
ftp> get make-3.81.tar.bz2
local: make-3.81.tar.bz2 remote: make-3.81.tar.bz2
227 Entering Passive Mode (192,168,7,1,5,247).
150 Opening data connection for make-3.81.tar.bz2.
100% |***********************************************************************************|  1124 KB    5.45 MB/s    00:00 ETA
226 File sent ok
1151445 bytes received in 00:00 (5.43 MB/s)
ftp> exit
221 Good Bye!
# копируем файлы в нужные места, чтобы их нашла утилита make
 cp nmap-4.20.tar.bz2 /usr/ports/distfiles/
 cp make-3.81.tar.bz2 /usr/ports/distfiles/
# распаковываем nmap.tar.gz, в текущей директории появится временная папка nmap
 tar -xf nmap.tar.gz
# заходим в папку nmap, там должен быть файл Makefile и файлы пакета.
 cd nmap
# запускаем проверку пакета
 make
 ...
# устанавливаем пакет
 make install
 ...
# делаем финальную очистку
 make clean
===>  Cleaning for gmake-3.81_2
===>  Cleaning for nmap-4.20_1
# удаляем папку nmap
 rm -r -f nmap
# удаляем файлы make-3.81.tar.bz2, nmap-4.20.tgz и nmap.tar.gz
 rm make-3.81.tar.bz2
 rm nmap*
# ищем, куда встала nmap
 find / -name "nmap" -print
/usr/local/bin/nmap
/usr/local/share/doc/nmap
/usr/local/share/nmap
/usr/ports/security/nmap
# проверяем запуск мана для nmap
 man nmap
# тестируем nmap (после перезагрузки не надо будет вводить полный путь до nmap):
 /usr/local/bin/nmap vpn.corbina.net
Starting Nmap 4.20 ( http://insecure.org ) at 2008-02-02 17:52 UTC
Interesting ports on vpn28-l0.msk.corbina.net (85.21.0.28):
Not shown: 1696 closed ports
PORT     STATE SERVICE
1723/tcp open  pptp
Nmap finished: 1 IP address (1 host up) scanned in 551.755 seconds
 /usr/local/bin/nmap 192.168.7.1
Starting Nmap 4.20 ( http://insecure.org ) at 2008-02-02 18:02 UTC
Interesting ports on 192.168.7.1:
Not shown: 1694 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
3389/tcp open  ms-term-serv
MAC Address: 00:0E:A6:5A:43:56 (Asustek Computer)
Nmap finished: 1 IP address (1 host up) scanned in 94.131 seconds
10. Устанавливаем mc.
Сначала скачиваем ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/mc-4.6.1.tar.gz. Далее:
 cp mc-4.6.1.tar.gz /usr/ports/distfiles
 cd /usr/ports/misc/mc
 make
 ...
 make install
 make clean
 rm mc-4.6.1.tar.gz
 reboot
   Без перезагрузки mc не запускается с ошибкой "Exec format error. Binary file not executable".
11. Обновляем базу данных команды locate (файл /var/db/locate.database), для чего запускаем 
#/usr/libexec/locate.updatedb
12. Устанавливаем pptpclient
# locate pptpclient
/usr/ports/net/pptpclient
/usr/ports/net/pptpclient/Makefile
/usr/ports/net/pptpclient/distinfo
/usr/ports/net/pptpclient/files
/usr/ports/net/pptpclient/files/README
/usr/ports/net/pptpclient/files/patch-aa
/usr/ports/net/pptpclient/files/patch-ac
/usr/ports/net/pptpclient/files/patch-pptp_ctrl.c
/usr/ports/net/pptpclient/files/ppp.conf
/usr/ports/net/pptpclient/pkg-descr
/usr/ports/net/pptpclient/pkg-plist
# cd /usr/ports/net/pptpclient
# make
 ...
=> pptp-1.7.1.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from http://heanet.dl.sourceforge.net/sourceforge/pptpclient/.
 ...
Выкачиваем на другом компе pptp-1.7.1.tar.gz, кладем его в /usr/ports/distfiles/ (как обычно, используя клиента ftp на компьютере с FreeBSD и сервер ftp на компьютере, где есть Интернет).
# make
# make install
# make clean
13. Добавляем на всякий случай маршрут до сервера vpn:
# route add -host 85.21.0.21 loc1.loc3.96.1
  или, если DNS работает нормально, просто
# route add -host vpn.corbina.net loc1.loc3.96.1
14. Настраиваем соединение pptp, для чего добавим в файл /etc/ppp/ppp.conf строки:
corbina:
 set authname тут_логин
 set authkey тут_пароль
 set timeout 0
 set ifaddr 0 0
 disable pap
 add! default HISADDR
 allow users
15. Запускаем отдельную консоль, в которой будем следить за логом процесса соединения (куда пишется лог, прописано в /etc/syslog.conf):
# tail -f /var/log/ppp.log
16. Запускаем соединение:
# pptp vpn.corbina.net corbina
  или
# pptp vpn.corbina.net corbina &
  В последнем случае процесс будет запущен в фоновом режиме.

-----------------------------------------------------------------------------------------------------------------
146. Как надо правильно работать в Midnight Commander (http://www.winsov.ru/linux009.php).
Интересен тот факт, что некоторые (чаще весьма крутые :) юниксоды работают в deco или вообще в командной строке. Командная строка - это конечно показатель высокого класса, но с другой стороны - это прошлый век. Не надо забывать и о цивилизованном подходе. Не будем вдаваться во флейм, а просто перейдем к повествованию все "крутых" качеств Midnight commander. Прежде всего надо бы заглянуть в ядро и посмотреть включена ли там поддержка псевдотерминалов:

[*] Unix98 PTY support
 (256) Maximum number of Unix98 PTYs in use (0-2048)      
   
Если так, то все отлично. Запустим mc и будем настраивать его так, как я считаю нужным. Прежде всего зайдем в меню F9 и в Options поставим в Display Bits поддержку 8bit символов на входе и выходе. Опять в Options->Layout:
Убрать menubar visible (экранное пространство очень дорого чтобы там валялась бестолковая строчка с меню)
Убрать keybar visible (по тем же соображениям, кнопки все надо помнить наизусть!)
Включить hintbar visible (там будет показано много интересного)

Запишите все опции. Теперь mc принял приемлемый вид.
Понятно что просмотр содержимого каталогов сразу по входу в них - это очень удобно. Не надо все время давить ls -la для просмотра состояния каталога. Все показано к тому же в удобоваримом виде.

Какие кнопки давить?
Стандартные кнопки писать не буду (любому известно что F5 это копирование).
Insert - отмечать файлы и каталоги
Ctrl-ENTER (ESC+ENTER или Alt-ENTER) - послать текущий об'ект в командную строку
Ctrl-X+T - послать выделенные об'екты в командную строку
Alt-p (ESC+p) - вернуть предыдущую (предыдущие) командную строку (строки)
Alt-n (ESC+n) - вернуть последующую (последующие) командную строку (строки)
Ctrl-\ - hotlist (для частоиспользуемых директорий)
Shift-F3 - просмотр файла (raw/ без учета расширения)
Shift-F4 - создать новый файл
F12 - Save as
Ctrl-O - погасить панели и посмотреть что под ними. Здесь же можно поработать в shell'e. Если при включенных панелях у вас не запускается ничего и выдается ошибка "The shell is already running a command" - это значит что нужно освободить шелл. Погасите снова панели и нажмите ENTER пару раз.
Ctrl-S - поиск файла
Сtrl-X+A - текущие VFS (ftp и пр.)
Ctrl-X+C - посмотреть/поменять permissions
Ctrl-X+O - посмотреть/поменять owner
Ctrl-X+L - создать link
Ctrl-X+S - создать symlink
Ctrl-X+Ctrl-S - редактировать symlink
Ctrl-X+D - сравнить каталоги
Ctrl-X+J - фоновые задачи
Ctrl-X+Q - быстрый просмотр содержимого файла

ESC+A - послать в ком.строку текущий каталог
ESC+C - быстро сменить каталог
ESC+H - history
ESC+P - вернуть предыдущую (предыдущие) командную строку (строки)
ESC+N - вернуть последующую (последующие) командную строку (строки)
ESC+S - поиск файла (в текущей директории)
ESC+? - раширенный поиск фала (или вхождения/regular expression)
ESC+цифра - тоже что и F{цифра} (ESC+5 = F5)

F4 (в редакторе) - поиск с заменой
F6 (в редакторе) - поиск с помощью регулярного выражения
Shift-Del (в редакторе) - удалить блок (и положить его в clipboard)
Shift-Ins (в редакторе) - вставить блок из clipboard (работает даже в другой консоли!!!) Можно редактировать два и более файлов на разных консолях и гонять блоки между ними.

Alt-TAB (ESC+TAB) - Крутейшая кнопка для поиска загружаемых файлов (например вы забыли как полностью пишется netcfg. Достаточно набрать в командной строке net и нажать Alt-TAB - вам сразу покажут что можно запустить, которое начинается со слова net) нажимать два раза!
Alt-TAB (ESC+TAB) - работает так же как в Bash TAB (т.е. подгоняет по первым буквам имена файлов или директорий. Наберите cd /u потом Alt-TAB - сразу будет cd /usr/ и т.д.)

Если нужно что-то срезать мышью с экрана давите Shift, а только потом отмечайте. Тоже самое касается вставки из мышиного clipboard'a.

Что еще крутого там есть?
Ну то, что он может работать с ftp серверами понятно - это из меню.
Редактор!!! - Это полный рулез!!!
Самое хорошее - это то, что там можно блоки отмечать с помощью Shift-стрелки
Далее hint! Пойдите к себе в домашнюю директорию cd ~/.cedit, найдите там файл Syntax, посмотрите какая версия Syntax у вас, запомните ее. Затем найдите в Интернет такой же файл, но настроенный на разные языки. Исправьте в нем версию на ту, которая поддерживается вашим mc (измените число в первой строчке) и положите вместо своего. Теперь тексты на языках C и perl у Вас будут с подсветкой синтаксиса.

-----------------------------------------------------------------------------------------------------------------
5 февраля 2008
147. Установка mpd версии 3.18
pptpclient у меня почему-то с Корбиной не заработал. Пришлось пробовать mpd.
# cd /usr/ports/net/mpd
# make
# make install
# make clean
# cd /usr/local/etc/mpd
# touch mpd.conf
# mcedit mpd.conf (или vi mpd.conf)
  Вставляем следующее содержимое в файл mpd.conf (комментарии я вставил с символом #, их надо из файла убрать):

default:
    load vpn

vpn:
    new -i ng0 vpn vpn              #создается интерфейс ng0, в который входит линк vpn (описан в файле mpd.links)
    set iface idle 0                #не разрывать связь при отсутствии исходящих пакетов
    set bundle disable multilink    #запрет мультилинка
    set iface up-script /usr/local/etc/mpd/io-up.sh        #запуск скрипта при поднятии  bundle - скрипт меняет маршрут по умолчанию
    set iface down-script /usr/local/etc/mpd/io-down.sh    #запуск скрипта при опускании bundle - скрипт меняет маршрут по умолчанию
    set bundle authname "тут_указываем_логин"
    set bundle password "тут_указываем_пароль"
    set link keep-alive 60 180      #настраивает временнЫе посылки эхо-пакетов LCP. См. описание команды set link keep-alive
    set link accept chap            #использовать протокол chap
    set link no pap                 #yt использовать протокол chap
    set bundle disable compression  #запрет сжатия
    set ccp yes mpp-e40             #разрешает 40-bit MPPE encryption
    set ccp no mpp-e128             #запрет 128-bit MPPE encryption
    set bundle disable crypt-reqd   #отключить требование шифрования
    set ccp no mpp-stateless        #по этой опции см. help по командам Compression layer
    set ipcp no vjcomp              #отключает Van Jacobson TCP header compression
    set link mtu 1460               #настраивает размер mtu в байтах
    open
   
Создаем также файлы mpd.links, io-up.sh и io-down.sh:
[mpd.links]
vpn:
    set link type pptp              #устанавливает тип линка
    set pptp peer 85.21.0.15        #устанавливает IP VPN-сервера Корбина
    set pptp enable originate incoming outcall   #см. команды типа устройства PPTP
    set pptp disable windowing                   #см. команды типа устройства PPTP
   
    Интересна также опция set link max-redial num, которая задает количество повторных попыток соединения.
    Если указать num равное 0, то будет бесконечное количество попыток.
   
[io-up.sh]
#!/bin/sh

route delete $4
route add $4 ВАШ_DEFAULT_GATEWAY
route delete default
route add default $4

echo $4 > /tmp/dr

[io-down.sh]
#!/bin/sh

dr=`cat /tmp/dr`
route delete $dr
route delete default
route add default ВАШ_DEFAULT_GATEWAY
rm -f /var/dr

Редактируем /etc/rc.conf.
defaultrouter="loc1.loc3.96.1"
gateway_enable="YES"
keymap="ru.koi8-r"
linux enable="YES"
local startup="/usr/local/etc/rc.d"
moused enable="YES"
mouse  port="/dev/psm0"
usbd_enable="YES"
ifconfig_fxp1="inet 192.168.7.254 netmask 255.255.255.0"
ifconfig_fxp0="DHCP"
sshd_enable="YES"
tcp_extensions="YES"
hostname="msinhome.mydomain.ru"
static_routes="localnet vpnpptp01 vpnl2tp01"
route_localnet="-net 10.0.0.0 -netmask 255.0.0.0 loc1.loc3.96.1"
route vpnpptp01="85.21.0.15 loc1.loc3.96.1"
route vpnl2tp01="85.21.0.254 loc1.loc3.96.1"

Кроме man mpd, дока по mpd в html-формате доступна в папке /usr/local/share/doc/mpd. При перезагрузке по идее должен сразу заработать Интернет. Можно также запустить mpd
вручную, при этом поднимется линк, прописанный в mpd.conf (при этом будет доступна консоль управления mpd):
# mpd
  или (при этом будет запущен mpd в фоновом режиме)
# mpd &
Остановить линк можно, выгрузив mpd командой kill (перед эти узнав id процесса mpd командой ps).
При запуске и останове mpd отрабатывают скрипты io-up.sh и io-down.sh соответственно
(они перенастраивают маршрут по умолчанию). Когда интерфейс поднят, то команда ifconfig
выдает следующую инфу об интерфейсе:
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1460
        inet 89.178.134.28 --> 85.21.0.15 netmask 0xffffffff
Когда mpd выгружен, то ifconfig никакой информации по ng0 не выводит.

148. mpd: multi-link PPP daemon.
     Здесь предоставлен краткий перевод документации по mpd версии 3.18, доступной по дресу http://www.bretterklieber.com/mpd/doc3/mpd.html
    
     Введение.
     MPD - сервис, обслуживающий PPP-соединения, и преобразующие их в сетевой интерфейс (не путать с демоном с таким же названием, но другой расшифровкой - mpd, Music Player Daemon). основан на сетевой библиотеке netgraph. Очень гибкий в настройке, поддерживает много комбинаций драйверов и сетевых протоколов, включая asynchronous serial (модемы), synchronous serial, Frame Relay, PPTP и т. д.
    
     В mpd существует две основных концепции - bundles и links (переводить эти термины не буду для уменьшения путаницы), с этими концепциями связаны layers - уровни управления mpd.
    
     Под link подразумевается физическое соединение типа точка-точка между локальной машиной и удаленной машиной (peer), например соединение по модему. В качестве link выступают физические сетевые интерфейсы (или один интерфейс). Линки конфигурируются на слое link. Ниже слоя link лежит слой device, где конфигурируются специфические для физических устройств параметры.
    
     Под bundle понимается совокупность одного или более links до одного и того же peer, которая формирует одно multi-link PPP соединение с полосой, равной сумме скоростей каждого из links, входящих в bundle. В системе bundle появляется как виртуальный сетевой интерфейс (виден, например, в выводе команды ifconfig может присутствовать виртуальный интерфейс ng0). Это обеспечивает слой interface, отвечающий за конфигурирование интерфейса (например, назначение IP и статических маршрутов). Bundle существует и подключен не зависимо от того, какие линки из входящих в bundle в настоящее время подключены и передают или нет пакеты. На слое bundle конфигурируются установки multi-link PPP, логин и пароль, а также политика управления линками (link management policy). Эта политика определяет, должны ли линки работать постоянно, либо подниматься или опускаться по запросу. Каждому bundle соответствуют также слои compression и encryption.
    
     Установка.
     Во FreeBSD mpd устанавливается из пакета или из порта и автоматически попадает в директорию /usr/local/sbin/mpd. Конфигурационные файлы находятся в папке /usr/local/etc/mpd. Перед запуском mpd необходимо настроить следующие файлы конфигурации:
    
mpd.conf
      Определяет одну или более конфигураций. Когда mpd вызывается из командной строки, указывается имя одной из конфигураций, заданных в mpd.conf. Если конфигурация в командной строке не указана, то загружается первая конфигурация из mpd.conf.
     
mpd.links
      Определяет линки, доступные в системе.
     
      mpd.conf И mpd.links имеют одну и ту же простую структуру. Запись (entry) состоит из метки и последующих строчек команд mpd. Метка всегда должна начинаться с первого символа и заканчиваться двоеточием. Команды начинаются с символа Tab или пробела, и идут сразу за меткой, строка за строкой. Entry (запись) заканчивается, как только встречается пустая строка.
     
mpd.secret
      Содержит пары логин и пароль, по одной строке на логин и пароль. Каждая строка может содержать третий параметр с IP и длиной маски подсети, что используется для идентификации соответствующего peer. Отсюда mpd берет информацию для аутентикации. Этот файл должен быть читаем только для пользователя root. При настройке mpd с Корбиной я этот файл не трогал.

mpd.script
      Содержит chat-скрипты для модемов. Мне этот файл тоже не понадобился.
     
      Запуск mpd.
      Запускается mpd так:
mpd [ options ] [ configuration ]
      Если указана configuration, то mpd просматривает mpd.conf в поисках соответствующей метки, и запускает встретившиеся по этой метке команды (вплоть до первой встретившейся пустой строки). Если в командной строк не указана configuration, то в mpd.conf ищется конфигурация по метке default. Если конфигурация не найдена, то из mpd.conf не выполняется никаких команд.
     
      Программа mpd может работать либо в интерактивном режиме, либо в фоновом (как демон). В интерактивном режиме mpd может принимать команды, вводимые с консоли. Для того, чтобы обеспечить единственную запущенную копию mpd, используется по умолчанию pid-файл /var/run/mpd.pid - он открывается и блокируется на запись.
     
      При работе в интерактивном режиме (или при подсоединении telnet-сесии, см. опции -a и -c) mpd может выполнять команды пользователя. Эти команды могут использоваться для конфигурирования различных слоев (layers) конфигурации или для получения информации по состоянию bundles и links. Доступные команды те же самые, что могут появляться в конфигурационных файлах mpd.conf и mpd.links. Наиболее часто используемая информационная команда show <подкоманда>.
      Справку по командам можно вывести командой help или help <команда>, например help show. Можно вводить команды сокращенно, пока это не вводит неоднозначности, например если ввести b вместо команды, то выполнится команда bundle.
     
      mpd понимает опции командной строки (они могут быть как в полной, так и в короткой форме). Перечислю опции, которыя я использовал:
-b --background
      запуск mpd в фоновом режиме демона. Если запустить его таким образом, то команда ps его уже не показывает, нужно использовать ps -ax | grep mpd
-a --console-address ip-address
-c --console-port port
      С одной из этих опций mpd будет воспринимать TCP-соединения, по которому можно передавать команды. Внимание, эти опции потенциально опасны, поскольку может подсоединиться ЛЮБОЙ пользователь системы. Можно здесь задать требование логина и пароля, но по умолчанию логин не сконфигурирован. По умолчанию слушается адрес 0.0.0.0 (т. е. слушаются все интерфейсы), и порт по умолчанию 5005.
-v --version
      отображает версию и выходит.
-h --help
      отображает короткую справку и выходит.

      Во время работы mpd отвечает на следующие сигналы:
SIGTERM
      Пытается корректно отключить все активные соединения и выходит.
SIGUSR1
      Указывает mpd начать соединение с текущим активным bundle. Если mpd уже пытается соединиться, то этот сигнал не дает никакого эффекта.
SIGUSR2
      Этот сигнал дает противоположный эффект - пытается закрыть активный bundle. Если bundle уже в состоянии закрытия, этот сигнал не дает эффекта.

Таким образом, можно управлять mpd, посылая ему сигналы:
Запускаем mpd как демон:
# mpd -b
После этой команды mpd разрывает соединение:
# killall -USR2 mpd
После этой команды mpd устанавливает соединение:
# killall -USR1 mpd
После этой команды mpd разрывает соединение и завершает работу:
# killall -TERM mpd

      Соединение и рассоединение с Корбина происходит очень быстро. При установке соединения у меня оно не всегда получалось работоспособным. При этом ifconfig показывает, что виртуальный адаптер находится в состоянии UP:
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1460
      Когда соединение работает, то добавляется еще строка, показывающая привязку в публичному IP:
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1460
        inet 89.178.131.155 --> 85.21.0.15 netmask 0xffffffff
      Сам mpd успешность соединения не отслеживает, нужно переустанавливать соединение вручную (посылая сигналы USR2 и USR1).
      
      Автозапуск mpd при старте обеспечивается строкой mpd_enable="YES" в файле /etc/rc.conf. При этом mpd запускается с опцией -b (в каталог /usr/local/etc/rc.d/ после установки автоматически записывается скрипт запуска mpd.sh).
     
      Чтобы писался лог, нужно создать файл /var/log/mpd.log с правами на запись для root (owner), а также добавить в файл /etc/syslog.conf две строчки:
!mpd
*.* /var/log/mpd.log
      Чтобы применить настройки немедленно, надо дать команду:
# killall -HUP syslogd

      Можно добавить автоматически маршрут на интерфейс при поднятии bundle. Это делается командой set iface route deafult|address[[/width] (без указания длины маски width маршрут будет однохостовый).
     
149. Включение роутинга в FreeBSD
первый способ:
- добавить строку gateway_enable="YES" в файл /etc/rc.conf, это сработает после перезагрузки.
Второй способ:
- выполнить команду sysctl -w net.inet.ip.forwarding=1, это сработает немедленно.
150. Как обновить базу данных locate
# /usr/libexec/locate.updatedb
151. Автонастройка и автозапуск при старте FreeBSD
- Основные настройки системы располагаются в /etc/rc.conf - например, имя машины, использование DHCP, тип мыши. Изначально этот файл очень маленький - большинство установок берется из /etc/defaults/rc.conf - файла установок по умолчанию. Администратор должен сделать записи в rc.conf, чтобы переопределить строки по умолчанию из /etc/defaults/rc.conf
(непосредственно /etc/defaults/rc.conf редактировать нельзя).
- также автонастройка производится скриптами, которые находятся в каталоге /usr/local/etc/rc.d (они запускаются при старте системы). Каталог прописан в строке local startup="/usr/local/etc/rc.d" файла /etc/rc.conf.
152. Как добавить строчки в файл без редактора vi:
/etc/>echo '' >> rc.conf
/etc/>echo '# Сислог - для кошки' >> rc.conf
/etc/>echo 'syslogd_enable="YES"' >> rc.conf
/etc/>echo 'syslogd_flags=""' >> rc.conf
153. Как послать в syslog что-нибудь из командной строки.
# logger -sp <средство>.<уровень> -t <имя_процесса> "текст"
Пример 1:
mycomp# logger 111111
  после этой команды в файле /var/log/messages появится запись:
Feb  8 14:57:15 mycomp root: 111111
Пример 2:
mycomp# logger -p cron.debug this is test message 222222
  после этой команды в файлах /var/log/cron и /var/log/debug.log появится запись:
Feb  8 15:07:02 msinhome root: this is test message 222222
Пример 3:
mycomp# logger -ps debug this is test message 333333
  после этой команды в файлах /var/log/debug.log появится запись:
Feb  8 15:15:52 msinhome root: this is test message 333333, а также сообщение выведется на
консоль:
root: this is test message 3333333

Примеры тестировались на FreeBSD 6.3 с /etc/syslog.conf, настроенным по умолчанию.
Вот его содержимое:
# $FreeBSD: src/etc/syslog.conf,v 1.28 2005/03/12 12:31:16 glebius Exp $
#
#       Spaces ARE valid field separators in this file. However,
#       other *nix-like systems still insist on using tabs as field
#       separators. If you are sharing this file between systems, you
#       may want to use only tabs as field separators here.
#       Consult the syslog.conf(5) manpage.
*.err;kern.warning;auth.notice;mail.crit                /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err   /var/log/messages
security.*                                      /var/log/security
auth.info;authpriv.info                         /var/log/auth.log
mail.info                                       /var/log/maillog
lpr.info                                        /var/log/lpd-errs
ftp.info                                        /var/log/xferlog
cron.*                                          /var/log/cron
*.=debug                                        /var/log/debug.log
*.emerg                                         *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info                                   /var/log/console.log ]
# uncomment this to enable logging of all log messages to /var/log/all.log
# touch /var/log/all.log and chmod it to mode 600 before it will work
#*.*                                            /var/log/all.log
# uncomment this to enable logging to a remote loghost named loghost
#*.*                                            @loghost
# uncomment these if you're running inn
# news.crit                                     /var/log/news/news.crit
# news.err                                      /var/log/news/news.err
# news.notice                                   /var/log/news/news.notice
!startslip
*.*                                             /var/log/slip.log
!ppp
*.*                                             /var/log/ppp.log
!mpd
*.*                                             /var/log/mpd.log
154. Как в syslog организовать прохождение логов через программу-фильтр.
  Сначала создаем pipe:
  mkfifo /path/to/pipe
Затем в /etc/syslog.conf пишем строчку типа:
  *.info                        |/path/to/pipe
Перезапускаем syslogd:
  kill -1 'cat /var/run/syslogd.pid'
И запускаем свою программу, которая будет читать с пайпа данные.
155. Как пересылать логи с Cisco в syslog
  На Cisco:
    router(config)# logging тут_IP_FreeBSD_где_будут_писаться_логи
    router(config)# logging source-interface fastethernet 0/0
    router(config)# logging facility local0
В syslog.conf (syslogd нужно запускать с ключем -r):
    local0.* /var/log/cisco.log
156. Утилита sysctl нужна для просмотра и установки переменных системы.
Примеры:
# sysctl -a
    Выводится информация по всем переменным. Можно узнать много чего интересного - версию FreeBSD (kern.version), имя машины (kern.hostname), имена HDD (kern.disks), выделение памяти (kern.malloc), параметры виртуальной памяти (vm.vmtotal, vm.loadavg), параметры установленного железа (подветки dev.) и т. д.
# sysctl -w net.inet.ip.forwarding=1
    Установка переменной net.inet.ip.forwarding в 1, что включает маршрутизацию. Переменная сохранит свое значение при перезагрузке.
# sysctl -a net.inet.ip.forwarding
    Вывод значения только одной переменной.
# sysctl -d net.inet.ip.forwarding
    Вывод описания одной переменной или переменных всей ветки (например, если указать вместо net.inet.ip.forwarding только net).
157. ipnat (FreeBSD 6.3)
      Утилита, реализующая подсистему NAT. Чтобы включить NAT, в /etc/rc.conf нужно добавить:
ipnat_enable="YES"    # включить NAT
gateway_enable="YES"  # включить пересылку кадров между интерфейсами
      После этого перегружаемся.
      Конфигурация ipnat хранится по умолчанию в файле /etc/ipnat.rules (уже задано в /etc/defaults/rc.conf). Файла /etc/ipnat.rules пока нет, его надо создать. Пример файла (комментарий также можно вставлять в строке, начинающейся на #):
# fxp - сетевой интерфейс, который подключен к Корбине, по DHCP ему выдан адрес loc1.loc3.103.223
map fxp0 from 192.168.7.0/24 to any -> 0/32
# если бы был фиксированный адрес a.b.c.d, то запись была бы такой:
#map fxp0 from 192.168.7.0/24 to any -> a.b.c.d/32
# ng0 - внешний виртуальный интерфейс, создаваемый демоном mpd через pptp соединение поверх fxp0.
#       IP также выдается автоматически на этом интерфейсе.
map ng0 from 192.168.7.0/24 to any -> 0/32
# полностью выводит машину 192.168.7.1 наружу от имени IP 89.178.130.188 (на 192.168.7.1 работает ftp-сервер,
#  нормально видимый из Интернета по адресу 192.168.7.1, а также открыт порт StarCraft UDP 6112).
#  89.178.130.188 выдал протокол PPP на интерфейсе ng0. К сожалению, я не выяснил, как не указывать тут
#  фиксированный адрес (он постоянно меняется при переподключении по PPTP)
#  Для хоста указание длины маски /32 можно опустить.
bimap ng0 192.168.7.1 -> 89.178.130.188
# Данное правило обрабатывает FTP-трафик от шлюза:
map ng0 0.0.0.0/0 -> 0/32 proxy port 21 ftp/tcp

      Эта команда применяет правила /etc/ipnat.rules без перезагрузки:
# ipnat -CF -f /etc/ipnat.rules
      Документация:
# man ipnat
/usr/share/examples/ipfilter/BASIC.NAT
/usr/share/examples/ipfilter/nat-setup
-----------------------------------------------------------------------------------------------------------------
11 февраля 2008
158. Как посмотреть, кто работает и за какими консолями:
# who
root             ttyp0    Feb 10 09:18 (192.168.7.1)
root             ttyp1    Feb 10 09:20 (192.168.7.1)
root             ttyp3    Feb 10 09:26 (192.168.7.1)
     Как посмотреть, под каким пользователем я залогинен:
# whoami
root
     Как посмотреть, кто залогинен, когда, с какого IP, какая программа выполняется в консоли:
# w
 7:04PM  up 2 days, 10:51, 2 users, load averages: 0.00, 0.00, 0.00
USER             TTY      FROM              LOGIN@  IDLE WHAT
root             p0       192.168.7.1      Sun09AM     - w
root             p1       192.168.7.1      Sun09AM  1:53 mc

159. Команда time позволяет измерить время работы скрипта или программы:
[Скрипт №1 test.sh]
#!/bin/sh
i=0
while [ $i -lt 1000 ]
do
  i=`echo $i+1|/usr/bin/bc`
done
echo $i

[Скрипт №2 test.bash]
#!/usr/local/bin/bash
i=0
while [ $i -lt 1000 ]
do
  i=`echo $i+1|/usr/bin/bc`
done
echo $i

$ time ./test.sh
1000
real    0m7.447s
user    0m1.428s
sys     0m5.812s

$ time ./test.bash
1000
real    0m14.223s
user    0m2.273s
sys     0m11.559s

Легко видеть, что тяжеловесный bash(1) ворочал этот скрипт почти вдвое дольше.

Последнее обновление ( 16.12.2010 )
 

Комментарии  

  1. #1 макс
    2010-10-0408:23:36 тема =). Спасибо, нашёл для себя интересные моменты.

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017