Expertus metuit
Sergey Stolyarov | 2013-02-22 в 11:29

Типичная ситуация: коннектимся с машины M1 на машину M2 через SSH, затем на машине M2 меняем юзера через sudo и хотим там запустить X11-приложение, чтобы оно открылось на дисплее машины M1. Это может быть, например, отладчик или графическая гуйня к базе.

Дальше я по шагам распишу все этапы подключения с комментариями.

Sergey Stolyarov | 2013-02-16 в 18:22

Постоянно нужно и всегда забываю.

% arecord - | aplay -
Sergey Stolyarov | 2013-02-07 в 12:02

encfs позволяет прозрачно шифровать каталог с файлами, используется достаточно надёжный метод, такой каталог можно сравнительно безбоязненно положить в Dropbox, например. Для доступа этот каталог монтируется через fuse с вводом пароля, после чего с ним можно работать как с обычным каталогом, все данные перешифровываются на лету.

В debian/ubuntu ставится в два шага:

# apt-get install encfs
# adduser USER fuse

После чего перелогиниться, чтобы пользователь проявился в группе fuse.

Sergey Stolyarov | 2013-02-04 в 11:09

Эта вот строчка мне каждый раз мозг выносит — куда воткнуть NOPASSWD в sudoers, чтобы заработало:

%sudo   ALL=(ALL:ALL) ALL

А разгадка проста:

%sudo   ALL=(ALL:ALL) NOPASSWD:ALL

И ещё одни важные грабли: срабатывает последнее правило, которое заматчило. Например, если вы хотите для себя одного сделать исключение в виде NOPASSWD, добавьте это правило в самом конце файла для гарантии, иначе может не сработать.

Sergey Stolyarov | 2013-01-22 в 15:29

Аккаунт на ssh-сервере можно легко использовать для создания SOCKS-прокси, причём для этого достаточно обычного непривилегированного аккаунта. Всё делается очень просто (подключаемся к серверу example.com под юзером user):

% ssh -D 127.0.0.1:13388 [email protected]

Запускается с виду обычная ssh-сессия, оставляем её в таком виде, а дальше указываем в клиенте (веб-браузере, например) адрес SOCKS-прокси 127.0.0.1, порт 13388 и пользуемся.

По сути ssh-клиент организует туннель, по которому гоняется трафик. Особенным плюсом является то, что на стороне сервера не нужно вообще никакого специального софта.

Другой полезный рецепт — создание туннеля до конкретного сетевого сервиса, работающего на удалённом сервере или доступного только с удалённого сервера. Делается это так:

% ssh -L LOCAL_ADDR:2222:HOST_ADDR:80 [email protected]

LOCAL_ADDR можно опустить, тогда будут использованы все локальные сетевые интерфейсы:

% ssh -L 2222:HOST_ADDR:80 [email protected]

При этом происходит следующее: все соединения с локальной машины к адресу LOCAL_ADDR:2222 (для бо́льшей безопасности можно указывать LOCAL_ADDR равным 127.0.0.1 или localhost) будут перенаправляться через SSH-соединение и уже с компьютера на другом конце отправляются на адрес HOST_ADDR:80. По такому принципу можно пробрасывать любое сетевое соединение; самый простой пример — до http-сервера, видного только в сети ssh-сервера, или до сервера базы данных.

Вот пример для пробрасывания подключения до сервера mysql, доступного в удалённой сети по адресу 192.168.3.12 и порту 3306:

% ssh -L 127.0.0.1:5900:192.168.3.12:3306 [email protected]

Естественно, все эти опции можно задавать через конфиг ssh-клиента, создавая нечто вроде «профилей подключения» для разных туннелей и сервисов. Об этом я напишу чуть позднее.

Sergey Stolyarov | 2013-01-21 в 16:33

Иногда нужно внедрить шрифты в уже существующий PDF-файл, но ссылки на шрифты в котором относительные, например, команда pdffonts показывает такое:

% pdffonts build.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
Helvetica                            Type 1            no  no  no       2  0
Helvetica-Bold                       Type 1            no  no  no       3  0
ZapfDingbats                         Type 1            no  no  no     249  0
Courier                              Type 1            no  no  no     252  0
Symbol                               Type 1            no  no  no     253  0
Helvetica-Oblique                    Type 1            no  no  no     261  0
Helvetica-BoldOblique                Type 1            no  no  no     430  0

Видно, что все шрифты не внедрённые (колонка emb). Спасает gs:

gs -q -dNOPAUSE -dBATCH -dPDFSETTINGS=/prepress -sDEVICE=pdfwrite -sOutputFile=output.pdf build.pdf

После её выполнения всё в порядке:

% pdffonts output.pdf 
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
BOTQQP+Helvetica                     Type 1C           yes yes no     619  0
BHJYCF+Helvetica-Bold                Type 1C           yes yes no     617  0
AUENQH+ZapfDingbats                  Type 1C           yes yes yes    865  0
KTOSAE+Symbol                        Type 1C           yes yes no     874  0
UMOKIT+Courier                       Type 1C           yes yes no     872  0
LJPUJQ+Helvetica-Oblique             Type 1C           yes yes no     901  0
YQLVGH+Helvetica-BoldOblique         Type 1C           yes yes no    1408  0

P.S. На названия конкретных шрифтов не обращайте внимания, по сути там будут те шрифты, в которые преобразуются алиасы типа Helvetica на вашей машине.

Sergey Stolyarov | 2012-12-21 в 15:00

Отключаем насовсем использование инкрементальных обновлений метаинформации (pdiff):

# echo 'Acquire::PDiffs "false";' > /etc/apt/apt.conf.d/50nopdiff

Одноразово можно так сделать:

# apt-get update -o Acquire::Pdiffs=false
Sergey Stolyarov | 2012-11-22 в 21:55

Тема заметки: конвертация музыкальных файлов (flac, mp3, wav, ape).

Меньше слов, больше дела.

Все скрипты ниже даны исключительно для образовательных целей, последние их версии всегда на гитхабе (не копипастите их с этой страницы):

git clone https://github.com/sigsergv/music-tools.git
Sergey Stolyarov | 2012-11-20 в 16:01

Проблема: при отправке письма через SMTP-сервер, в письмо добавляются заголовки, содержащие ip-адрес машины, с которой было отправлено письмо, выглядит это обычно так:

Received: from your.home-address.tld
        by mx.mailserver.tld with ESMTPS id ID1.1.2.3.4.5.6.7
        (version=TLSv1/SSLv3 cipher=OTHER);

Здесь your.home-address.tld — это как раз домашний адрес (с которого письмо отправлялось), а mx.mailserver.tld — адрес почтового сервера. Exim по умолчанию использует такой формат заголовка.

Цель: настроить SMTP-сервер исходящей почты, чтобы исключить из заголовка Receieved адрес домашней машины.

Рабочее окружение: Debian, Exim4

Sergey Stolyarov | 2012-03-08 в 13:33

Задача: нужно поставить Market (а теперь он называется Play) на андроидный виртуальный девайс. Широко известная в узких кругах процедура с копирование файла system.img больше не работает, пришлось искать новый способ.

Для работы Market на девайсе должен быть установлен Google Services Framework (gsf), это библиотека для работы с гуглоаккаунтами, нужна практически для всех гугловых приложений. В составе SDK уже есть образы с включённым gsf, именно на виртуальный девайс, основанный на таком образе, мы и будем ставить маркет.

© 2006—2023 Sergey Stolyarov | Работает на pyrengine