rssh, или Как разрешить SCP, но запретить SSH

Вполне адекватная ситуация: у вас есть удалённая Linux-машина с доступом по SSH, и вам срочно нужно дать кому-то из знакомых возможность загрузить на эту машину файл. Разумеется, нам абсолютно лениво разворачивать ради этого FTP-сервер. Да и зачем, когда есть SCP?

Вот только незадача: нам не хочется, чтобы этот знакомый имел возможность что-то делать на этой машине. Ну мало ли что. Поэтому для начала мы заводим отдельного пользователя, ставим для него домашней директорией место, куда надо залить файл, ограничиваем доступ этого пользователя к окружающим директориям. Но всё-таки этот пользователь пока имеет доступ к Shell, а нам — опытным паранойикам — это вообще не нравится.

Выход вроде как всплывает: надо заменить пользователю shell по умолчанию (/bin/sh) на что-нибудь другое. Вот только что?

Подробнее

Мой Linux орёт на меня! (+ решение проблемы)

Да, не самая приятная история, связанная с особенностями Pulseaudio. Но хорошо всё то, что хорошо кончается (или разрешимо для этого).

Проблема

Сижу я за работой, в фоне тихонько играет музыка. В какой-то момент отлаживаемое приложение подвисает, я пытаюсь отключить его соответствующей кнопкой окна. Разумеется, без ответа. Но кеды умные — подождут несколько секунд, а потом выплюнут окошко с вопросом «Приложение не отвечает на SIGTERM, прикончить его SIGKILL?». Окошко выплёвывается с характерным системным звуком.

И вот, кнопка завершения нажата, ждём эффекта. Тут из 40-ваттной акустики, подключенной к ноуту, раздаётся громкое «БР-Р-ЯМЦ», разрушая гармонию и покой одиночества в небольшой квартире, попутно заставив проснуться соседей. Ах да, это системный звук. С непривычки откладвается груда кирпичей, проклинается всё на свете и окошко закрывается.

Но как же так? Я же ставил Master volume в 20%, оно не могло издать такой громкий звук?

Смотрим в трей и видим, что Master volume теперь не 20%, а 100%. Чудеса!

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

Подробнее

Address Sanitizer, или Что делать, если не работает valgrind

Случилась непростая ситуация. Есть код, написанный на С, который активно используется через CGo в проекте, написанном на Go. В какой-то момент программа начала падать с ошибками от malloc: то segfault, то memory corruption.

Логичная мысль: нужен valgrind с его memcheck, чтобы проверить, кто лезет поперёк батьки в пекло в невалидную память. Однако, попытка скормить валгринду бинарник, полученный от go build, приведёт только к разочарованию — даже на простом Hello World валгринд разразится сотнями ошибок и отправит разработчика на известные координаты.

Это происходит из-за того, что go runtime довольно специфичен и неплохо отличается от такового в С. (Подробности можно спокойно нагуглить по запросу «golang valgrind»).

Так как же нам разобраться, что происходит?

Подробнее

Как откалибровать стол вашего 3D-принтера

Когда-то я уже рассказывал, что летом приобрёл себе неплохой китайский 3D-принтер Anet A6. За всё это время я успел выявить некоторые конструктивные проблемы этого чудо-агрегата и придумал обходные пути для некоторых из них. Но одна проблема вылезает достаточно регулярно — калибровка стола. И каждый раз я забываю особенности этого процесса и в итоге часами сижу у агрегата с довольно сердитым лицом и испариной на лице (процесс таки довольно жаркий, во время калибровки стол и хотенд должны быть нагреты до рабочих температур ради того, чтобы ненароком их не повредить, а также ради учёта теплового расширения).

Вчера эта процедура повторилась, и на этот раз я всё-таки напишу основные проблемы проведения этой процедуры.

Проблема 1: винты по углам

Стол у этого китайца (как и у большинства Prusa i3-подобных принтеров) подпружинен и крепится винтами по углам. В моём случае это ещё и достаточно дешёвые винты с потайной головкой Philips (крестовая), у которых довольно легко срывается шлиц. В идеале стоит заменить эти винты на что-нибудь покрепче с головкой под шестигранник или torx. Я до этого ещё не успел дорасти, но ради облегчения процесса калибровки добавляю немного смазки: «краснушку» в резьбы в основании стола (сюда подойдёт почти любая жидкая смазка, даже WD-40, там нет высоких температур) и высокотемпературную густую под шляпки (синего цвета; постараюсь уточнить название смазки, так как конкретно эту я попросил у отца на автосервисе). Некоторое время синяя смазка будет немного пахнуть при нагреве, но в какой-то момент должна перестать. В общем, такие простые меры помогут уменьшить шанс срыва головки на столе.

Проблема 2: ось X

У подобных дешёвых принтеров ось Z (вертикальная) обычно управляется двумя отдельными двигателями, слева и справа. Из-за этого, очевидно, легко сбивается ось X (перестаёт быть параллельной плоскости стола), так что процедуру выравнивания оси X выполнять очень важно. Немаловажно сделать это именно относительно плоскости стола принтера, а не того стола, на котором стоит принтер (на случай, если основание кривовато). Для этих целей на Thingiverse давно выложили модельку для такой калибровки: тыц, хотя примерную калибровку можно сделать и простой линейкой от основания.

Важно: печатать калибровочный инструмент лучше PLA-пластиком, так как у него нет серьёзных проблем с усадкой, как у ABS, к примеру. У меня уже был опыт (ну, всякое бывает, прошляпил. Просто ABS было больше), и я потратил пластик зря, по сути. Не повторяйте моих ошибок ;)

Проблема 3: выравнивание стола

Стол крепится 4 винтами по углам, а это значит, что есть шанс его хорошо перекосить по диагоналям. Если перетянуть два диагональных винта, стол начинает значительно изгибаться, и даже стекло на поверхности не помогает. Симптом примерно такой: на двух противоположных углах сопло слишком близко к столу и пластика почти нет, а на других углах сопло вообще не дотягивается до стола. Решение: ослабить винты на углах, где стол слишком высоко (близко к соплу) и скомпенсировать подъём затягиванием других двух винтов. Можно помогать себе линейкой, в идеале — тонкой металлической: прикладывая линейку ребром к столу, можно довольно быстро определить существенные изгибы.

Именно этот эффект действовал мне на нервы бóльшую часть времени.

***

Вот как-то так. Скоро постараюсь написать о том, какие несложные модификации полезно сделать со свежеприобретённым принтером, чтобы облегчить себе жизнь.

Arduino Leonardo vs. Linux

Когда-то давно я натолкнулся на проблему с прошивкой Arduino Leonardo/Micro (в общем, всего, что основано на ATmega32U4 и использует Caterina Bootloader) с моего Debian-лаптопа. Сегодня она наконец-то встала мне поперёк горла и я стал разбираться.

Исходные данные: Arduino IDE неважно какой версии, Debian (вероятно, та же проблема будет с конфигурациями любого линукса) , клон Arduino Leonardo (Iskra Neo).

Симптом: при нажатии кнопки «Upload» в IDE происходит перезагрука платы, при этом вываливается примерно следующий текст:

На девственно чистой Ubuntu и Debian такой проблемы не возникает.

Подробнее

Заканчивается место в «мастерской»

Сегодняшний день знаменателен тем, что я решился-таки вскрыть старые ящики с хламом и попытаться навести порядок во всём этом барахле. Несмотря на то, что сейчас заполняется уже второй мешок с мусором, меня не покидает ощущение того, что место в рабочей половине комнаты aka мастерской постепенно заканчивается.

Очень много места резко отъел 3D-принтер и купленный недавно ламинатор для ЛУТа. В ящиках стола достаточно много места, но нужно поразмышлять на тему, как оптимизировать пространство для хранения — обычные глубокие офисные ящики из рук вон плохо подходят для хранения инструментов и материалов.

«И отдельно с большим наслажденьем…» …я избавился от груды старых CD-дисков на одной из полок. Теперь на их месте живёт куча железок — вот так меняется жизнь и мир вокруг.

А пока что — вынесено несколько мешков с барахлом на свалку, кое-что торжественно отправилось на чердак, и в итоге «мастерская» стала более-менее пригодной для работы.

Тормоза в vim

Да, я жутко люблю Vim, привык работать в нём постоянно и всякое такое. Но тут вдруг он решил выкинуть странный финт.

В какой-то момент я обратил внимание, что Vim периодически отъедает 100% времени своего потока. Разумеется, всё при этом начинает тормозить, а ноут вдобавок раскручивает пропеллеры для рассеивания тепла. Понятное дело, что это немыслимо для простой работы с текстовым редактором.

Начал разбираться, в чём дело. У меня есть свой конфигурационный файл .vimrc, собранный за все годы использования редактора. Он кочевал между разными операционками, перепробовал разные DE (и Gnome, и Unity, и KDE, и всякую легкотню вроде LXDE и XFCE) и эмуляторы терминала (да, я неравнодушен к консоли). Тем не менее, проблема обнаружилась только сейчас, в Konsole в KDE5.

Грешил я и на плагин для навороченного редактирования Python с автодополнениями и проверкой на ошибки, и на самописные функции. Однако, профилирование ничего не вывело — все внешние функции работают умеренное время (сильно меньше секунды в сумме для каждой).

Не найдя прямого решения в интернете, я пошёл по пути наименьшего сопротивления — закомментировал все директивы и начал раскомментировать их по одной, перезапуская редактор. Проблема проявилась после раскомментирования вот этого:

Если мне не изменяет память, эта штука позволяет копировать выделения из Vim без вкрапления туда номеров строк и тому подобной ерунды. Раньше оно работало (наверное), но мышка в сочетании с Vim для меня кажется моветоном по текущему опыту — поэтому комментирую без задней мысли и возвращаюсь к нормальной работе. Теперь без тормозов. А так — ещё разобраться бы, как заставить эту ненужную мне фичу работать в Konsole.

snapshot20

Прикладное фенькоплетение

Немного творчества, полезного в быту.

В прошлом году я повесил на ключ от машины кусок разноцветного шлейфа, закрепив на кольце с помощью характерного для него разъёма. Вообще, иметь ремешок или ещё что-то такое на ключе очень удобно — помогает быстрее найти его в захламлённой сумке или рюкзаке, к тому же всегда есть, чем занять руки в неловкие моменты. Однако, долго этот шлейф не продержался — начали расходиться проводки, а в результате так вообще — оторвался разъём на хвостике и шлейф расплёлся окончательно.

Что ж, повод потратить десять драгоценных минут на то, чтобы сделать что-то такое:

IMG_20160713_155717

Теперь и шлейф не расплетётся, и вид куда живее того, что было раньше, и вообще — ещё одна капелька позитива в жизнь ;)

Даёшь самосборные тулчейны!

Вот начинают подгорать мои любимые дедлайны. Один из текущих — подготовка к Робофесту.

Да, всё-таки мы решили поучаствовать в этом фестивале в лиге «Autonet-18+», где задачей для робота будет проезд по а-ля городской местности — ландшафту 10х10 метров с дорогами, домами, знаками и светофорами. В качестве шасси решили использовать нашего уже немного пошумевшего лайнтрейсера (вы напомните, я потом о нём ещё расскажу — было весело), только мозги решили проапгрейдить с простой Arduino до STM32F4Discovery. Сразу куча плюшек — и частота на порядок больше, и аппаратная плавающая точка, и ШИМ на ультразвуковой частоте — моторы не пищат на низкой мощности :)

Так вот. Прозаичная история о том, как я начал писать софт под эти «мозги», что такое тулчейн и с чем его положено подавать к столу.

Подробнее

Yakuake в KDE5

Есть у меня слабость к drop-down терминалам. Удобно же: не отвлекаясь от рабочего процесса, можно запустить фоном какую-нибудь задачку, которая не так важна, чтобы под неё ещё окошко выделять, и в то же время не так тривиальна, чтобы запускать её из лончера (например, посмотреть вывод htop или по-быстрому подключиться к хосту по ssh).

Так как я — ярый кедовод, то и терминал соответствующий — Yakuake. Проектик с некоторым наростом пыли, зато гармонично смотрится в KDE и вообще использует компонент нативного кедового Konsole. Назначил горячую клавишу — и терминал всегда под рукой.

Однако, кеды растут и расцветают. Вон уже какая-то пятая-разлохматая версия в Debian testing лежит (и на моём лаптопе, соответственно). Конечно же, обновления в какой-то момент затронули и Konsole. И в одно хмурое декабрьское утро я увидел вот это.

Подробнее