Тут решил поместить свои записи первых шагов. Поначалу непонятных вопросов было слишком много, и если ответ находил, то старался сразу его записать. 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 Configuration 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: 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 mtu 1500 options=8 inet loc1.loc3.103.223 netmask 0xfffff800 broadcast loc1.loc3.103.255 ether 00:90:27:29:5b:8e media: Ethernet autoselect (100baseTX ) status: active fxp1: flags=8843 mtu 1500 options=8 inet 192.168.7.254 netmask 0xffffff00 broadcast 192.168.7.255 ether 00:90:27:be:e6:3c media: Ethernet autoselect (100baseTX ) status: active plip0: flags=108810 mtu 1500 lo0: flags=8049 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 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 mtu 1460 Когда соединение работает, то добавляется еще строка, показывающая привязку в публичному IP: ng0: flags=88d1 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) ворочал этот скрипт почти вдвое дольше. |
Комментарии
RSS лента комментариев этой записи