Inleiding
Meer dan een jaar geleden schreef ik enthousiast over mijn overstap van Ubuntu naar Debian GNU/Linux als besturingssysteem voor mijn computers. De conclusie was dat stabiliteit en vrijheid voorop staan – en dus was de keuze voor Debian vanzelfsprekend.
In de afgelopen maanden kwam ik langzaam aan tot een ander, iets genuanceerder inzicht. Voor een 'gewone' gebruiker die een computer enkel en alleen bedient, is de stabiliteit een zege. Alles blijft consequent hetzelfde en werkend. De veiligheid wordt achter de schermen gewaarborgd, maar méér verandert er ook niet.
Voor mij als softwareontwikkelaar betekent de oerdegelijke stabiliteit daarentegen ook het gebruik van oude versies van programma's en ontwikkeltools. Het duurt een gevoelde eeuwigheid voordat er bijvoorbeeld een update van de grafische omgeving of de Linux-kernel beschikbaar is. Ik ging op zoek en kwam terug bij Fedora.
Fedora
Lang geleden had ik dit systeem al eens geprobeerd in een virtuele machine
en op een live-USB-stick. Toen kon ik er niet mee overweg, maar dat was
nu wel anders. De GNOME-shell als desktopomgeving was me inmiddels wel
bekend. Het pakket- en updatebeheer met dnf
was even wennen, maar
verder geen probleem. De integratie van flatpak apps was nieuw; ze
blijken niet allemaal even toegankelijk voor mijn schermlezer. Maar
gelukkig zijn er ook nog steeds de 'ouderwetse' .rpm
-pakketten, al dan
niet via het systeemeigen pakketbeheer.
SELinux
Het grootste verschil met de mij eerder bekende Linux-distributies was de extra laag aan beveiliging die met behulp van SELinux wordt gerealiseerd. Het is een soort verkeersagent die bij elke actie van elk proces controleert of dat wel is toegestaan, op basis van de geldende verkeersregels (zogenaamde policies). Voor zo'n beetje alle gangbare applicaties worden er policies meegeleverd. Als gewone gebruiker (zie boven) heb je er verder geen last van. Al die tijd wordt jouw veiligheid gegarandeerd omdat er niets gebeurt wat niet van tevoren is toegestaan.
Webserver & PHP
Als webontwikkelaar liep ik wél tegen de spreekwoordelijke lamp.
sudo dnf install -y httpd php mariadb mariadb-server php-mysqlnd
Ik installeerde de Apache webserver, PHP en MySQL. Toen ik daarna mijn
bestaande hoofdmap had ingesteld in httpd.conf
, verscheen bij het openen
van http://localhost/
een dikke foutmelding. De webserver had geen
toegang tot de bestanden! Okee, dan controleren we de eigenaar, groep en
permissies van de betreffende mappen en bestanden… Allemaal
in orde. Waar kwam deze foutmelding vandaan?
Het bleek dat SELinux controleerde of mijn PHP-bestanden wel door httpd
mochten worden gelezen. Nee dus! Een stukje documentatie later waren
alle contenttypes op httpd_sys_content_t
ingesteld en had Apache toegang
tot de bestanden:
sudo chcon -R -t httpd_sys_content_t /var/www/html
De tijdelijke mappen van onder andere mPDF gaven daarna nog problemen met SELinux. Apache moest hier niet alleen leestoegang, maar ook schrijfrechten hebben:
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/vendor/mpdf/mpdf/tmp
Vanaf mijn lokale computer draaide nu alles naar wens – tot en met de databases en URL-rewriting. Bij het benaderen van mijn PC via het netwerk kreeg ik daarentegen opnieuw een foutmelding; de webserver was niet bereikbaar. Hier bleek dat de standaard ingeschakelde vuurmuur alle verkeer blokkeerde. Dat was met één commando aangepast:
sudo firewall-cmd --permanent --add-service=http
Configuratie
Bij het doortesten van al mijn (lokale) web-applicaties bleek dat er toch nog steeds sommige dingen niet functioneerden. Zo kon ik geen e-mail versturen vanuit de contactformulieren en werkte het via PHP versleutelen met GnuPG ook niet meer. Ook nu hielp de juiste documentatie mij uit de brand en leerde ik de booleans van SELinux kennen:
sudo setsebool -P httpd_can_sendmail 1
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_use_gpg 1
sudo setsebool -P httpd_setrlimit 1
Sinds de overstap bleek mijn brailledisplay alleen nog op de tekstconsole
te werken; niet meer onder de grafische desktop. Ik zocht contact met de
ontwikkelaars van BrlTTY en ziedaar: mijn gebruiker moest deel uitmaken
van de groep brlapi
:
sudo usermod -aG brlapi fwiep
Ook werkten de DOT7 (backspace) en DOT8 (enter)
toetsen niet meer, de andere zes wel. Dit bleek een
bug in brlapi_server
, een onderdeel van BrlTTY. Het voelt
zo goed om te hebben bijgedragen aan een programma dat door mijzelf,
maar ook door zoveel andere mensen wordt gebruikt. Het was een heel
leerzame ervaring voor wat betreft de kunst van het foutzoeken en het
belang van gedetailleerde logbestanden.
Apropos logbestanden; één commando heeft me enorm geholpen om de, tot nu toe, laatste SELinux plooien glad te strijken:
journalctl -t setroubleshoot
Hiermee krijg je, in gewone-mensen-taal, een opsomming van alles wat er door SELinux wordt gecontroleerd en geblokkeerd. Nog veel belangrijker zijn de suggesties om de betreffende situaties op te lossen. Jammer dat ik dit commando niet metéén had ontdekt; dat had me een hoop tijd gescheeld :-)
Conclusie
Ubuntu, Debian en Fedora; het zijn allemaal GNU/Linux distributies met een specifieke doelgroep voor ogen. Het feit dat ik elke distro een tijd lang met veel plezier heb gebruikt, toont maar weer dat er niets veranderlijker is dan de mens.
Eerst was ik een onervaren Linux-beginner en werd ik aan de hand genomen door de vele tools en keuzes die Ubuntu voor me maakte. Later knaagde mijn geweten en koos ik bewust voor Debian met het oog op vrijheid, veiligheid en stabiliteit. Tot slot haalde mijn eigen ontwikkeldrang me over om toch voor Fedora te kiezen; een moderne, actuele distributie waar soms dingen niet meteen werken. Maar samen maken we de wereld beter, voor ons allemaal.