Архив метки: altlinux

Мониторинг файловой системы в Linux. Inotify.

Для мониторинга событий файловой системы, таких как доступ к файлам, их модификация, создание/удаление, в Linux существует механизм под названием inotify. Он позволяет быстро и эффективно, в реальном времени мониторить указанные директории или отдельные файлы на заданные события и при их наступлении передавать информацию отслеживающим её приложениям. Читать

Автозапуск скрипта при загрузке ОС с помощью Systemd на примере x11vnc. Service-файлы.

Автозапуск скрипта при загрузке ОС с помощью Systemd на примере x11vnc. Service-файлы.

С массовым переходом на systemd, вопрос запуска скрипта от имени пользователя root при загрузке ОС, стал всё чаще подниматься на форумах и в умах линуксоидов, которым ещё не приходилось сталкиваться с этой новой системой инициализации. Меня этот вопрос так же не обошёл стороной, когда пришлось внедрять корпоративный дистрибутив, использующий systemd и появилась необходимость запускать при загрузке ОС x11vnc от имени пользователя root. Выяснилось, что в systemd, эта задача решается с помощью service-файлов, имеющих простой для понимания формат и создаваемых по стандартному, для этих целей, шаблону. Файлы эти располагаются в /lib/systemd/system (системные) и /etc/systemd/system (эта директория приоритетнее первой для systemd) и имеют имена вида: название.service. Загляните в эти директории, просмотрите несколько service-файлов имеющих знакомые названия типа network.service или cups.service и в общих чертах всё станет ясно. Содержание созданного мной service-файла таково:

[root@comp-core-2-81b58d system]# cat startvncserver.service
[Unit]
Description=Start vnc server /usr/bin/startvncserver

[Service]
Type=oneshot
ExecStart=/usr/bin/startvncserver
RemainAfterExit=yes

[Install]
WantedBy=graphical.target

Где, Description=Start vnc server /usr/bin/startvncserver — Описание сервиса.
Type=oneshot — Задание метода окончания периода запуска сервиса. Oneshot означает что действие, выполняемое сервисом должно быть окончено до запуска следующего сервиса.
RemainAfterExit=yes — Используется в связке с предыдущей опцией и говорит systemd о том, что данный сервис хоть и завершит свою работу после выполнения скрипта, но должен оставаться со статусом active.
ExecStart=/usr/bin/startvncserver — Путь к скрипту для выполнения.
WantedBy=graphical.target — Параметр, который даёт понять systemd, на какой стадии загрузки системы нужно выполнить данный сервис.  multi-user.target соответствует init3. graphical.target соответствует init5.

Для запуска, остановки, перезапуска, просмотра статуса  и включения в автозгрузку сервиса (и соответственно нашего скрипта), используются стандартные команды systemd.
Запустить:

[root@comp-core-2-81b58d system]# systemctl start startvncserver.service

Остановить:

[root@comp-core-2-81b58d system]# systemctl stop startvncserver.service

Перезапустить:

[root@comp-core-2-81b58d system]# systemctl restart startvncserver.service

Посмотреть статус:

[root@comp-core-2-81b58d system]# systemctl status startvncserver.service

И самое важное! Для запуска сервиса при загрузке ОС, его нужно включить:

[root@comp-core-2-81b58d system]# systemctl enable startvncserver.service

С автозагрузкой скрипта разобрались, теперь разберём сам скрипт и опции запуска vnc сервера x11vnc. В нашем случае, подключаются клиенты только из локальной сети, поэтому шифрование мы не используем. Из необходимых требований — запрет завершения процесса от имени пользователя и запрет чтения пароля на подключение пользователем. Поэтому мы запускаем x11vnc от имени root и храним пароль в файле, доступном на чтение только ему.

[root@comp-core-2-81b58d system]# cat /usr/bin/startvncserver

#!/bin/bash
while [[ $(test -f /var/run/xauth/A* ; echo $?) -ne 0 ]]
do
sleep 1s
done
/usr/bin/x11vnc -noipv6 -shared -forever -passwdfile /etc/x11vncpasswd -bg -display :0 -auth /var/run/xauth/A*

Где, используя цикл while мы задаём проверку того, появился ли файл «магической печенки», необходимый для запуска vnc сервера и если он ещё не появился, то ждём 1 секунду и проверяем вновь. Когда необходимый файл появляется, запускаем x11vnc со следующими опциями:

-noipv6 — Не использовать ipv6.
-shared — Обеспечить возможность подключения одновременно нескольких клиентов. Без этой опции, при подключении одного клиента, второй уже подключиться не сможет.
-forever — Не завершать работу сервера после подключения первого клиента.
-passwdfile /etc/x11vncpasswd — Указать, где искать пароль для подключения. Пароль содержится в текстовом файле, без шифрования, либо создаётся командой x11vnc -storepasswd в интерактивном режиме и записывается в файл ~/.vnc/passwd в шифрованном виде. При использовании первого варианта, нужно выставить права на чтение файла только пользователю root и соответственно запускать x11vnc от имени root, что я в общем и описываю.
-bg — запустить процесс на заднем фоне, то есть отвязать его от текущего терминала.
-display :0 — номер дисплея для подключения. По умолчанию в одномониторных системах это :0.
-auth /var/run/xauth/A* — путь к файлу с магической печенкой 🙂 То есть файлу авторизации X сервера. Где он лежит в вашей системе, можно выяснить так:

[yar4e@yar4e-admin ~]$ ps aux | grep X
yar4e     6888  0.0  0.0    568   144 pts/5    D+   14:39   0:00 grep X
root      7324  0.0  0.9  42356 19852 tty7     Ss+  Mar26  26:19 X :0 vt7 -auth /var/run/xauth/A:0-uyXr3I

Всё вышеописанное реализовывалось на Alt Linux P7 TDE и может незначительно отличаться на вашем дистре.

Автор: Yar4e

Монтирование дисков средствами Systemd.

Предисловие.

С переходом дистрибутивов Linux на Systemd, мы не редко сталкиваемся с особенностями/багами реализации в этой системе инициализации той или иной привычной нам вещи. Хоть Systemd и пытается сохранять совместимость с привычными нам способами настройки системы, но часто в итоге получается не так всё красиво, как на картинке. В данной заметке, речь пойдёт о том, как в Systemd взаимодействует с файлом /etc/fstab, почему сетевые диски, прописанные в этом файле раньше монтировались, а с приходом новой системы инициализации перестали и рассмотрим родной, для Systemd, способ монтирования дисков.

Всё ниже описанное актуально для Systemd 201 и и основанного на нём дистрибутива Alt Linux P7. Так как Systemd ещё находится в фазе активной разработки, то со временем исправят описанные баги и изменят/добавят опции или синтаксис (или уже возможно что-то изменилось, так как текущая версия Systemd — 216), но в общем информация будет полезна. Читать

CPU1: not responding.

Увидел я сегодня такой замечательный глюк после установки Alt Linux P7: CPU1: not responding и перезагрузка сразу после меню GRUB. До этого стоял Alt Linux P5, на котором были другие проблемы, но такого глюка не было 🙂 Полтора часа мучил настройки BIOS, сначала изменяя все опции связанные с CPU (логика), потом с памятью (попытка найти логику), а потом и вообще все подряд опции (метод научного тыка), и… и логика проиграла! Дело было в активированных опциях USB Keyboard Support и USB Mouse Support, отключение которых решило проблему! о_О Да, да ДА!!! И это не совпадение! Я несколько раз проверил, не совпало ли это действие с расположением звёзд на небе или фазой Луны и Нет — именно эти опции были причиной проблемы.. В общем, я считаю что это знание должно быть разделено с русскоязычным интернетом и должно сэкономить другим товарищам по несчастью часть нервных клеток 🙂 Времени выяснять, в версии BIOS дело, уровне поддержки данного железа ядром Linux или в криворукости собиравшего систему — не было, поэтому просто делюсь информацией, как есть. Конфиг ПК:
ПО: Alt Linux P7 TDE, с обновлённый пакетной базой.
Железо: Intel(R) Core(TM)2 CPU E8400 @ 3.00GHz (fam: 06, model: 17, stepping: 0a), Gigabyte G33M-DS2R.

Автор: Yar4e

Начало работы

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

Например, есть большая разница, если сравнить работу на Pentium 2 и на другом 4-х ядерном ПК. Понятное дело, что пентиум второй при использовании современных программ будет очень часто зависать и вообще никак не потянет загрузку оконной оболочки калькулятора. Я уже молчу о вычислении 2+2 🙂

ПК, которые имеют 4-х ядерный процессор более работоспособны и для разработки приложений профессионалы используют именно такой тип оборудования, или мощнее.

Но это не всё. Также важную роль играет и программное обеспечение, которое установлено. Самым главным является ОС. (операционная система) 
Лично я пробовал шесть ОС, из них долгое время отработал на трёх. Среди них Ubuntu (и её другие модификации как XUbuntu, KUbuntu…), OpenSuse, LinuxMint, Windows (xp и 7), AltLinux (вот это вот не посоветовал бы), ну и конечно же MacOS.

Из всего перечисленного в работе побывал Windows, Ubuntu (стандартная, gnome), в данный момент практикую MacOs и буду дальше работать только с ним, надеюсь.

Для разработки, как вы уже поняли, MacOs будет самым лучшим вариантом. Из опыта скажу, что это система неубиваема, выдерживает очень сильные нагрузки, никаких глюков и подвисаний. То есть система действительно стоит тех денег, которые хочет за неё получить разработчик.

На втором месте я бы поставил Ubuntu. Данная система хороша, отлично подходит для тех, у кого нету средств для покупки Apple ПК. Данная система бесплатная и в ней есть очень много также бесплатных продуктов, среди которых есть инструменты для разработки под различные языки программирования.

Ну и на самом дне конечно же виндовс. При том любой. Хоть ХР, хоть седьмой — разница есть, разве что в дизайне, а так это «макаронное решето» для вирусов. А вирусы настолько малы, что их в микроскоп не всегда видно… Поэтому можно сделать вывод, что наличие данного решета как то бесполезно. Что с ним, что без него — одинаково. Иди и ломай.

Вера в Касперского

Народ в общей массе, установив данный не бесплатный продукт становится полностью уверен, что никакие вредоносные программы больше не смогут попасть в систему. Но свойственно это ламерам, как правило. Если вам не известна система работы антивирусника, то расскажу вкратце:
Есть вирус, его поймала «лаборатория Касперского» (звучит эффектно), которая занимается изучением вируса (возможно декомпиляция и тд). Затем из программного кода вируса, который увидели, делают выводы, алгоритм ликвидации вируса а также всей его проделанной работы, насколько это возможно. Затем вирус добавляется в базу данных касперского. Только после этой процедуры наш любимый Антивирусник умеет удалять вирус той версии, которая попадала в лабораторию. Следовательно, если вирус не был в лаборатории, то он не будет пойман!

Каждый день какие нибудь школьники сделают сотнями эти вирусы и сомневаюсь в том, что все они проходят через лабораторию. Только лишь особо старые могут там появиться. И причина возможности работы вредоносных программ — файловая система виндовса. То есть на линуксе и на MacOS не возможно то, что возможно для вирусов на Windows.

Там ещё много интересного, но боюсь, что этого достаточно, чтобы не работать с виндовсом.
Лично я, практикуя MacOs устанавливаю виртуальный виндовс, через который запускаю какие либо программы, аналог которых нету в других ОС. Соблюдая правило «не ходить в интернет через виндовс на те сайты, где над