OpenBSD на рабочей станции: различия между версиями

Материал из OpenBSD-Wiki
Перейти к навигации Перейти к поиску
м
 
(не показано 48 промежуточных версий этого же участника)
Строка 1: Строка 1:
Вольный перевод статьи [http://eradman.com Eric Radman] [http://eradman.com/posts/openbsd-workstation.html An OpenBSD Workstation].
+
Вольный перевод статьи [http://eradman.com Eric Radman] [http://eradman.com/posts/openbsd-workstation.html An OpenBSD Workstation] с некоторыми дополнениями учитывающими изменения пришедшие в свежих релизах.
  
== Power Button Shutdown ==
+
== Выключение системы нажатием на кнопку питания ==
  
This nifty option in /etc/sysctl.conf can only be set before entering securelevel 1, and allows you to shut off your computer gracefully by pressing the power button.
+
Безопасное выключение компьютера нажатием на кнопку питания возможно после передачи ядру параметра:
 +
<pre># /etc/sysctl.conf
 +
hw.allowpowerdown=1</pre>
 +
Параметр может быть установлен только до перехода системы к уровню безопасности 1, подробнее в [http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man7/securelevel.7?query=securelevel securelevel(7)].
  
<pre>hw.allowpowerdown=1</pre>
+
== Больше никаких раздражающих сигналов ==
  
== No More Annoying Beep ==
+
Одна из многих вещей, которую узнаешь прочитав [http://nostarch.com/obenbsd2e Absolute OpenBSD] - это как отключить раздражающий [http://en.wikipedia.org/wiki/Bell_character сигнал]:
 +
<pre># /etc/wsconsctl.conf
 +
keyboard.bell.volume=0</pre>
  
One of the many useful and unexpected things you'll learn in [http://nostarch.com/obenbsd2e Absolute OpenBSD 2nd Edition] is how to disable the annoying UNIX bell in /etc/wsconsctl.conf
+
Начиная с релиза [http://www.openbsd.org/54.html 5.4] способ с '''wsconsctl''' больше не работает. Отключить сигнал можно так:
 
+
<pre># ~/.xinitrc
<pre>keyboard.bell.volume=0</pre>
 
 
 
As of the 5.4 release wsconsctl no longer seems to work. You an also disable the bell using
 
 
 
<pre># .xinitrc
 
 
xset -b</pre>
 
xset -b</pre>
 
+
или
or
+
<pre># /etc/rc.conf.local
 
 
<pre># rc.conf.local
 
 
mixerctl inputs.spkr.mute=on</pre>
 
mixerctl inputs.spkr.mute=on</pre>
  
== User-Mounted Media ==
+
== Монтирование съемных устройств пользователем ==
 
 
It's nice to be able to mount DVDs or flash media without switching to root, which is what the operator group is for.
 
  
 +
Удобно, когда можно смонтировать DVD или флеш-носитель без повышения привилегий, используя для этого членство в группе '''operator'''.
 
<pre># usermod -G operator eradman
 
<pre># usermod -G operator eradman
 
# chmod g=rw /dev/cd0*</pre>
 
# chmod g=rw /dev/cd0*</pre>
 
+
Остаётся изменить параметр ядра и можно пользоваться.
Then flip a kernel option and you're all set.
 
 
 
 
<pre># sysctl kern.usermount=1</pre>
 
<pre># sysctl kern.usermount=1</pre>
 
 
<pre>$ mkdir -p mount/cdrom
 
<pre>$ mkdir -p mount/cdrom
 
$ mount /dev/cd0c mount/cdrom</pre>
 
$ mount /dev/cd0c mount/cdrom</pre>
Строка 39: Строка 33:
 
== Suspend & Resume ==
 
== Suspend & Resume ==
  
OpenBSD has very good ACPI support, see [http://www.openbsd.org/cgi-bin/man.cgi?query=apmd&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html apmd(8)]. zzz and ZZZ are shortcuts for suspend and hibernate if apmd is run at startup.
+
OpenBSD обладает хорошей поддержкой ACPI, подробнее в [http://www.openbsd.org/cgi-bin/man.cgi?query=apmd&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html apmd(8)]. zzz и ZZZ быстрый способ перехода в режимы suspend и hibernate, если apmd запускается при загрузке.
 +
<pre># rc.conf.local
 +
apmd_flags="-A"</pre>
 +
"'''-A'''" будет автоматически масштабировать частоту CPU для оптимального энергопотребления.
  
<pre>apmd_flags=""</pre>
+
Начиная с выпуска [http://www.openbsd.org/56.html 5.6], управление сервисами осуществляется посредством утилиты [http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man8/rcctl.8?query=rcctl rcctl(8)].
 +
<pre># rcctl getdef apmd       
 +
apmd_flags=NO
 +
&#8230;
 +
# rcctl enable apmd
 +
&#8230;
 +
# rcctl getdef apmd       
 +
apmd_flags=</pre>
  
 
== X Configuration: .xinitrc ==
 
== X Configuration: .xinitrc ==
  
<pre># .xinitrc
+
<pre># ~/.xinitrc
  
 
redshift -O 5600
 
redshift -O 5600
Строка 57: Строка 61:
 
exec dwm</pre>
 
exec dwm</pre>
  
[http://jonls.dk/redshift/ redshift] is a utility that makes designed to adjust the color temperature of your screen based on your surroundings, but it works equally as well for a manual color temperature adjustment. My IBM T60p appears cold, so I adjust the default of 6500K to 5600K.
+
[http://jonls.dk/redshift/ redshift] утилита предназначена для регулировки цветовой температуры экрана в зависимости от вашего окружения. Это работает и в случае ручной регулировки цветовой температуры. Например, подсветка экрана IBM T60p автора статьи по умолчанию "холодная", поэтому он изменяет значение цветовую температуры с 6500K до 5600K.  
  
Next I run a loop in the background that read the available battery life (Wh) and updates the window manager's display area.
+
Запускаем циклический опрос сенсора времени жизни батареи (battery life (Wh)) с интервалом один раз в 60 сек, а полученное значение выводим "поверх" корневого окна.  
  
Finally set the background color and start your favorite window manager.
+
Установим цвет фона и запустить свой любимый менеджер окон.
 
 
==Switch to an External Monitor==
 
 
 
My screen at work is a bit larger then my laptop display (1400x1050 - 1650x1050), but I use a little docking script to switch to the external display.
 
  
 +
==Переключение на внешний монитор==
 +
Разрешение дисплея на рабочем месте немного выше чем дисплея ноутбука, небольшой скрипт для переключения на внешний монитор:
 
<pre>#!/bin/sh
 
<pre>#!/bin/sh
 
xrandr --output LVDS --off
 
xrandr --output LVDS --off
Строка 73: Строка 75:
 
redshift -O 6200</pre>
 
redshift -O 6200</pre>
  
==Connecting to a Projector==
+
По моему опыту, X11 иногда скрывает курсор мыши, если возобновление работы системы происходило при подключенном внешнем мониторе. Для решения я использовал [http://sourceforge.net/projects/unclutter/ unclutter] - утилиту скрывающую курсор мыши когда он неподвижен и восстанавливающую его как только он переместился.
 +
<pre>pkill unclutter
 +
unclutter -idle 1 -root -grab -visible &</pre>
  
If you started X with the VGA connected, it probably picked a resolution common to both your screen and the external display. On my T60 it can be reset like so
+
Лично мне больше нравится немного другой вариант:
 +
<pre>xrandr --query | grep "VGA1 connected" && xrandr --output LVDS1 --off --output VGA1 --mode 1920x1080</pre>
  
 +
==Подключение проектора==
 +
 +
Если X-сервер запускается когда проектор подключен к VGA порту, то скорее всего сервер установит для встроенного и внешнего дисплеев одинаковое разрешение. На T60 например, это можно изменить:
 
<pre>xrandr --output LVDS --mode 1400x1050</pre>
 
<pre>xrandr --output LVDS --mode 1400x1050</pre>
  
Use --query to find out what modes each display supports, then I set up a viewport that pans with the mouse pointer
+
Используя --query можно узнать какие режимы поддерживаются дисплеем, then I set up a viewport that pans with the mouse pointer
 
 
 
<pre>xrandr --output VGA-0 --mode 1024x768 --panning 1400x1050</pre>
 
<pre>xrandr --output VGA-0 --mode 1024x768 --panning 1400x1050</pre>
  
I also add some additional logic in my .xinitrc to switch to the external display automatically if X is started while connected to an external monitor:
+
Так же, я добавил в .xinitrc команды для автоматической конфигурации дисплеев, если при запуске X-сервера внешний монитор уже подключен:
 
 
 
<pre>xrandr --query | grep "DVI-0 connected" && ~/bin/docked-dvi
 
<pre>xrandr --query | grep "DVI-0 connected" && ~/bin/docked-dvi
 
xrandr --query | grep "VGA-0 connected" && ~/bin/docked-vga</pre>
 
xrandr --query | grep "VGA-0 connected" && ~/bin/docked-vga</pre>
  
==tmux==
+
==tmux - мультиплексор терминалов==
 
 
There's only a few tweaks I make to my terminal multiplexor's configuration. I frequently run [http://entrproject.org/ entr] in a smaller pane on the bottom
 
  
 +
Несколько дополнений в мою конфигурацию мультиплексора терминалов. Я часто запускаю [http://entrproject.org/ entr] в небольшой панели снизу.
 
<pre>bind-key C-t split-window -p 25</pre>
 
<pre>bind-key C-t split-window -p 25</pre>
  
I don't know of a terminal color picker, but they can be printed with a shell loop.
+
Не знаю палитры цветов терминала, но её можно распечатать:
 
 
 
<pre>#!/bin/ksh
 
<pre>#!/bin/ksh
  
Строка 102: Строка 106:
 
done</pre>
 
done</pre>
  
Then I set status background and active border to bright green
+
Фон строки состояния и границы активного окна ярко-зеленый:
 
 
 
<pre>set -g status-bg colour118
 
<pre>set -g status-bg colour118
 
set -g pane-active-border-fg colour118
 
set -g pane-active-border-fg colour118
 
set -g pane-border-fg colour30</pre>
 
set -g pane-border-fg colour30</pre>
  
==Using Disk Encryption==
+
Таблица с сопоставлением [["Горячие" клавиши tmux и screen | клавиатурных комбинаций для tmux и screen]]
 
 
OpenBSD provides software RAID by way of a virual host bust adaptor called softraid0. This HBA is also used for setting up disk encryption. To set use a disklabel (in my case for sd0g /home set the partition type to RAID
 
  
 +
==Использование шифрования для дисков==
 +
OpenBSD предоставляет программный RAID как виртуальный хост-адаптер шины ([https://ru.wikipedia.org/wiki/HBA HBA]). Также HBA применяется для настройки и использования шифрования дисков. Посредством [http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man8/disklabel.8 disklabel(8)] установим тип раздела RAID (в оригинальной статье автор использует блочное устройство '''/dev/sd0c''' как шифрованный том, монтируемый в '''/home'''): 
 
<pre>$ sudo disklabel -E /dev/sd0c
 
<pre>$ sudo disklabel -E /dev/sd0c
 
Label editor (enter '?' for help at any prompt)
 
Label editor (enter '?' for help at any prompt)
Строка 120: Строка 123:
 
FS type: [4.2BSD] RAID</pre>
 
FS type: [4.2BSD] RAID</pre>
  
Now configure it for crypto using -c C
+
Для настройки шифрования используем [http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man8/bioctl.8 bioctl(8)] с параметром -c C:
 
 
 
<pre># bioctl -c C -l /dev/sd0g softraid0
 
<pre># bioctl -c C -l /dev/sd0g softraid0
 
New passphrase: My Crypto Pass Phrase
 
New passphrase: My Crypto Pass Phrase
Строка 127: Строка 129:
 
softraid0: CRYPTO volume attached as sd1</pre>
 
softraid0: CRYPTO volume attached as sd1</pre>
  
Mount it using the same command. The kernel log will show a new virtual device appear
+
Монтирование выполняется той же командой, журнал ядра сообщит о появлении нового виртуального устройства:
 
 
 
<pre>sd1 at scsibus2 targ 1 lun 0: &lt;OPENBSD, SR CRYPTO, 005&gt; SCSI2 0/direct fixed
 
<pre>sd1 at scsibus2 targ 1 lun 0: &lt;OPENBSD, SR CRYPTO, 005&gt; SCSI2 0/direct fixed
 
sd1: 27168MB, 512 bytes/sector, 55641072 sectors</pre>
 
sd1: 27168MB, 512 bytes/sector, 55641072 sectors</pre>
  
Now add a disklabel and format the encrypted volume
+
Разметим и отформатируем шифрованный том:
 
+
<pre>$ sudo disklabel -E /dev/sd1c
<pre>$ sudo disklabel -E /dev/wd0c
+
...
$ sudo newfs /dev/rwd0a</pre>
+
$ sudo newfs /dev/rsd1a</pre>
 
 
Devices in OpenBSD may be mounted by device name or by disklabel UID which is a random id generated when the label is created.
 
  
<pre>$ disklabel /dev/sd1c | grep uid
+
Устройства в OpenBSD могут монтироваться по имени или с использованием disklabel UID, который случайным образом генерируется при разметке:
 +
<pre>$ disklabel /dev/sd1a | grep uid
 
duid: 779d87bac3905122</pre>
 
duid: 779d87bac3905122</pre>
  
It's this ID that we'll to mount the volume, in this way plugging in other drives won't confuse mount after we prompt the user for a password on boot. Adding the following to rc.local will ask for a password four times before giving up
+
Полученный UID используется для монтирования тома, что позволяет избежать путаницы при. Код ниже, позволит выполнить четыре попытки ввода ключевой фразы для дешифрации тома:
 
 
 
<pre>#/etc/rc.local
 
<pre>#/etc/rc.local
 
for attept in 1 2 3 4; do
 
for attept in 1 2 3 4; do
Строка 152: Строка 151:
 
mount -o nodev,nosuid,softdep 779d87bac3905122.a /home</pre>
 
mount -o nodev,nosuid,softdep 779d87bac3905122.a /home</pre>
  
If you would like to enable crypto on the entire boot volume see [http://www.tedunangst.com/flak/post/OpenBSD-softraid-crypto-boot this post] by Ted Unangst.
+
Если необходим полностью шифрованный загрузочный том, ознакомьтесь с [http://www.tedunangst.com/flak/post/OpenBSD-softraid-crypto-boot публикацией] Ted Unangst.
 +
 
 +
==Уменьшим "возню" с паролями с помощью YubiKey==
 +
 
 +
[https://www.yubico.com/ Yubico] выпускают небольшие аппаратные ключи, которые используются для авторизации с использованием одноразовых паролей ([https://ru.wikipedia.org/wiki/%D0%9E%D0%B4%D0%BD%D0%BE%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8C OTP]). Yubikey-personalization-gui - это QT-приложение, которое может быть использовано для записи приватных ключей в один из двух слотов. Запишите без пробелов 6-байт в файл приватной? идентификации и 16-байт в файл ключа:
 +
<pre>echo "5c e1 e0 3e 63 a4" \
 +
        | tr -d ' ' > /var/db/yubikey/$USER.id
 +
echo "57 e3 af 3e 9b 51 2b 10 58 7d 33 fb d9 08 ef 7b" \
 +
        | tr -d ' ' > /var/db/yubikey/$USER.key
 +
chmod 600 /var/db/yubikey/$USER.*</pre>
 +
 
 +
Настроим YubiKey в качестве метода локальной авторизации и авторизации через SSH.
 +
 
 +
<pre># Default allowed authentication styles
 +
auth-defaults:auth=yubikey,passwd,skey:</pre>
 +
 
 +
Перестроим БД авторизации - '''login.conf'''
 +
 
 +
<pre>cap_mkdb /etc/login.conf</pre>
 +
 
 +
Для уменьшения количества вводимых символов, второй слот YubiKey используется как относительно безопасный метод активации [http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&format=html ssh-agent], что позволяет соединяться с удалёнными системами, на которых уже присутствует мой публичный ключ (RSA, DSA, ECDSA). Для этого, используя yubikey-personalization-gui создайте случайный ключ, а затем установите слот 2 в режим "запрос-ответ" (challеnge-response):
 +
 
 +
<pre>hexkey=$(echo "dd b6 68 81 c9 73 f9 64 84 21 7e f0 69 e8 2c 28 1b 6c ad e2" | tr -d ' ')
 +
ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -a $hexkey</pre>
 +
 
 +
Затем создайте новую пару SSH-ключей с помощью ответов ykchalresp. Скрипт ykauth, установлен в ~/bin.
 +
 
 +
<pre>#!/bin/sh
 +
ykchalresp -2 "$(whoami)@$(hostname)" | cut -c 1-15</pre>
 +
 
 +
И наконец, настроим автоматическую активацию ключей при входе в систему:
 +
 
 +
<pre>ssh-add -l > /dev/null 2>&1 || {
 +
    eval `ssh-agent`
 +
    DISPLAY='' SSH_ASKPASS='/home/eradman/bin/ykauth' ssh-add < /dev/null
 +
    exec ksh
 +
}</pre>
 +
 
 +
==Настройка производительности==
 +
 
 +
Нет документов описывающих способы адаптации OpenBSD для рабочей станции. Я делаю следующие изменения. Первое, позволяю приложениям использовать больше оперативной памяти:
 +
 
 +
<pre># /etc/login.conf
 +
staff:\
 +
        :datasize-cur=2048M:\
 +
        :datasize-max=2048M:\
 +
        :datasize=2048M:\
 +
        :openfiles-cur=1024:\
 +
        :stacksize-cur=16M:\</pre>
 +
 
 +
Если знаете другие способы улучшить производительность, пожалуйста [mailto:ericshane@eradman.com сообщите] их автору.
 +
 
 +
==Блокировка экрана==
 +
 
 +
Для автоматической блокировки экрана после 5 минут неактивности, добавьте указанный ниже код в '''~/.xinitrc''':
 +
<pre>xidle -timeout 300 -program "/usr/X11R6/bin/xlock -mode blank" &</pre>
 +
 
 +
Чтобы это сработало когда система переходит в режим сна (suspended), необходимо в '''/etc/apm/suspend''' добавить сигнал '''xidle''' для запуска программы блокировки.
 +
 
 +
<pre>#!/bin/sh
 +
pkill -USR1 xidle</pre>
 +
 
 +
==Смена сетевого подключения==
 +
 
 +
Переключение из одной сети в другую, например из беспроводной в проводную, не является очевидным в BSD.
 +
 
 +
Во-первых, необходимо остановить dhcp-клиент, чтобы исключить попытки повторной активации сетевого интерфейса:
 +
 
 +
<pre>pkill dhclient</pre>
 +
 
 +
Затем удалить установленный IP-адрес и деактивировать сетевой интерфейс:
 +
 
 +
<pre>ifconfig wpi0 -inet down</pre>
 +
 
 +
Удаление IP-адреса так же сбрасывает локальные маршруты. Сбросить все прочие маршруты:
 +
 
 +
<pre>route -n flush</pre>
 +
 
 +
-n предотвращает попытки route пытаться разрешать имена хостов.
 +
 
 +
Если для подключения к беспроводной сети использовался WPA, следует удалить параметры подключения к сети, чтобы получать широковещательные SSID других сетей:
 +
 
 +
<pre>ifconfig wpi0 nwid "Mobile Hotspot" wpa wpakey 09123456789
 +
ifconfig wpi0 -nwid -wpa -wpakey # use broadcast id</pre>

Текущая версия на 06:21, 28 декабря 2015

Вольный перевод статьи Eric Radman An OpenBSD Workstation с некоторыми дополнениями учитывающими изменения пришедшие в свежих релизах.

Выключение системы нажатием на кнопку питания

Безопасное выключение компьютера нажатием на кнопку питания возможно после передачи ядру параметра:

# /etc/sysctl.conf
hw.allowpowerdown=1

Параметр может быть установлен только до перехода системы к уровню безопасности 1, подробнее в securelevel(7).

Больше никаких раздражающих сигналов

Одна из многих вещей, которую узнаешь прочитав Absolute OpenBSD - это как отключить раздражающий сигнал:

# /etc/wsconsctl.conf
keyboard.bell.volume=0

Начиная с релиза 5.4 способ с wsconsctl больше не работает. Отключить сигнал можно так:

# ~/.xinitrc
xset -b

или

# /etc/rc.conf.local
mixerctl inputs.spkr.mute=on

Монтирование съемных устройств пользователем

Удобно, когда можно смонтировать DVD или флеш-носитель без повышения привилегий, используя для этого членство в группе operator.

# usermod -G operator eradman
# chmod g=rw /dev/cd0*

Остаётся изменить параметр ядра и можно пользоваться.

# sysctl kern.usermount=1
$ mkdir -p mount/cdrom
$ mount /dev/cd0c mount/cdrom

Suspend & Resume

OpenBSD обладает хорошей поддержкой ACPI, подробнее в apmd(8). zzz и ZZZ быстрый способ перехода в режимы suspend и hibernate, если apmd запускается при загрузке.

# rc.conf.local
apmd_flags="-A"

"-A" будет автоматически масштабировать частоту CPU для оптимального энергопотребления.

Начиная с выпуска 5.6, управление сервисами осуществляется посредством утилиты rcctl(8).

# rcctl getdef apmd        
apmd_flags=NO
…
# rcctl enable apmd
…
# rcctl getdef apmd        
apmd_flags=

X Configuration: .xinitrc

# ~/.xinitrc

redshift -O 5600

while true; do
    batt="$(sysctl -n hw.sensors.acpibat0.watthour3 | cut -f1,2 -d" ")"
    xsetroot -name "$batt"
    sleep 60
done &
xsetroot -solid steelblue  &
exec dwm

redshift утилита предназначена для регулировки цветовой температуры экрана в зависимости от вашего окружения. Это работает и в случае ручной регулировки цветовой температуры. Например, подсветка экрана IBM T60p автора статьи по умолчанию "холодная", поэтому он изменяет значение цветовую температуры с 6500K до 5600K.

Запускаем циклический опрос сенсора времени жизни батареи (battery life (Wh)) с интервалом один раз в 60 сек, а полученное значение выводим "поверх" корневого окна.

Установим цвет фона и запустить свой любимый менеджер окон.

Переключение на внешний монитор

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

#!/bin/sh
xrandr --output LVDS --off
xrandr --output VGA-0 --off
xrandr --output DVI-0 --auto
redshift -O 6200

По моему опыту, X11 иногда скрывает курсор мыши, если возобновление работы системы происходило при подключенном внешнем мониторе. Для решения я использовал unclutter - утилиту скрывающую курсор мыши когда он неподвижен и восстанавливающую его как только он переместился.

pkill unclutter
unclutter -idle 1 -root -grab -visible &

Лично мне больше нравится немного другой вариант:

xrandr --query | grep "VGA1 connected" && xrandr --output LVDS1 --off --output VGA1 --mode 1920x1080

Подключение проектора

Если X-сервер запускается когда проектор подключен к VGA порту, то скорее всего сервер установит для встроенного и внешнего дисплеев одинаковое разрешение. На T60 например, это можно изменить:

xrandr --output LVDS --mode 1400x1050

Используя --query можно узнать какие режимы поддерживаются дисплеем, then I set up a viewport that pans with the mouse pointer

xrandr --output VGA-0 --mode 1024x768 --panning 1400x1050

Так же, я добавил в .xinitrc команды для автоматической конфигурации дисплеев, если при запуске X-сервера внешний монитор уже подключен:

xrandr --query | grep "DVI-0 connected" && ~/bin/docked-dvi
xrandr --query | grep "VGA-0 connected" && ~/bin/docked-vga

tmux - мультиплексор терминалов

Несколько дополнений в мою конфигурацию мультиплексора терминалов. Я часто запускаю entr в небольшой панели снизу.

bind-key C-t split-window -p 25

Не знаю палитры цветов терминала, но её можно распечатать:

#!/bin/ksh

for i in `jot 255`; do
  printf "\033[38;5;${i}mcolour${i}\n"
done

Фон строки состояния и границы активного окна ярко-зеленый:

set -g status-bg colour118
set -g pane-active-border-fg colour118
set -g pane-border-fg colour30

Таблица с сопоставлением клавиатурных комбинаций для tmux и screen

Использование шифрования для дисков

OpenBSD предоставляет программный RAID как виртуальный хост-адаптер шины (HBA). Также HBA применяется для настройки и использования шифрования дисков. Посредством disklabel(8) установим тип раздела RAID (в оригинальной статье автор использует блочное устройство /dev/sd0c как шифрованный том, монтируемый в /home):

$ sudo disklabel -E /dev/sd0c
Label editor (enter '?' for help at any prompt)
  g:         55641600        100653824    RAID
> m g
offset: [100653824]
size: [55641600]
FS type: [4.2BSD] RAID

Для настройки шифрования используем bioctl(8) с параметром -c C:

# bioctl -c C -l /dev/sd0g softraid0
New passphrase: My Crypto Pass Phrase
Re-type passphrase: My Crypto Pass Phrase
softraid0: CRYPTO volume attached as sd1

Монтирование выполняется той же командой, журнал ядра сообщит о появлении нового виртуального устройства:

sd1 at scsibus2 targ 1 lun 0: <OPENBSD, SR CRYPTO, 005> SCSI2 0/direct fixed
sd1: 27168MB, 512 bytes/sector, 55641072 sectors

Разметим и отформатируем шифрованный том:

$ sudo disklabel -E /dev/sd1c
...
$ sudo newfs /dev/rsd1a

Устройства в OpenBSD могут монтироваться по имени или с использованием disklabel UID, который случайным образом генерируется при разметке:

$ disklabel /dev/sd1a | grep uid
duid: 779d87bac3905122

Полученный UID используется для монтирования тома, что позволяет избежать путаницы при. Код ниже, позволит выполнить четыре попытки ввода ключевой фразы для дешифрации тома:

#/etc/rc.local
for attept in 1 2 3 4; do
  bioctl -c C -l c3e2f405c96a8e10.g softraid0 && break
  sleep 1
done
fsck /dev/rsd1a
mount -o nodev,nosuid,softdep 779d87bac3905122.a /home

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

Уменьшим "возню" с паролями с помощью YubiKey

Yubico выпускают небольшие аппаратные ключи, которые используются для авторизации с использованием одноразовых паролей (OTP). Yubikey-personalization-gui - это QT-приложение, которое может быть использовано для записи приватных ключей в один из двух слотов. Запишите без пробелов 6-байт в файл приватной? идентификации и 16-байт в файл ключа:

echo "5c e1 e0 3e 63 a4" \
        | tr -d ' ' > /var/db/yubikey/$USER.id
echo "57 e3 af 3e 9b 51 2b 10 58 7d 33 fb d9 08 ef 7b" \
        | tr -d ' ' > /var/db/yubikey/$USER.key
chmod 600 /var/db/yubikey/$USER.*

Настроим YubiKey в качестве метода локальной авторизации и авторизации через SSH.

# Default allowed authentication styles
auth-defaults:auth=yubikey,passwd,skey:

Перестроим БД авторизации - login.conf

cap_mkdb /etc/login.conf

Для уменьшения количества вводимых символов, второй слот YubiKey используется как относительно безопасный метод активации ssh-agent, что позволяет соединяться с удалёнными системами, на которых уже присутствует мой публичный ключ (RSA, DSA, ECDSA). Для этого, используя yubikey-personalization-gui создайте случайный ключ, а затем установите слот 2 в режим "запрос-ответ" (challеnge-response):

hexkey=$(echo "dd b6 68 81 c9 73 f9 64 84 21 7e f0 69 e8 2c 28 1b 6c ad e2" | tr -d ' ')
ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -a $hexkey

Затем создайте новую пару SSH-ключей с помощью ответов ykchalresp. Скрипт ykauth, установлен в ~/bin.

#!/bin/sh
ykchalresp -2 "$(whoami)@$(hostname)" | cut -c 1-15

И наконец, настроим автоматическую активацию ключей при входе в систему:

ssh-add -l > /dev/null 2>&1 || {
    eval `ssh-agent`
    DISPLAY='' SSH_ASKPASS='/home/eradman/bin/ykauth' ssh-add < /dev/null
    exec ksh
}

Настройка производительности

Нет документов описывающих способы адаптации OpenBSD для рабочей станции. Я делаю следующие изменения. Первое, позволяю приложениям использовать больше оперативной памяти:

# /etc/login.conf
staff:\
        :datasize-cur=2048M:\
        :datasize-max=2048M:\
        :datasize=2048M:\
        :openfiles-cur=1024:\
        :stacksize-cur=16M:\

Если знаете другие способы улучшить производительность, пожалуйста сообщите их автору.

Блокировка экрана

Для автоматической блокировки экрана после 5 минут неактивности, добавьте указанный ниже код в ~/.xinitrc:

xidle -timeout 300 -program "/usr/X11R6/bin/xlock -mode blank" &

Чтобы это сработало когда система переходит в режим сна (suspended), необходимо в /etc/apm/suspend добавить сигнал xidle для запуска программы блокировки.

#!/bin/sh
pkill -USR1 xidle

Смена сетевого подключения

Переключение из одной сети в другую, например из беспроводной в проводную, не является очевидным в BSD.

Во-первых, необходимо остановить dhcp-клиент, чтобы исключить попытки повторной активации сетевого интерфейса:

pkill dhclient

Затем удалить установленный IP-адрес и деактивировать сетевой интерфейс:

ifconfig wpi0 -inet down

Удаление IP-адреса так же сбрасывает локальные маршруты. Сбросить все прочие маршруты:

route -n flush

-n предотвращает попытки route пытаться разрешать имена хостов.

Если для подключения к беспроводной сети использовался WPA, следует удалить параметры подключения к сети, чтобы получать широковещательные SSID других сетей:

ifconfig wpi0 nwid "Mobile Hotspot" wpa wpakey 09123456789
ifconfig wpi0 -nwid -wpa -wpakey # use broadcast id