FAQ по FreeBSD

Ноябрь 2nd, 2012

Как сменить свой пароль

passwd

Как сменить пароль другого пользователя

выполняется от имени пользователя root

passwd _USER_

где _USER_ логин пользователя которому меняем пароль

Я забыл пароль root

Перегружаем систему и заходим в режиме Singe mode

после окончания загрузки набираем /bin/sh и нажимаем Enter

набираем mount -a

набираем команду passwd

вводим пароль

перегружаем систему командой reboot

Как добавить нового пользователя

Создаем учетную запись

adduser
заполняем все необходимые поля

После этого создаем ssh сертификат для пользователя

su _USER_

ssh-keygen -t dsa

exit

где _USER_ логин пользователя

После этого заходим в домашний каталог пользователя, затем

cd ./ssh

В ней будет приватный ключ id_dsa, его следует скопировать на свой компьютер. Дальнейшие действия с приватным ключом читаем здесь

cat id_dsa

и тут же удалить с сервера!!!

rm id_dsa

В этой же директории находиться публичный ключ id_dsa.pub, его будем использовать для аутентификации пользователя.

mv id_dsa.pub authorized_keys

Как загрузить оригинальное ядро

В загрузчике FreeBSD выбираем шестой пункт (Escape to a loader prompt)

Вводим команду

unload kernel

затем

boot /boot/kernel.original/kernel

или

boot /boot/kernel.old/kernel

Как посмотреть логи

Если нужно постранично прочитать лог целиком, это можно сделать командой:

cat /var/log/logfile | more

Если нам необходим фильтр, тогда команда будет выглядеть так:

cat /var/log/logfile | grep …

где вместо "…" нужно вставить маску по которой фильтруем.
Как это работает? cat читает файл с первого символа до последнего, и результаты перенаправляются (|) команде grep, которая работает как фильтр удовлетворяющий маске (…) и в итоге получается что на консоль выводится не все содержимое файла, а только те строки, которые "прошли" через фильтр. Результаты можно профильтровать сразу же еще одним фильтром.

Пример:

[root@gate** /home/***]# cat /var/log/access.log | grep TCP_DENIED | grep baev
1237366066.873      2 192.168.45.45 TCP_DENIED/403 1973 GET http://download.qip.ru:5190/params.txt rrt\baev NONE/- text/html\\

В случае, когда нам нужно указать что не выводить (вывести все, кроме), нам необходимо добавить ключ -v, команда будет выглядеть так:

cat /var/log/logfile | grep -v …

Кроме того, во время отладки иногда бывает необходимо смотреть логи в реальном времени, это можно сделать командой

tail -f /var/log/logfile

Данная команда выводит на консоль сначала последние несколько строчек файла, а затем все что пишется в этот файл в реальном времени. Совместно с этой командой можно использовать grep по аналогии с предыдущим примером.

Как устроена файловая система FreeBSD

Для начала давайте определимся, о чем пойдет речь. Поскольку для того, кто обратился сюда будет мало интересно низкоуровневое ковыряние жесткого диска, скорее всего хочется понять что такое /var/tmp и почему нет диска C и D. Сразу оговорюсь, что на научность этот ответ не претендует, скорее это попытка объяснить на пальцах новичку почему так, а не иначе.

И так, что мы видим в Windows когда смотрим в оснастке "Управление" → "Управление дисками"? Мы видим каким образом наш диск разбит на разделы и каждому присвоена буква. Во FreeBSD дела обстоят чуть иначе. Роль логического диска отведена так называемым слайсам (slice). При разбивке жесткого диска создаются слайсы, которым явно указывается тип файловой системы, в которые они разбиваются, то есть, очень грубо и не вдаваясь в подробности, можно поставить знак равенства слайс (slice) = логический диск. После создания слайса он так же не безымянен, только вместо привычных пользователю Windows букв "C" и "D" он именуется примерно вот так ad6s1a. Но знак равенства ставить нельзя, почему - см. дальше. Файловая система unix имеет строго древовидную структуру, и начало её есть /. Так обозначается корень (root) откуда растут ветви файловой системы (как видите, root это не только суперпользователь). Но и его нужно для начала куда-то смонтировать. Аналогичное действие монтированию - задание буквы диска в Windows. Что куда смонтировано находится в файле /etc/fstab (это конфигурационный файл) ниже я привожу его листинг:

[root@gate** /home/***]# cat /etc/fstab\\
# Device                Mountpoint      FStype  Options         Dump    Pass#\\
/dev/ar0s1b             none            swap    sw              0       0\\
/dev/ar0s1a             /               ufs     rw              1       1\\
/dev/ar0s1d             /tmp            ufs     rw              2       2\\
/dev/ar0s1e             /usr            ufs     rw              2       2\\
/dev/ar0s1f             /var            ufs     rw              2       2\\
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0\\

Из этого листинга видно, что у меня 5 слайсов (ar0s1b-ar0s1f), которые на которые смонтированы /, /tmp, /usr и т.д. Как это понимать? Для примера возьмем 1 строчку: /dev/ar0s1a - имя слайса, оно нужно операционке для того чтобы однозначно идентифицировать участок поверхности диска. / корневая точка монтирования. Это что-то вроде заданной буквы диска (или имени папки. В Windows такое возможно, попробуйте логический диск D перемонтировать в C:\workdir\ (или флэшку туда подключить) и поймете о чем я говорю). ufs тип файловой системы. rw расшифровывается как "чтение-запись", режим в котором подключена файловая система.

О структуре каталогов очень подробно написано тут: http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/dirstructure.html

Как посмотреть лог (почты, фаервола, vpn`а и т.д.)

Сам механизм просмотра логов приведен выше. Логи хранятся в /var/log/. По названию файла не так и трудно определить что в него логируется но тем не менее:

access.log - лог файл прокси-сервера squid

auth.log - логи авторизации на сервере

cache.log - лог работы прокси сервера squid (сюда пишется информация о работе, в т.ч. ошибки, возникающие при работе прокси сервера)

cron - лог cron`а (диспетчер задач такой …)

debug.log -

dmesg.today (dmesg.yesterday) - лог системных сообщений

httpd-access.log - обращения к веб серверу (с какого ip и куда ползал на веб сервере на гейте)

ipfw.today - правила фаервола, которые включены сегодня

lpd-errs - лог файл демона печати lpd (в нашем случае не используется потому что нет печатающих устройств 😉 )

maillog - лог почтового сервера

messages -

mount.today - смонтированные устройства сегодня (слайсы, файловые системы, cd/dvd rom/rw и д.р.)

mpd.log - лог VPN сервера mpd

ppp.log - лог демона ppp

samba - директория с логами samba при помощи которой gate пристыкован с active directory. Вообще самба на гейте нужна для того, чтобы работала доменная авторизация в squid`е, поэтому если вдруг squid отказывается принимать логины-пароли доменных пользователей или в sams`е недостукивается до PDC - вам сюда.

security - лог пакетов отброшенных запрещающими правилами фаервола. Полезен когда что-то не пускает в сеть.

sendmail.st - лог сендмайл`а. Т.к. нами используется postfix, лог этот не используется.

setuid.today -

slip.log -

store.log - лог использования кэша прокси сервером. Отслеживается работа и эффективность кэширования.

userlog - манипуляции с пользователями. Добавление, перемещение, удаление.

vtund - папка с логами VPN client`а vtund. Внутри единственный файл vtund.log.

webmin - папка с логами webmin`а.

xferlog -

Как заменить vi на ee (Easy Editor), mcedit, nano и т.д.

Внимание! Данный способ описан ТОЛЬКО для FreeBSD, в других сборках не факт что он заработает именно в таком виде.

Казалось бы, никуда не деться от использования vi там, где явно нельзя открыть с помощью любимого редактора (ee, mcedit, nano) файл, например при использовании утилиты vipw. Но выход есть!

cd /root

ee .cshrc

#setenv EDITOR vi - закомментируем (#)

setenv EDITOR ee - добавим

, где ee - это запускаемый файл редактора (вообще-то у запускаемого файла есть путь+имя, но внимательный читатель увидит парой строчек выше в файле переменную окружения задающую умолчательные пути. Домашнее задание - найти по какому из них лежит бинарник ee ;), соответственно поставить нужный вам (mcedit, nano, etc).

Выходим из под root`а и заходим снова. теперь при использовании vipw загружается не vi а ee.

Ошибка файловой системы

Из-за некорректного выключения сервера случается падает файловая система. При загрузке фря выдает сообщения наподобие:

GEOM_LABEL: Label for provider ad2s1d is ufsid/4ab74f284e11daa1.
THE FOLLOWING FILE SYSTEM HAD AN UNEXPECTED INCONSISTENCY:

ufs: /dev/ad2s1d (/var)

Automatic file system check failed; help!
ERROR: ABORTING BOOT (sending SIGTERM to parent)!
Oct 23 12:58:42 init: /bin/sh on /etc/rc terminated abnormally, going to single user mode
Enter full pathname of shell or RETURN for /bin/sh:

Правится командой: fsck -y /dev/ad2s1d


Смотрите также: