Ниже будет приведён скрипт, который позволяет перехватить удаление файла и вывести сообщение на консоль. При этом, на место блока /* INSERT HERE */ можно вставить свои обработчики, которые будут выполняться каждый раз, когда кто-то захочет удалить файл.
Категорія: FreeBSD
Часто бывают такие ситуации, когда вы открыли через vi/vim файл, сделали очень много изменений и в конце понимаете, что забыли выполнить sudo. Что же делать? Заново править файл очень как не хочется. на помощь приходит такая команда:
:w !sudo tee %
а для Solaris можно ещё и такую
:w !pfexec tee %
После этого выдаётся запрос на ввода пароля и подтверждение, что вы хотите перезаписать файл и всё (с вариантом pfexec запрос пароля не происходит).
dirname: not found
Если при обновлении FreeBSD получаем такую ошибку:
===> include (install)
>> creating osreldate.h from newvers.sh
/usr/src/include/../sys/conf/newvers.sh: dirname: not found
то нужно найти в скрипте /usr/src/sys/conf/newver.sh найти dirname и прописать полный путь к нему
...
SYSDIR=$(/usr/bin/dirname $0)/..
...
У меня ещё ругалось на команду touch. Так же как и в случае с dirname решило проблему.
Допустим, вам необходимо создать несколько виртуальных интерфейсов, которые будут работать как обычные, не зависимые друг от друга. Это очень легко делается через netgraph. Приведу лишь скрипт, который создаст 3 виртуальных интерфейса, не трогая при этом физический:
Правильная пересборка ядра
Расскажу, как рекомендуется правильно пересобирать ядро, а именно включать, отключать опции и т.д.
1) Создание конфигурационного файла
Создаём пустой файл в /usr/src/sys/`uname -m`/conf , например, kern1 такого содержания:
include GENERIC
ident kern1
Этим мы определили, что использовать будем шаблон GENERIC, а имя нового ядра kern1.
Solaris
В Solaris есть удобный механизм для ограничения количества запускаемых процессов/потоков – это проэкт. Что бы пользователи не смогли положить сервер fork-бомбой, нужно им ограничить количество LWP. Создадим проект и поместим туда пользователя testuser:
#projadd -U testuser -K 'project.max-lwps=(privileged,2048,deny)' user.testuser
Теперь пользователь testuser не сможет запустить более 2048 потоков.
Для тестирования можно использовать такую бомбу:
#!/usr/bin/bash
:(){ :|:& };:
Больше for bomb на разных языках можно взять здесь
FreeBSD
Что бы узнать какие режимы поддерживаются данной карточкой, используем такую команду:
# ifconfig -m nfe0
nfe0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8210b<RXCSUM,TXCSUM,VLAN_MTU,TSO4,WOL_MAGIC,LINKSTATE>
capabilities=8210b<RXCSUM,TXCSUM,VLAN_MTU,TSO4,WOL_MAGIC,LINKSTATE>
ether fa:d5:5e:f7:db:ff
inet 192.168.1.40 netmask 0xffffff00 broadcast 192.168.1.255
inet6 fe80::f8d5:5eff:fef7:dbff%nfe0 prefixlen 64 scopeid 0x4
inet 192.168.0.11 netmask 0xffffff00 broadcast 192.168.0.255
inet 10.11.11.2 netmask 0xffffff00 broadcast 10.11.11.255
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
supported media:
media autoselect mediaopt flowcontrol
media autoselect
media 100baseTX mediaopt full-duplex
media 100baseTX
media 10baseT/UTP mediaopt full-duplex
media 10baseT/UTP
FreeBSD
$rcorder /etc/rc.d/* /usr/local/etc/rc.d/*
Linux
$ls /etc/rc`runlevel | cut -d ' ' -f 2`.d | sort
Solaris
$svccfg list
Поддержка dtrace в приложениях
Здесь буду добавлять описание наиболее часто используемого ПО, в которое можно добавить поддержку Dtrace.
Тестовый стенд: FreeBSD 9.0 Release amd64, ядро собрано с поддержкой Dtrace
Как пишут в сети, избавиться от этой ошибки помогает принудительное отключение DMA:
echo 'hw.ata.ata_dma="0"' >> /boot/loader.conf
то есть перевод в режим PIO (установить 1 для обеспечения доступа DMA, 0 – для PIO; по умолчанию, DMA).