Debian. Systemd. Подвисает терминал при перезагрузке удаленной машины по SSH

Ситуация: вы, подключившись по SSH к удаленному серверу, производите его перезагрузку. Вас не выбрасывает из подключения, а лишь выбрасывает по tcp таймауту. Очень не приятно ждать столько времени, и даже ctrl+c не работает. Лечится очень просто, используем Systemd-logind  :

apt-get install libpam-systemd dbus

Systemd-logind отслеживает активные пользовательские сессии и назначает все процессы, порожденные в них, так называемым «слайсам». Таким образом, когда система выключается, systemd может просто выполнить SIGTERM внутри пользовательских "слайсов" (включая разветвленный SSH-процесс, который передает определенный сеанс), а затем продолжать закрывать службы и сеть.

D-Bus: 

Система межпроцессного взаимодействия, которая позволяет приложениям в операционной системе сообщаться друг с другом.

О systemd-logind:

systemd-logind is a system service that manages user logins. It is responsible for:

  • Keeping track of users and sessions, their processes and their idle state. This is implemented by allocating a systemd slice unit for each user below user.slice, and a scope unit below it for each concurrent session of a user. Also, a per-user service manager is started as system service instance of user@.service for each user logged in.
  • Generating and managing session IDs. If auditing is available and an audit session ID is set for a session already, the session ID is initialized from it. Otherwise, an independent session counter is used.
  • Providing PolicyKit-based access for users to operations such as system shutdown or sleep
  • Implementing a shutdown/sleep inhibition logic for applications
  • Handling of power/sleep hardware keys
  • Multi-seat management
  • Session switch management
  • Device access management for users
  • Automatic spawning of text logins (gettys) on virtual console activation and user runtime directory management

User sessions are registered with logind via the pam_systemd(8) PAM module.

 

Оригинальный текст:

When you shutdown or reboot your system, systemd tries to stop all services as fast as it can. That involves bringing down the network and terminating all processes that are still alive -- usually in that order. So when systemd kills the forked SSH processes that are handling your SSH sessions, the network connection is already disabled and they have no way of closing the client connection gracefully.

Your first thought might be to just kill all SSH processes as the first step during shutdown, and there are quite a few systemd service files out there that do just that.

But there is of course a neater solution (how it's "supposed" to be done): systemd-logind.
systemd-logind keeps track of active user sessions (local and SSH ones) and assigns all processes spawned within them to so-called "slices". That way, when the system is shut down, systemd can just SIGTERM everything inside the user slices (which includes the forked SSH process that's handing a particular session) and then continue shutting down services and the network.

systemd-logind requires a PAM module to get notified of new user sessions and you'll need dbus to use loginctl to check its status, so install both of those:

apt-get install libpam-systemd dbus

https://serverfault.com/questions/706475/ssh-sessions-hang-on-shutdown-reboot

Состояние гонки

Состояние гонки (англ. race condition) — ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода. Своё название ошибка получила от похожей ошибки проектирования электронных схем (см. Гонки сигналов).

Состояние гонки — «плавающая» ошибка (гейзенбаг), проявляющаяся в случайные моменты времени и «пропадающая» при попытке её локализовать.

 

 

Гейзенбаг

Гейзенбаг (англ. heisenbug) — термин, используемый в программировании для описания программной ошибки, которая исчезает или меняет свои свойства при попытке её обнаружения. Это слово, в отличие от слова «баг» (англ. bug), в русском языке слишком редко используется. Не полностью идентичный, но достаточно близкий по значению русскоязычный термин — «плавающая ошибка».

Примером могут являться ошибки, которые проявляются в окончательном варианте программы (релизе (англ. release)), однако не видны в режиме отладки (англ. debug), или ошибки синхронизации в многопоточном приложении.

Сообщество Fedora выбрало «heisenbug» кодовым именем 20 версии дистрибутива.

Продолжить чтение »

Fortigate SSL VPN using web and tunnel mode. Пропала кнопка connect.

Вы пользовались FortiClient SSL VPN заходя в браузер и нажимали Connect

А теперь кнопка пропала, и браузер все время просит установить SSL-VPN client plugin.
После перезагрузки браузера это повторяется.

Вот что пишет FortiNet на своем сайте:

Significant SSL VPN web portal improvements (287328, 292726, 299319)

Significant updates and improvements have been made to the SSL VPN web portal in preparation for future browser updates, and in order to support all browsers:

  • SSL VPN web portal redesigned.
  • SSL VPN tunnel mode widget no longer works in the web portal. The tunnel mode widget used a deprecated NPAPI plugin mechanism to send the tunnel client to the browser for local system execution—this is a popular exploitation vector. FortiClient is now required for tunnel mode SSL VPN.
  • SSL VPN Web mode RDP Native java applet removed.
  • Removed unnecessary options from RDP bookmark and changed to HTML5 RDP.
  • Cache cleaning function has been removed.
  • If updating to 5.4.1, see above (258700).

Из-за проблем в безопасности почти все браузеры в новых версиях отказались от использования NPAPI, который был необходим для запуска VPN-подключения из браузера.
Вот пара решений:

  • использовать полноценный FortiClient
  • запускать FortiSSLVPNclient.exe вручную, указав там параметры подключения. Если в какой-то момент клиент перестанет подключаться - попробуйте залогиниться в браузере под своим пользователем и выйти. Наиболее простой вариант.
  • подобрать себе второй браузер, старой версии, где еще осталась поддержка NPAPI, например FireFox ESR 45.9.0, или Internet Explorer 11
    (он до сих пор есть в Windows 10 вместе с EDGE).
    Если не заработало проверьте, разрешен ли NPAPI в браузере, а так же когда появится уведомление - разрешите браузеру выполнить апплет forti.
    Ссылка на Firefox: (https://www.mozilla.org/en-US/firefox/45.9.0/releasenotes/).
    Работает эта штука только в 32-битных браузерах.

Глюк SAMBA, загадочное число 4294967295

Вы не можете выполнить chown username *, просто ничего не происходит, а при выполнении:

wbinfo -i username

возвращает:

username:*:4294967295:4294967295:/home/DOMAIN/username:/bin/false

 - подозрительно большой ID 4294967295.

Это глюк SAMBA, у меня случился на 4.2.14 после обновления с предыдущей версии.

Вылечилось строчкой в /etc/samba/smbd.conf:

idmap config * : range = 1000-1999999

И выполним рестарт сервисов:

/etc/init.d/winbind restart

service smbd restart

А число 4294967295 это - FFFFFFFF, или 11111111111111111111111111111111, если понимаете к чему я )

Миграция RedHat RHN Classic to RHSM

Red Hat is transitioning from the Red Hat Network (RHN) hosted interface to the Red Hat Subscription Management (RHSM) interface in July 2017. Red Hat has invested in and seen success from RHN for many years, and has used that experience to build more robust technologies like RHSM.

RHSM will provide solutions that are easier to navigate and scale, and tooling to manage your subscription assignments via the Red Hat Customer Portal. Systems registered as clients to Red Hat Network Classic Hosted either directly or indirectly with Red Hat Proxy need to migrate to RHSM interface tools.

If you are using legacy technologies, you need to shift to RHSM by July 2017.

До июля 2017 года надо будет мигрировать свои системы в новый RHSM, сделать это очень просто:

в командной строке RHEL-системы выполнить:

yum install subscription-manager-migration subscription-manager-migration-data

rhn-migrate-classic-to-rhsm

Ввести свой логин и пароль (который указываете при регистрации в setup). Системы удалят себя из старой RHN Classic и зарегистрируются в новой RHSM.

GPO targetting — применение политик в зависимости от разрядности OS. WMI-запросы.

Рассмотрим пример использования таргетирования (нацеливания) групповых политик в зависимости от разрядности операционной системы на примере переменной окружения SNC_LIB для SAP GUI. Определим в настройках групповой политики переменную окружения два раза, один раз для x32, второй раз для x64. В одном случае переменная будет обрабатываться при разрядности процессора x32 и указывать на папку "C:\Program Files", в другом, при разрядности x64 и указывать на "C:\Program Files (x86)".

targetting_0

Продолжить чтение »

История запросов в SQLPLUS стрелочкой вверх в Linux

Хотим в Linux вызывать историю запросов в sqlplus стрелочкой вверх, как это делается в Windows:

  1. Устанавливаем пакет rlwrap доступным в вашей системе менеджером пакетов: yum install rlwrap (или apt-get install rlwrap)
  2. логинимся под пользователем, под которым хотим запускать sqlplus: su - orasm1 (например)
  3. для интерпритатора csh создадим алиас для команды: alias sqlplus "rlwrap sqlplus" (для bash - alias sqlplus="rlwrap sqlplus")
  4. запускаем sqlplus / as sysdba и радуемся

Для того чтобы алиас работал перманентно (после перезагрузки) его нужно добавить в профиль. Для систем SAP на интерпретаторе csh сделайте это вручную или с помощью следующей команды:

echo alias sqlplus "rlwrap sqlplus" >> ~/.dbenv_$HOST.csh

Или добавьте в профиль alias sqlplus="rlwrap sqlplus ~/.bashrc для интерпритатора bash.

Скрипт рекурсивной очистки от пустых каталогов Windows

Данный скрипт очистит C:\mydir от всех пустых каталогов и подкаталогов. Проверено на каталоге в котором 350 000 элементов.

@echo off
set "in=%C:\mydir"
for /r "%in%" %%i in (.) do dir /b "%%~i" | find /v "">nul || rd /s /q "%%~i"
exit

Настроить архивирование дерева каталогов за прошлый период с помощью WinRar

Нам поможет скрипт и установленный WinRar ;)

chcp 1251
rem ---------------------------------------------------------------
rem Надо настроить:
rem Gde - Папка, где берём файлы для архивирования и удаления
rem Kuda - Папка, где храним архивы
rem TDate - Дата в формате ГГГГММДД
rem В приведенном батнике дата преобразуется из системной переменной %Date%
rem Для Win XP или 2003 %Date% по умолчанию выдаётся в формате ДД.ММ.ГГГГ
rem При необходимости написать своё преобразование

Set Gde=D:\DATA_FILES\Katalog
Set Kuda=D:\Backups\Katalog.arh

Set TDate=%date:~6,4%%date:~3,2%%date:~0,2%

If Exist %Kuda%\%TDate%.rar GoTo End

MD %Kuda%

"%programfiles%\WinRar\Winrar.exe" a -r -df -ed -to30d %Kuda%\%TDate%.rar %Gde%\*.*

:End
rem ---------------------------------------------------------------

где:

a - добавить файлы в архив

-r рекурсия в подкаталоги

-df - удалить файлы после архивирования

-ed не добавлять пустые каталоги

-to30d - архивировать файлы старше 30 дней

 

Set TDate=%date:~6,4%%date:~3,2%%date:~0,2% поможет привести текущую дату в божеский вид - год, месяц, число для удобства сортировки по имени.

Данный скрипт устанавливаем в планировщике задач Windows. Если что-то не работает, проверьте ваши пути и особенно переменную окружения %date%, возможно в вашей командной строке ее формат отличается.