Анатомията на GNU/Linux – втора част

6
1158

В първата част започнахме с основните неща при Linux – стартиращата програма, ядрото, зареждането на основните компоненти и други. Нека сега да продължим с разглеждането на анатомията на GNU/Linux.

Графичната десктоп среда

Десктоп средата се състои от редица стандартни компоненти, като например:

  • Мениджър на продаваните прозорци
  • Файлов мениджър
  • Таскбар и меню за стартиране на приложения
  • Емулатор на терминала
  • Скрийнсейвър, който се използва и за заключване на екрана
  • Мениджър на захранването
  • Браузър, който почти не се използва
  • Пощенски клиент
  • И още много други

Двете основни графични десктоп среди са GNOME и KDE. Предимно те се борят за сърцата на обикновените потребители, като останалите масови десктоп среди често пъти използват техни компоненти. Но има потребители, които самостоятелно си сглобяват собствена десктоп среда на базата на примера на мениджърите на прозорци Awesome и i3.

Скрийншотът по-горе показва прозоречния мениджър Window Maker от GNUstep. Има го в хранилищата на повечето дистрибуции.

Графичният инструментариум

Инструментариумът включва библиотеки и/или фреймуърк, за възможно най-лесно съставяне на различни форми и бутони, при това в един и същи стил.

Флагманите в тази категория отдавна са и си остават GTK и Qt. Първоначално GTK бе създаден като инструментариум за свободния графичен редактор GIMP, но после се прехвърли под крилото на GNOME. Написан е на чист С с класове, но има и официални обвързвания с Python и C++, и още, той породи езика за програмиране с общо предназначение Vala.

Qt първоначално бе комерсиален фирмен инструментариум, а сега е с отворен код, но както преди е комерсиален. Написан е с голям размах на С++ и заменя стандартната библиотека и редица други програмни библиотеки, като предлага ефективен компилатор, който е и генератор на код. Има обвързвания с редица други програмни езици. KDE гордо стои върху всичкото това великолепие.

Графичният API

Mesa е основата на видеоизхода. Mesa предоставя API OpenGL, а отскоро и Vulkan. както и няколко други API от типа на VDPAU и VAAPI. Може да се каже, че Mesa поема върху себе си всички въпроси на графиката, подобно на DirectX в операционната система на известен софтуерен производител.

Информационната безопасност в Linux

Много обширна тема, която ще разгледаме накратко.

PAM — Pluggable Authentication Modules – модулната система за автентификация. Още от името се разбира, че тази система се грижа за правилната автентификация на потребителите в ОС, при това по различни начини. Чрез PAM се логват и отдалечените потребители, като в този случай PAM работи съвместно с имплементацията Kerberos, като обикновено се използва версията krb5 на MIT, понеже PAM сама по себе си не работи с отдалечени клиенти. Тези модули обикновено са споделени библиотеки – изпълними файлове с разширение so, които дават възможност за осъществяване на различни процеси при логването на потребителя. Така например, възможно е да бъде създадена домашна директория при първото логване (pam_mkhomedir.so) или да се осъществи монтиране на файлови системи (pam_mount.so).

Класическата работна програма su, както и по-младата sudo, са предназначени за изпълнение на команди от името на друг потребител, който по подразбиране е root. Най-съществената разлика между двете е, че su иска паролата на другия потребител, от акаунта на който искате да работите, а sudo иска вашата собствена root парола. Командата sudo е много гъвкава и дава възможност за стартиране на само на определение команди на отделните потребители са с различни права.

Мениджърът за контрола на привилегиите Polkit дава възможност на непривилегированите процеси да взаимодействат с привилегированите. На практика той прилича на sudo, но предлага много по-голяма гъвкавост и е предназначен на първо място за приложения, докато sudo е потребителска помощна програма. Интересното тук е, че правилата се пишат на JavaScript.

Linux Security Modules (LSM) е интегриран фреймуърк в Linux ядрото, който дава възможност за създаването на допълнителни модели по безопасността в компютърната система. Това се постига с помощта на различни модули за безопасност, които са съвсем различни от модулите на ядрото. Най-популярните модули по безопасността са SELinux и AppArmor. Първият, колкото и неочаквано да изглежда, а за мнозина може и да не е неочаквано, е създаден от Агенцията за Национална сигурност на САЩ и се развива от Red Hat. Вторият е роден в рамките на ОС Immunix и към днешен ден се развива от Canonical Ltd. По тези причини, SELinux се предоставя в RHEL и нейните производни, а AppArmor – в Ubuntu. И двата модула повишават безопасността на системата, като не позволяват на приложенията да извършват неочаквани операции и да стартират незнайни процеси. Така например, тези модули на безопасност няма да позволят на сървъра да споделя от диска информация извън няколкото споделени директории. Обратната страна на този метод е, че се налага конфигурирането на безопасността за всяко нестандартно настроено приложение. Малцина има толкова ентусиазъм и обикновено модулът по безопасност просто се включва в разрешаващ режим. Но далеч невинаги.

За GNU/Linux има антивирусни програми, но сред по-известните Linux дистрибуции няма нито една, която да идва с антивирусен софтуер, освен предлаганите специализирани решения за сканиране на операционната система.

Печатът

CUPS е общата система за печат в UNIX, която е създадена от компанията Apple. Системата е модулна, поддържа огромен брой устройства и към днешен ден няма алтернатива. Интересно е че CUPS има уеб интерфейс, който по подразбиране използва порта localhost:631.

CUPS работи единствено с принтерите, а скенерите се поддържат от фреймуърка SANE. За съжаление спектърът от поддържани устройства от SANE не е много голям. Редица драйвери за многофункционални устройства едновременно осигуряват работоспособността на скенера и работоспособността на принтера чрез CUPS. Така например е при HPLIP на HP inc. Благодарение на HPLIP системата GNU/Linux разполага с отлична поддръжка на печатащите устройства от HP.

Звуковата подсистема

В продължение на дълго време основната звукова подсистема на Linux ядрото бе ALSA. Някой потребители погрешно считат, че PulseAudio е заменил ALSA. Това не е вярно. PulseAudio е звуков сървър който е просто един софтуерен слой, който улеснява управлението на аудио потоците. Друг популярен аудио сървър е JACK, който е предназначен за професионална работа с аудиото. Той не е толкова удобен за потребителя, но осигурява много ниски латентности и предоставя гъвкава маршрутизация на MIDI потоците.

Знае се, че Red Hat подготвя PipeWire, който трябва да замени PulseAudio и JACK. Ще следим събитията.

Взаимодействието между процесите

Тук не става дума за POSIX неща от ниско ниво от типа на разделяне на паметта и сокети. За GNU/Linux бяха създадени няколко подсистеми за опростяване на взаимодействието между различните процеси (IPC) на десктоп приложенията. Към днешен ден най-популярна е шината за съобщения D-Bus, като останалите вече почти не се използват. За какво се използва това? Например, ако някой процес изпрати в тази шина съобщение за промени в своето състояние, аплетът, който слуша шината, ще разбере това и ще промени своето състояние или индикатор. Именно по този начин работят аплетите за регулиране на силата на звука и за клавиатурната подредба.

Мрежовата работа

В различните Linux дистрибуции мрежата традиционно се настройва с помощта на скриптове (при това различни). NetworkManager е рожба на Red Hat, създадена за да управлява всички интерфейси. В началото NM никак не се държеше добре и много силно ядосваше потребителите, но след това всичко се получи много добре и сега NetworkManager дава възможност за лесно управление на жичните и безжичните мрежи, всевъзможните тунели, виртуални мостове, VLAN и т.н. Получи се удобна и универсална помощна програма, която съвсем разбираемо по подразбиране е включена в Red Hat дистрибуциите. В Debian и неговите производни е включен в състава на графичната десктоп среда. Предлагат се и по-опростени алтернативи, като например, Wicd.

Работоспособността на Wi-Fi устройствата обикновено се осигурява от демона WPA supplicant, който има нелош конкурент в лицето на iwd, създаден от някой да е друг, а от компанията Intel.

Да споменем и демона Bluez, който осигурява работата с Bluetooth устройствата.

Защитната стена

Славата на iptables гърми далеч извън тесния кръг на брадатите системни администратори. Това не е обикновен филтър, а комплект помощни програми в потребителското пространство с подсистемата Linux Netfilter. Сравнително скоро в Linux ядрото бе добавена подсистемата nftables и съответно и потребителската помощна програма nft. Това бе направено преди всичко за унифициране интерфейсите на таблиците за маршрутизиране на IPv4, IPv6, ARP и софтуерните L2 рутери. В съвременните Linux дистрибуции командите на iptables са само софтуерна обвивка за nftables и не се препоръчват за използване.

Разбира се, има няколко графични среди, за работа с nftables, които са си типични защитни стени. Така например, в RHEL и нейните производни е включена firewalld, а в Ubuntu – UFW.

Пакетният мениджър

Пакетният мениджър е сърцето на Linux дистрибуцията. Най-популярните и с най-дълга история са RPM от света на Red Hat и dpkg от Debian. По-съвременен е pacman на  Arch Linux. Старите RPM и dpkg работят само с локални и пакети – те се разархивират. проверяват дали всички зависимости са удовлетворени и се инсталират. С работата с хранилищата се занимават други две програми, които са част от пакетния мениджър. При RHEL преди се използваше помощната програма yum, която сега е заменена с dnf. В Debian преди време се използваха apt-get и apt-cache, но сега те са обединени в общата apt. По-новият pacman е една монолитна програма и предлага съвсем опростен формат на пакетите, които се създават съвсем лесно. Има и други, като например nix, всеки със своите особености.

Новото от историческа гледна точка е появата на крос-дистрибуцийните системи за инсталиране на приложения. Те се появиха като резултат от многобройните опити да бъде преодолян адът на зависимостите и да бъде облекчен труда на програмистите, на които да не се налага да създават десетки пакети за различните Linux дистрибуции. Най-популярните проекти от подобен тип са Flatpack на Gnome, Snap на Canonical и AppImage, който е самостоятелен. Използват се различни подходи, но всички инсталират приложенията заедно с целия рънтайм и всички зависимости, като по този начин се постига изолация от дистрибуцията. Удобно е, но този подход доста напомня традициите всички необходими библиотеки да се влачат заедно със съответната програма, както става в операционната система на един друг софтуерен производител.

Разбира се, има и красиви инсталатори за лесно инсталиране и деинсталиране на различните приложения.

Заключение

Накрая вмъкваме едно изображение, което показва почти всичко изброено дотук:

4.6 7 гласа
Оценете статията
Абонирай се
Извести ме за
guest
6 Коментара
стари
нови оценка
Отзиви
Всички коментари