Linux – Shell enzo… deel 5
Vandaag zijn we aangekomen bij deeltje 5 van de maandelijkse “Linux – Shell enzo” serie. Deze keer gaan we dieper in op het Linux rechtensysteem en hoe we zelf met deze rechten aan de slag kunnen. Daarnaast gaan we een aantal methodes bekijken m.b.t. software installaties zoals manuale installatie, Apt, RMP en meer. We leren hoe en op welke manieren we software kunnen toevoegen en verwijderen van ons Linux systeem. Als kleine extra kijken we nog even naar system terminal en de Linux headers. Kortom, weer veel interessante dingen om te doen dus laten we snel aan de slag gaan…
Linux rechtensysteem
Alvorens we gaan starten met commandoās is het goed om te snappen hoe Linux (zonder mods) omgaat met rechten. De manier waarop file permissions ingesteld worden is namelijk anders dan in Windows.
Linux kent 3 permissie groepen die aanwezig zijn op elk bestand en op elke directory (hierna te noemen āobjectā), te weten:
- u – owner
Alleen de originele ontwikkelaar (aanmaker) van het object is āownerā en wordt toegevoegd aan deze groep. - g – group
De āgroupā groep bevat gebruikers of groepen die aan het object toegekend zijn. - o (of a) – all users
De āall usersā groep is de groep die van toepassing is op alle gebruikers van het systeem.
Per groep kunnen we 3 soorten permissies / rechten instellen:
- r = read (lezen)
Het lezen van een object. - w = write (schrijven)
het schrijven of modificeren van een object. - x = eXecute (uitvoeren)
Het uitvoeren van bestand of het bekijken van de directory inhoud.
De rechten in Linux worden weergegeven in 10 letters, b.v.:
-rw-r--r-- |
Dit is te verdelen in 4 delen / octetten:
- | rw- | r-- | r-- |
1. De eerste letter is een “-” als het een bestand is en een “d” als het om een directory gaat. Als er een ālā gedefinieerd staat dan gaat het om een āsymbolic linkā.
Vervolgens zijn er nog 3 octetten over van elk 3 letters.
2. Het eerste 3-letterige octet laat de rechten zien voor de beheerder (owner) van het bestand.
3. Het 2e 3-letterige octet laat de rechten zien voor leden van de groep die het bestand beheren (group).
4. Het 3e en laatste 3-letterige octet laat de rechten zien voor alle overige gebruikers (all users).
Als we kijken naar het vorige voorbeeld dan weten we nu dat:
- Het gaat om een bestand
- De owner heeft: rw- rechten
- De leden van de groep die het bestand beheren hebben: r– rechten
- Overige leden hebben r– rechten
Maar wat betekenen de rechten:
Je kunt deze bekijken als bits waarbij een waarde 1 is en een ā een 0 is. rw- = 110 en 110 = 6 in decimalen. Zie hieronder de omzetting van het 2 cijferige binaire systeem naar binaire cijfers:
00000 = 0
00001 = 1
00010 = 2
00011 = 3
00100 = 4
00101 = 5
00110 = 6
00111 = 7
etc …
- r = 4
- w = 2
- x = 1
Omgerekend hebben we nu de volgende rechten:
- De owner heeft: rw- = 110 (binair) = 6 (decimaal) rechten
- De leden van de groep die het bestand beheren hebben: r– = 100 (binair) = 4 (decimaal) rechten
- Overige leden hebben r– = 100 (binair) = 4 (decimaal) rechten
Als we de binaire nummers achter elkaar zetten is dat 644.
Een aantal voorbeelden van rechten in Linux:
- 777 = rwxrwxrwx = Hier zijn geen restricties. Iedereen heeft volledige rechten op het bestand.
- 755 = rwxr-xr-x = De owner heeft volledige rechten op het bestand, de leden van de groep kunnen lezen en uitvoeren en de overige gebruikers kunnen ook lezen en uitvoeren.
- 700 = rwx—— = De owner heeft volledige rechten op het bestand maar niemand anders heeft toegang tot dit bestand.
- 666 = rw-rw-rw- = Iedereen heeft lees en schrijfrechten op dit bestand.
- 644 = rw-r–r– = De owner heeft lees en schrijfrechten op het bestand, de overige gebruikers kunnen dit bestand alleen lezen.
- 600 = rw——- = De owner heeft lees en schrijfrechten op het bestand maar niemand anders heeft toegang tot dit bestand.
Werken met Linux rechten
Nu we inzichtelijk hebben hoe het Linux rechten systeem is opgebouwd wordt het tijd om ermee te gaan werken.
Om de actuele rechten op een object te bekijken gebruik je het volgende commando:
ls -l |
Om rechten toe te kennen of te modificeren gebruiken we het āchmodā commando. Bovenstaande voorbeeld zag er als volgt uit ā-rw-r–r–“. Als ik nu aan de group gebruikers ārwā (read + write) rechten wil toekennen i.p.v. alleen ārā (read) rechten dan gebruik ik het volgende commando:
chmod g+rw testfile1.txt |
Het āchmodā commando is als volgt opgebouwd:
1. Group (u, g, o)
2. Rechten toevoegen (+) of verwijderen (-)
3. Type rechten
Om de read rechten van de āall userā groep compleet te verwijderen doen we:
chmod o-r testfile1.txt |
Bovenstaande rechten (rw-rw—-) staan gelijk aan ā660ā in decimalen. We kunnen rechten ook aanpassen door decimalen te gebruiken. Dit werkt makkelijker omdat we hiermee meerdere groepen in 1 keer aan kunnen passen. Stel je voor dat we de rechten willen veranderen naar 666 (rw-rw-rw-) dan voeren we het volgende commando uit:
chmod 666 testfile1.txt |
We gebruiken het āchownā commando om de owner (u) en de group (g) aan te passen. Dit kan alleen als je superuser bent. Het commando is dan als volgt: āchown owner:groupā. Om owner en group aan te passen naar ājarnoā voeren we dus het volgende uit:
chown jarno:jarno testfile1.txt |
Group (g) leden aanpassen werkt middels het āchgrpā commando. Het terug aanpassen naar de ārootā groep werkt als volgt:
chgrp root testfile1.txt |
Op de positie van de execute (x) flag kan ook een āsetuid/setgidā gedefinieerd staan. Als deze gedefinieerd is wordt deze getoond als een āsā wanneer de groep ook āexecuteā rechten heeft en als een āSā als de groep geen āx- rechten heeft. De setguid/setgid permissie verteld het systeem om het bestand altijd te draaien als āownerā met goedkeuring van de rechtmatige āownerā.
Wees voorzichtig met het gebruik van setuid / setgid bits in machtigingen. Als je ten onrechte setuid/setgid rechten toekent voor een bestand waarbij de ārootā deze rechten heeft dan kun je je systeem openstellen voor indringers.
We kunnen de setuid / setgid machtiging als volgt toekennen (en verwijderen):
chmod g+s testfile1.txt |
In bovenstaande voorbeeld zien we ook een āsticky bitā karakter welke op de āx- positie van de āall usersā groep genoteerd kan worden. Het sticky bit is ontzettend handig in netwerkomgevingen wanneer er gewerkt wordt met gedeelde bestanden. Het sticky bit zorgt ervoor dat het bestand alleen door de owner hernoemd en verwijderd kan worden. Het sticky bit passen we als volgt toe:
chmod +t testfile1.txt |
Setuid / setgid / stickybit e.d. zijn āspeciale permissies. Als er speciale permissies toegekend zijn dan is dit ook zichtbaar in de weergave. De bestandsnaam is dan ingekleurd:
Zoals al in de eerdere āLinux ā Shell Enzoā delen verteld hebben we op ieder systeem 2 speciale gebruikers, te weten:
su ā Voer een commando uit als superuser. Je moet hiervoor ook de gebruikersnaam en wachtwoord van de superuser ingeven. Om de āsuā sessie te verlaten type je āexitā en dan werk je weer met je reguliere gebruikers rechten.
Om bash uit te voeren als superuser gebruik je dus:
su |
Na het invoeren van de juiste credentials werk je als superuser tot bash wordt gesloten of tot het āexitā commando gegeven wordt.
sudo ā In sommige distributies (b.v. Ubuntu) kun je een gebruiker lid maken van een superuser groep. Voor het starten van een commando kun je dan het sudo commando plaatsen. Er wordt dan niet om de credentials van de superuser gevraagd (als bij āsuā) maar om de gegevens van een gebruiker die lid is van de superuser groep. Op die manier kun je commandoās tijdelijk (een voor een) als superuser uitvoeren.
sudu apt-get update |
Software installeren
Een ander “lastig” ding in Linux is het installeren van software. Linux kent vele soorten manieren en de meeste zijn lang niet zo gemakkelijk als de methodes die we gewend zijn van Windows. Dubbelklikken, volgende, volgende, klaar. Helaas. We kunnen veel soorten software installeren of vele soorten manieren. We gaan de volgende methodes bespreken:
- Manuele installatie (compilen e.d.)
- apt
- dpkg
- rpm
- yum
Linux manuele installatie
Het kan voorkomen dat je handmatig de software download en dat deze niet doelgericht is gemaakt voor jouw Linux distributie. Deze software moet je dan nog compilen vanuit de bron zodat deze werkbaar gemaakt wordt op jouw distributie. Dit proces is wellicht het lastigste installatieproces.Het installatieproces bestaat uit de volgende stappen:
- Download de software
- Pak deze nog uit (meestal is het een archiefbestand)
- Configureer de installatie
- Maak de installatie gereed
- Start de installatie
Alvorens we starten moet onze distributie over de juiste software (zoals de GCC compiler) beschikken om bestanden te kunnen compilen. De meeste distributies kunnen dit out-of-the-box. Zo niet, voer dan eerst het volgende commando uit om de juiste software te installeren:
sudo apt-get install build-essential |
Het downloaden van de applicatie is logisch toch? Vervolgens gaan we de bestanden uitpakken. Hoe dit moet hebben we in deel 4 van Linux – Shell Enzo besproken. Dit werkt b.v. als volgt:
tar xvf software1.tar.gz |
Als alle bestanden uitgepakt zijn, is er een nieuwe directory aangemaakt. Ga in deze directory en gebruik het volgende commando:
./configure |
Het ./configure bestand controleert het systeem op de benodigde software om het programma te maken. Het “./” voorvoegsel zorgt ervoor dat Bash in de huidige directory zoekt naar het “configure” bestand en deze uitvoert. Zonder de “./” zou Bash in de systeem directories zoeken naar het configure programma. Er zijn applicaties die iets anders gebruiken voor het configureren van de software. Indien dit het geval is, lees dan de bijgeleverde instructies.
De kans is groot dat er nu foutmeldingen tevoorschijn komen van software die we op het systeem missen (dependencies). Deze software moeten we eerst downloaden alvorens we verder kunnen gaan. Soms kunnen deze dependencies in 1 keer geĆÆnstalleerd worden via het commando:
sudo apt-get build-dep software1 |
Als alle benodigde pakketten geĆÆnstalleerd zijn kunnen we doorgaan met de volgende stap, het compilen van de software (ofwel het maken van een valide installatiepakket). Het compilen van de software doen we met het volgende (simpele) commando:
make |
Het “make” proces kan een tijdje duren en zou zonder fouten moeten lopen als alle dependencies aanwezig zijn. Het “make” proces kunnen we ook draaien met een aantal extra flags zoals -d voor debug informatie, -i voor het negeren van fouten en -s voor een “silent make”. Hoe het “make” proces te werk gaat is afhankelijk van de ontwikkelaar welke het “Makefile” bestand geschreven heeft. Meestal kan het “make” proces ook uitgevoerd worden als “make clean” en “make distclean” waarbij het “make clean” commando alle tijdelijke bestanden achteraf verwijderd en het “make distclean” proces de boomstructuur hersteld zoals deze was voordat de software werd uitgepakt (alle bestanden worden na het “make” proces verwijderd).
Als het programma “compiled” is dan is deze nog niet geĆÆnstalleerd. Het programma is nu klaar om geĆÆnstalleerd te worden. Dit doen we als volgt:
sudo make install |
Het programma wordt nu waarschijnlijk geĆÆnstalleerd in de “/usr/local” directory.
Het is aan te raden de programma directory niet te verwijderen. Deze bestanden kunnen later nog eens nodig zijn. Zo hebben we de bestanden ook nodig voor het verwijderen van het pakket. Om het pakket te verwijderen gebruiken we:
sudo make uninstall |
Programma’s die via deze handmatige methode geĆÆnstalleerd worden, worden niet automatisch geüpdate. Hou deze dus in de gaten om tijdig veiligheidsproblemen te patchen met nieuwe software.
Linux APT installatie
Linux maakt gebruik van verschillende repositories. Deze repositories zijn eigenlijk grote bibliotheken met software welke met 1 klik op de knop geĆÆnstalleerd kunnen worden. Denk hierbij aan b.v. de appstore. Deze repositories kunnen vanuit de shell of de grafische interface benaderd worden. Vanuit hier kun je de applicaties met 1 klik of 1 commando installeren. Een van die commando’s is het “APT” commando. Dit commando hebben we eerder gezien voor de update commando’s zoals “apt-get update”.
APT staat voor āAdvanced Packaging Toolā is een C++ software management pakket welke gebruikt wordt in Linux distributies die gebaseerd zijn op Debian. APT kan gebruikt worden via de terminal. Synaptic is de grafische gebruikersinterface van APT. Met APT kunnen we de volgende zaken uitvoeren:
- Het downloaden van (.deb) pakketten uit repositories
- Automatisch aanvullen van pakket dependencies
- Updaten van pakketten en de Linux distributie
- Verwijderen van pakketten
- Zoeken naar software
Kortom, een zeer uitgebreid software management pakket waarmee software installeren net zo gemakkelijk wordt als in Windows en op sommige vlakken zelfs vergelijkbaar met de app-store van je telefoon.
Bovenstaande eigenschappen gaan we in nader detail bekijken. Zoals we al eerder bekeken hebben worden de repositories toegevoegd in het /etc/apt/sources.list bestand. APT zal deze repositories gebruiken.
Om de databases van APT up-to-date te houden moeten deze regelmatig geupdate worden. Dit gaat via het volgende commando voor de apt-get database:
apt-get update |
Het volgende commando update de apt-file database:
apt-file update |
Laten we eens een applicatie (pakket1) gaan zoeken. Het volgende commando wordt hiervoor gebruikt:
apt-cache search pakket1 |
Als ook de omschrijving van de gevonden pakketten weer willen geven gebruiken we:
apt-cache show pakket1 |
We kunnen ook meteen de dependencies van een pakket opzoeken:
apt-cache showpkg pakket1 |
We kunnen ook zoeken naar pakketten die een bepaald bestand (bestand1) bevatten:
apt-file search bestand1 |
Als we het gewenste pakket hebben gevonden kunnen we deze automatisch downloaden en installeren middels het volgende commando:
apt-get install pakket1 |
Om meer softwarepakketten in 1x keer te installeren geven we simpelweg meerdere pakketten op:
apt-get install pakket1 pakket2 pakket3 |
Om de dependencies van een pakket te zoeken en installeren gebruiken we:
apt-get build-dep pakket1 |
APT kan eveneens gebruikt worden om de software te verwijderen:
apt-get remove pakket1 |
Bovenstaande commando verwijder de applicaties maar laat configuratie bestanden in tact. Om het complete pakket en alle bestanden te verwijderen gebruiken we:
apt-get purge pakket1 |
Om een pakket en alle dependencies te verwijderen gebruiken we:
apt-get autoremove pakket1 |
Om dependencies te verwijderen die niet meer door de software gebruikt worden gebruiken we:
apt-get autoremove |
Om ook alle .deb bestanden (installatiebestanden) te verwijderen uit de āpackage cacheā van pakketten die niet meer geĆÆnstalleerd zijn gebruiken we het commando:
apt-get autoclean |
Alle bestanden uit de āpackage cacheā verwijderen doen we met:
apt-get clean |
Bovenstaande commando zorgt ervoor dat alle installatiebestanden van alle pakketten opnieuw gedownload moeten worden als deze nodig zijn en is dus niet aan te raden bij trage internetverbindingen.
Tenslotte is er ook een commando om automatisch defecte applicaties te repareren. Deze is:
apt-get āf install |
Linux dpkg installatie
dpkg staat voor āDebian PaKaGeā en wordt evenals APT gebruikt om in Debian distributies van Linux software te beheren. dpkg en APT hebben vele overeenkomsten. Het grootste verschil is dat ādpkgā niet automatisch pakket dependencies installeerd terwijl APT dit wel kan. dpkg werkt als volgt:
Ook met dpkg gaan we zoeken naar het pakket: pakket1. Dit werkt als volgt:
dpkg -l pakket1 |
Het mooie aan bovenstaande commando is dat we meteen zien of het pakket al geĆÆnstalleerd is. We kunnen voor het zoeken ook wildcards gebruiken. B.v.:
dpkg -l *akket1 |
Om specifiek te bekijken of een bepaald pakket al geĆÆnstalleerd is gebruiken we de ā-sā flag:
dpkg -s pakket1 |
Als een pakket al geĆÆnstalleerd is kunnen we ook gemakkelijk opvragen in welke paden de bestanden geplaatst zijn:
dpkg -L pakket1 |
Meer informatie en dependencies kunnen we opzoeken middels het commando:
dpkg --print-avail pakket1 |
Om de bestanden in een pakket te bekijken gebruiken we de ā-cā flag:
dpkg -c pakket1 |
Als we het gewenste pakket hebben gevonden kunnen we deze automatisch downloaden en installeren middels het volgende commando:
dpkg -i pakket1 |
Het dpkg commando kan ook gebruikt worden om lokale dpkg pakketten te installeren. Stel je voor dat we 5 .deb files (5 softwarepakketten) in de folder ādebinstallā en subfolders van ādebinstallā hebben staan. Dan kunnen we al deze pakketten als volgt installeren:
dpkg -R --install debinstall |
Om een pakket alleen uit te pakken maar niet te installeren of configureren gebruiken we:
dpkg āunpack pakket1 |
Om pakketten te verwijderen met dpkg gebruiken we:
dpkg ār pakket1 |
Bovenstaande commando verwijder de applicaties maar laat configuratie bestanden in tact. Om het complete pakket en alle bestanden te verwijderen gebruiken we:
dpkg āp pakket1 |
Linux RPM installatie
RPM staat voor āRed Hat Package Managerā. Zoals de naam al doet vermoeden is RPM ontwikkeld voor Red Hat Linux. Tegenwoordig wordt RPM in de meeste Linux distributies gebruikt om software te beheren. De RPM manager installeert, beheerd, updatet en verwijderd software van het systeem.
RPM beheerd een eigen database van geĆÆnstalleerde pakketten en bestanden. RPM kent ook een grafische interface, namelijk de āPackage Management Toolā. RPM werkt met ārpmā bestanden.
Het RPM commando werkt met een aantal flags welke we eerst door gaan namen.
- i – Install
De āiā flag geeft aan dat het om een pakket installatie gaat - v – Verbose
De āvā flag is de āverboseā flag. De āverboseā optie zorgt ervoor dat u veel informatie over het installatieproces te zien krijgt - h ā Hash Symbols
De āHash Symbolsā flag zorgt ervoor dat er tijdens de installatie een duidelijke voortgangsbalk wordt weergegeven
Nu we weten welke belangrijke flags er zijn kunnen we deze in de praktijk gaan toepassen. Het installeren van een rpm pakket gaat als volgt:
rpm -ivh pakket1 |
Controleer de checksum van het RPM pakket met de ā–checksigā optie:
rpm –checksig pakket1
Om eerst te de afhankelijke software (dependencies) te bekijken gebruik je de -q flag. De āqā is voor āQuiry de softwareā. Vervolgens gebruiken we de ā-pā flag welke een lijst laat zien met de eigenschappen van software. Tenslotte gebruiken we de -R flag om de dependencies te bekijken:
rpm -qpR pakket1
Op het moment dat we een RPM proberen te installeren zal RPM controleren of alle dependencies aanwezig zijn. Als dit niet zo is dan zal RPM een melding geven. Het kan betekenen dat de dependencies niet aanwezig zijn of dat deze wel aanwezig zijn maar niet middels RPM geĆÆnstalleerd zijn waardoor deze niet voorkomen in de RPM database en RPM deze software ook niet herkend. Als we de software toch willen installeren dan gebruiken we de ā–nodeps” flag. Dus:
rpm āivh --nodeps pakket1 |
RPM zal weigeren om reeds geĆÆnstalleerde pakketten nogmaals te installeren. Een pakket updaten kan wel met de āUā flag.
rpm āUvh pakket1 |
Als je toch wilt downgraden naar een lager versienummer dan moet de ā–force” flag gebruikt worden:
rpm āUvh --force pakket1 |
Pakketten verwijderen doen we met de āeā flag (van erase):
rpm āe pakket1 |
Met de ā-qā optie kun je nog meer doen. Je āquerietā hiermee het pakket. ārpm āqlā laat een lijst zien met alle bestanden van geĆÆnstalleerde RPM software. ārpm -qa –lastā zorgt voor een lijst van recentelijk geĆÆnstalleerde RPM pakketten. En ārpm -qaā zorg voor een overzicht van alle geĆÆnstalleerde RPM pakketten. Voor meer informatie over het RPM pakket kun je de ārpm -qiā optie gebruiken.
Als de RPM database corrupt raakt moet deze gerepareerd worden. Dit doen we met de volgende commandoās:
cd /var/lib rm __db* rpm ārebuilddb rpmdb_verify Packages |
Linux YUM installatie
Om RPM beheren nog gemakkelijker te maken zijn er diverse innovaties bedacht. Een daarvan is āyumā. YUM staat voor āYellowdog Updater, Modifiedā. Yum is gemaakt in Python en is afhankelijk van RPM. Yum gebruikt zijn eigen repositories en kent ook verschillende grafische interfaces waaronder āYum Extenderā (yumex). Yum wordt gebruikt voor de installatie van pakketten maar ook voor het automatisch updaten van deze pakketten en het verwijderen. Yum controleert en beheerd dependencies en is qua functionaliteit redelijk vergelijkbaar met het eerdere genoemde APT. Yum wordt nog veel gebruikt maar zal op termijn vervangen worden door DNF. DNF is gemaakt met ālibsolvā.
Allereerst een aantal veelgebruikte Yum flags:
- -y (yes)
Beantwoord alle vragen met ājaā - -c (config file)
Specificeer de locatie van het configuratiebestand - -d (debug)
Stel het debug level in (hoe hoger het level des te meer debug logging er plaatsvindt) - -h (help)
Laat het helpbericht zien - -C (cache)
Draai Yum volledig uit de cache (dus zonder iets te downloaden)
Om software te zoeken kunnen de āsearchā optie gebruiken:
yum search pakket1 |
Meer informatie opvragen over de software en de dependencies kan met de āinfoā optie:
yum info pakket1 |
De āinstall” optie zorgt ervoor dat de software geĆÆnstalleerd wordt evenals eventuele dependencies die nodig zijn:
yum install pakket1 |
We kunnen ervoor zorgen dat tijdens de installatie alle vragen met āyesā beantwoord worden door het toevoegen van de ā-yā flag:
yum āy install pakket1 |
Om een applicatie te verwijderen gebruikt je de āremoveā optie:
yum remove pakket1 |
De update optie zal de oudere software en dependencies updaten naar de nieuwste versie:
yum update pakket1 |
Om alle geĆÆnstalleerde pakketten te laten zien kun je de ālistā optie gebruiken:
yum list installed | less |
Binnen Yum bestaan ook softwaregroepen zodat u deze niet 1 voor 1 hoeft te installeren. Om alle groepen te zien gebruikt je de āgrouplistā optie:
yum grouplist |
Om een hele groep met software te installeren gebruiken we de āgroupinstallā optie:
yum groupinstall 'DNS Name Server' |
Het updaten van den softwaregroep gaat met de āgroupupdateā optie:
yum groupupdate 'Graphical Internet' |
En het verwijderen met de āgroupremoveā optie:
yum groupremove 'DNS Name Server' |
Systeem Terminal / Login Loop
Zelf heb ik helaas meerdere malen te maken gehad met problemen waardoor inloggen onmogelijk was. 1 van deze issues was b.v. een login loop veroorzaakt doordat er nieuwe software geïnstalleerd was maar meestal nadat de systeem core van Linux geüpgrade was (sudo apt-get install dist-upgrade).
Op het moment dat het niet meer lukt om in te loggen in het systeem dan is het goed om te weten dat je met de toetsencombinatie āCTRL + ALT + F1ā of āCTRL + ALT + F2ā kunt schakelen naar de systeem terminal. Op dat moment verlaat je dus de grafische weergave en kom je in de terminal.
Vanuit hier kun je het systeem controleren en herstellen. In het geval van een login loop moeten de volgende zaken als eerste gecontroleerd worden.
De /tmp folder moet de volgende rechten hebben: ādrwxrwxrwtā en moet root als eigenaar hebben en root als beheersgroep. Dit doe je met het volgende commando:
ls āl / |
Vervolgens is het zaak om ervoor te zorgen dat je owner bent van het .Xauthority bestand. Het .Xauthority bestand kan worden gevonden in de home directory van gebruikers en wordt gebruikt om referenties op te slaan in in cookies welke weer gebruikt worden door āxauthā voor authenticatie van X-sessies. Zodra een X sessie wordt gestart, wordt het cookie gebruikt om connecties te verifiĆ«ren.
Je moet owner zijn van dit bestand omdat je anders geen informatie kunt opslaan en je dus niet kunt inloggen. Om owner te worden van dit bestand gebruik je het commando:
sudo chown username:username .Xauthority |
Als dat niet lukt kunnen we ook het bestand hernoemen. Dit doen we als volgt:
sudo mv ~/.Xauthority ~/.Xauthority.old |
Reboot nu (reboot) of ga terug naar de grafische weergave (toetsencombinatie āCTRL + ALT + F7ā) en reboot vanuit de grafische weergave.
Als dit alles geen effect had dan kan het probleem van een login loop ook te maken hebben met ālightdmā. ālightdmā is de display manager van Ubuntu welke de X servers en gebruikerssessies start.
We kunnen allereerst proberen om ālightdmā opnieuw te configureren. Dit doen we als volgt:
sudo dpkg-reconfigure lightdm |
Als dat ook niet werkt kunnen ālightdmā opnieuw installeren:
sudo apt-get purge lightdm && sudo apt-get install lightdm |
Als ook dat niet werkt dan kunnen we kiezen om een andere manager te gebruiken (b.v. āgdmā). Om āgdmā te verwijderen moeten we eerst ālightdmā verwijderen. Het hele commando ziet er als volgt uit:
sudo apt-get purge lightdm && sudo apt-get install gdm |
We kunnen dus via de systeem terminal het systeem repareren en modificeren, zelfs als we niet meer in kunnen loggen.
Linux Headers
Wat echter ook nogal eens voorkomt is dat we tijdens een handmatige installatie de opmerking krijgen dat de Linux Headers niet aanwezig zijn of dat deze incorrect zijn. Maar wat zijn nu eigenlijk de Linux Headers?
De Headers zijn sets bestaande uit een aantal bestanden. Deze bestanden definiĆ«ren de āApplication Programming Interfaceā (API) voor de programmaās. Dus als je b.v. tijdens het schrijven van een bepaalde C++ code de functie: getWidget (myContext); gebruikt dan moet ergens in uw ābuild padā (welke gebruikt wordt tijdens het compileren) een header moeten worden beschreven die aangeeft waar de getWidget (Context c) gedefinieerd is.
Header files eindigen meestal op .h of soms .h ++. Broncode bestanden meestal eindigen op .c, .cpp of .c ++. De broncode bestanden hebben vaak verwijzingen naar header bestanden.
Om een programma te compileren welke gebruik maakt van een āfunctie bibliotheekā (library), moet u de header-bestanden hebben voor deze bibliotheek, zodat de compiler de code kan controleren op āsyntax problemenā. Dit doet de compiler door de geschreven code te vergelijken met de definitie in de header(s). Je hoeft niet de volledige broncode van de library te hebben om de functies te gebruiken. Header files zijn stukken kleiner en maakt het proces dan ook sneller.
In het kort: Tijdens het compilen heeft de code slechts een klein beetje informatie nodig van de functie die gebruikt wordt. De header files voorzien in deze informatie. Als de compiler alle informatie nodig had zou deze de source code van de functie moeten inspecteren welke stukken groter is waardoor het proces dus langer duurt.
Tegenwoordig zijn header bestanden vrijwel nooit meer standaard opgenomen in Linux distributies. De reden hiervoor is omdat de meeste distributies de gebruiker binaire (pre-compiled) pakketten voor het systeem aanbied (APT ā RPM etc.). Omdat je in dat geval niet zelf hoeft te compileren, hoef je ook niet te zoeken naar functie definities in de headers.
1. Als u binaire pakketten te installeren, je hoeft niet header-bestanden nodig hebt (NVidia is een uitzondering die ik zal uitleggen)
2. Als u de bron pakketten te installeren, dan heb je de header-bestanden en / of de bron van de afhankelijkheden van dat pakket nodig
Als de kernel headers nodig zijn dan kunt u deze altijd installeren.
Kernel header pakketten variĆ«ren van naam en kunnen zowel ‘linux-headers’ als ‘kernel-headers’ heten of andere variaties welke eindigen op ‘-headers’. Header bestanden van andere softwarepakketten zijn meestal verkrijgbaar in de * -devel (op) of * -dev pakketten. Dus als je de headers van een specifiek product nodig hebt dan kun je deze zelf compileren middels deze development pakketten.
Om de Linux Headers van je ditributie te verkrijgen zou je het volgende commando kunnen gebruiken:
sudo apt-get install linux-headers-`uname -r` |
De `uname -r` toevoeging is een variabele (utsname) die de huidige versie en informatie ophaalt van de huidige kernel. Als de huidige kernel ā4.8.0-kali-amd64ā is dan voert het bovenstaande commando dus de volgende opdracht uit:
sudo apt-get install linux-headers-4.8.0-kali-amd64 |
Thatās itā¦. for today
Hartelijk dank voor het volgen van de Linux ā Shell Enzo posts. Na deze 5e post moet je al goed om kunnen gaan met Linux en de meeste basishandelingen zelfstandig uit kunnen worden. Je zult ondertussen ook al diverse problemen tegengekomen zijn die je zelf opgelost hebt. Knap!! Ga zo door. Wij gaan in ieder geval door met deeltje 6! In deel 6 gaan we kijken naar het mounten van apparaten, bekijken we disk commando’s en gaan we kijken naar networking commands. Tot dan.q





