Linux is een multi-user systeem.
Zeker wanneer men het besturings systeem als server wil gebruiken,
is het van groot belang dat de beveiliging van het systeem goed geregeld wordt.
De eerste stap in deze beveiliging is het beheren van de gebruikers van het systeem.
Om dit te bewerkstelligen
is het nodig om voor iedere gebruiker een eigen account aan te maken op het systeem,
en bovendien de gebruiker lid te laten worden van één of meerdere groepen.
In dit hoofdstuk leert men gebruikers en groepen te beheren.
Als laatste leren we hoe een gebruiker/groep verbonden wordt met een bestand,
en hoe zowel met de hand als automatisch deze relatie wordt ingesteld.
Wat leren we in dit hoofdstuk ?
Hoe worden gebruikers, groepen en hun eigenschappen opgeslagen
het aanmaken van gebruikers en groepen
het onderhouden van eigenschappen van gebruikers en groepen
Op elk linux systeem heeft men te maken met gebruikers.
Voor iedereen die met het systeem aan de slag wil moet er een gebruikers naam bekend zijn.
Vervolgens moet er voor iedere gebruiker een omgeving gemaakt worden waarbinnen de gebruiker zijn taken kan uitvoeren.
Deze omgeving bestaat uit:
home directory, de subdirectory waar deze gebruiker zijn bestanden opslaat
een aantal instelling bestanden, meestal opgeslagen in de home directory
de gebruiker gegevens, opgeslagen in diverse configuratie bestanden
De gebruiker,
en de verzameling van zijn gegevens zoals hierboven aangeduid wordt een account genoemd.
Als men een linux systeem als server wil gebruiken is het aanmaken van gebruiker accounts één
van de eerste taken die vervuld moeten worden.
We zullen primair aandacht besteden aan de wijze waarop de gebruikers op het systeem zijn opgeslagen.
Dit betekend dat we in eerste instantie zullen kijken naar de configuratie bestanden waarin gebruikers
en groepen aangemaakt worden.
Wanneer men inzicht heeft in de wijze waarop de gegevens zijn opgeslagen
zal men gemakkelijk kunnen begrijpen hoe de verschillende (GUI) tools werken,
deze worden dan ook later bekeken.
1.1 De bestanden /etc/passwd en /etc/shadow
De aloude wijze waarop in een UNIX systeem gebruikers worden aangemaakt is door het aanpassen van het bestand
/etc/passwd. Dit is een tekst bestand dat uit meerdere regels bestaat.
Op elk van deze regels is een gebruiker gedefiniëerd.
Deze definitie bestaat onder andere uit loginnaam, ge-encrypteerd wachtwoord, UID (user id), enzo...
De beveiliging was in de begin dagen van UNIX niet zo erg belangrijk.
Vandaar dat in de originele authenticatie procedure iedere gebruiker leesrechten kon uitoefenen
op het bestand /etc/passwd. Als een resultaat kan iedere gebruiker het ge-encrypteerde wachtwoord uitlezen.
Dit was nodig opdat de login procedure het ingegeven wachtwoord moet kunnen vergelijken met het ingestelde wachtwoord.
Het nadeel van dit systeem is dat dus ook willekeurige gebruikers (zeg maar hackers), ofwel logins die niet
in /etc/passwd gedefiniëerd zijn, het /etc/passwd bestand kunnen uitlezen en dus toegang hebben tot
het ge-encrypteerde wachtwoord. Het opslaan van de versleutelde wachtwoorden in het bestand /etc/passwd
bleek een ernstig veiligheids risico. Om deze reden wordt naast het bestand /etc/passwd gebruik gemaakt
van het bestand /etc/shadow om de versleutelde wachtwoorden van de gebruikers in op te slaan.
Het belangrijke verschil met /etc/passwd is dat /etc/shadow alleen door de root gebruiker kan gelezen worden.
Dit heeft tot gevolg dat gewone gebruikers niet langer het versleutelde wachtwoord kunnen uitlezen.
De bestanden /etc/passwd en /etc/shadow bevatten samen de volledige configuratie van de gebruiker.
Het is dus de taak van de beheerder om deze bestanden te kunnen editeren en begrijpen.
1.2 Gebruikers beheer in een netwerk omgeving
De methode waarbij de gebruikers gedefiniëerd worden in een bestand werkt goed wanneer men hooguit enkele
computers in een netwerk moet beheren. Wanneer echter het aantal computers stijgt wordt het bijhouden van
alle afzonderlijke tekst bestanden per computer een ondoenbare zaak. Daarom bestaan er verschillende
werkwijzen om het beheer van gebruikers in een netwerk van meerdere computers eenvoudig te houden.
1.2.1 NIS
Een van de eerste methodes is Netwerk Information Systems ofwel NIS.
In dit systeem wat reeds behoorlijk lang bestaat wordt op een
centrale server het bestand /etc/passwd bijgehouden.
Vanuit dit bestand worden vervolgens de zogenaamde NIS mappen gegenereerd.
Deze NIS mappen kunnen centraal op een server worden beheerd, de zogenaamde NIS master server.
De NIS mappen kunnen ook naar andere servers in het netwerk worden gerepliceerd,
de zogenaamde NIS slave servers.
Een linux computer in een dergelijk netwerk wordt geconfigureerd als een NIS client.
De gebruikers authenticatie wordt aldus ingesteld om gebruik te maken van een NIS server teneinde de
gebruiker credentials te kunnen controleren.
Het grote voordeel van dit systeem is dat voortaan de gebruikers centraal voor het gehele netwerk kunnen
worden onderhouden op één enkel systeem. Een groot nadeel van NIS is dat het moeilijk te
beveiligen is en dat er geen ondersteuning is voor het /etc/shadow bestand.
1.2.2 LDAP
Een moderne manier die vaak gebruik wordt om het beheer van gebruikers en andere netwerk resources te vereenvoudigen,
is het Lightweight Directory Access Protocol, LDAP. Op linux is vooral de implementatie OpenLDAP populair,
al zijn er ook commerciële directory servers zoals Novells eDirectory die als alternatief kunnen dienen.
Het voordeel van een directory service op basis van LDAP is dat hierin gebruik gemaakt kan worden van een
hiëarchische structuur: alle gebruikers staan niet langer in een platte database, maar kunnen
onderverdeeld worden in containers; men kan deze vergelijken met de mappen zoals die in een bestands systeem
worden gebruikt. Ook kan in een LDAP database veel meer informatie gebruikt worden dan de informatie
die nodig is om in te loggen op een computer. Om die reden wordt LDAP vaak gebruikt in processionele
server omgevingen. In deze module gaan we niet verder in op NIS en LDAP, dit is voor later in de
Linux Netwerk Servives module.
1.2.3 Active Directory
????
De sterke opkomst van de Active Directory service, een windows service, heeft vooral de laatste 2 jaar ervoor gezorgd dat er een aparte linux integratie methode is ontstaan.
????
1.3 System accounts versus normale gebruikers
In de gebruikers database komen twee soorten gebruikers voor.
Zo zijn er de gebruikers die men zelf heeft aangemaakt en die gebruikt worden door de medewerkers
van het bedrijf die toegang willen tot bepaalde systeem bronnen.
Daarnaast zijn er de zogenaamde service accounts. Dit zijn speciale gebruikers accounts die gebruikt worden
om toegangs rechten te verlenen aan toepassingen die op het systeem gebruikt moeten worden. Het voordeel is
dat men via een serviceaccount aan een bepaalde service op het netwerk precies die rechten kunt geven
die nodig zijn voor die service wat vanuit het oogpunt van beveiliging heel belangrijk is. Zo heeft
de Apache-web-server zijn eigen service account. Normaal gezien hoeft de beheerder deze service accounts
niet zelf aan te maken, ze worden door de installatie procedure van de services in questie aangemaakt.
Laat de instellingen zoals ze zijn, op die manier weet men zeker dat services zoals een netwerk printer
of een mailserver goed functioneren.
Men leert hier hoe men handmatig met een editor gebruikers kan definieren in /etc/passwd.
Dit is vooral voor het begrip van de werking van het mechanisme belangrijk. In de dagelijkse
praktijk van de beheerder zal men gebruikers aanmaken via één of andere tool.
Verderop in dit hoofdstuk maken we kennis met de verschillende tools.
1.4 Configuratie: /etc/passwd en /etc/shadow
In /etc/passwd komen regels voor en op iedere regel wordt een gebruiker gedefinieerd.
Zo'n regel bestaat uit een aantal onderdelen en ieder onderdeel is en specifieke eigenschap van de gebruiker.
Ieder onderdeel wordt van het volgende gescheiden door een dubbele punt.
De afzonderlijke onderdelen zijn:
login-naam
wachtwoord of verwijzing naar /etc/shadow
gebruikers-ID (UID)
groeps-ID (GID)
extra informatie
homedirectory
shell
In het bestand /etc/shadow worden zoals vermeld gebruikersnamen en de daarbij behorende versleutelde
wachtwoorden opgenomen. Daarnaast is het mogelijk om extra informatie met betrekking tot het wachtwoord
op te geven.
De afzonderlijke onderdelen zijn:
login-naam
versleuteld wachtwoord
dagen sinds 1 januari 1970 wachtwoord was laatst gewijzigd
dagen alvorens het wachtwoord gewijzigd kan worden
dagen waarna het wachtwoord moet gewijzigd worden
dagen waarna de gebruiker verwittigd wordt dat zijn wachtwoord moet wijzigen
dagen waarna de account onbruikbaar is
dagen sinds 1 januari 1970 dat de account onbruikbaar is
gereserveerd veld
1.4.1 Login naam
/etc/passwd : vdedauw:x:1000:1000:Valentijn De Dauw,,,:/home/vdedauw:/bin/bash
/etc/shadow : vdedauw:$1$dXV/1svW$uE7YG7nPMs8ITKbnlz/Pn.:13698:0:99999:7:::
De login naam is de naam waarmee een gebruiker zich aanmeldt bij het systeem.
Men moet ervoor zorgen dat de login-namen op een systeem uniek zijn. Het spreekt vanzelf dat
indien men NIS en/of LDAP gebruikt de naam uniek moet zijn voor het gehele netwerk.
Indien de naam niet uniek is, is het onmogelijk om onderscheid te maken tussen verschillende gebruikers.
Een goede conventie voor het aanmaken van gebruikers namen (vooral als men dit moet doen voor
honderden gebruikers) is het volgende:
de eerste letter van de voornaam is de eerste letter van de login naam
de naam wordt ontdaan van lees tekens, spaties
accent karakters worden vervangen door hun equivalent zonder accent. ë wordt e
hoofdletters worden omgezet naar kleine letters
Voorbeelden
Naam
Login
Valentijn De Dauw
vdedauw
Peter De Decker
pdedecker
Thierry Möulder
tmoulder
Aangezien deze cursus een voorbereiding is op 'netwerk beheer bij bedrijven' wordt deze conventie
door de student gebruikt, telkens hij een account moet aanmaken.
Bij het geven van examen punten wordt rekening gehouden met het toepassen van deze regel.
1.4.2 Wachtwoord
/etc/passwd : vdedauw:x:1000:1000:Valentijn De Dauw,,,:/home/vdedauw:/bin/bash
/etc/shadow : vdedauw:$1$dXV/1svW$uE7YG7nPMs8ITKbnlz/Pn.:13698:0:99999:7:::
Iedereen die op een systeem inlogt hoort een wachtwoord te hebben.
Dit wachtwoord beveiligd namelijk de toegang tot de gegevens van de gebruiker.
Alleen als het gaat over gebruiker accounts die juist voor algemene toegang zijn aangemaakt,
kan ermee volstaan worden een gebruiker geen wachtwoord te geven. Denk daarbij aan accounts
als 'anonymous' zoals op FTP servers gebruikelijk.
In het wachtwoord veld kunnen verschillende waarden voorkomen:
versleuteld
Een wachtwoord in versleutelde vorm ziet eruit zoals '$1$dXV/1svW$uE7YG7nPMs8ITKbnlz/Pn.'
Alle wachtwoorden worden in versleutelde vorm opgeslagen. Dit is om te voorkomen dat wanneer
iemand het bestand /etc/passwd of het bestand /etc/shadow kan uitlezen, deze persoon
meteen alle wachtwoorden kan uitlezen.
een asterisk (*)
Dit is het geval wanneer het een systeem account is waarmee niet kan ingelogd worden.
leeg
Wanneer het wachtwoord veld leeg is kan de gebruiker inloggen zonder wachtwoord
Het eerste teken is een uitroepteken
Dit betekend dat de account onbruikbaar is gemaakt, zie ook passwd -l
een x
Het echte versleutelde wachtwoord bevindt zich in /etc/shadow
1.4.3 Het user id - UID
/etc/passwd : vdedauw:x:1000:1000:Valentijn De Dauw,,,:/home/vdedauw:/bin/bash
/etc/shadow : vdedauw:$1$dXV/1svW$uE7YG7nPMs8ITKbnlz/Pn.:13698:0:99999:7:::
In het derde veld van het /etc/passwd bestand wordt een uniek getal ingesteld.
Het systeem gebruikt dit om een gebruiker te identificeren.
Het getal wordt UserID genoemd (UID). De UID is de waarde waarmee het systeem werkt.
Dit betekent dat het systeem niet kijkt naar de naam van een gebruiker maar naar de UID van een gebruiker.
In principe is de UID voor iedere gebruiker uniek.
De UID 0 heeft een speciale betekenis: de UID wordt gebruikt om een gebruiker aan te duiden die
overal alle rechten heeft, de zogeheten superuser. Het UID 0 kan dus gebruikt worden
om een gebruiker superuser rechten te geven, naast de reeds bestaande superuser genaamd root.
Het gevolg is dat het systeem geen onderscheid meer maakt tussen de gebruiker met UID 0 en de gebruiker root.
De bestanden die dan door de reserve-superuser zijn aangemaakt worden dan gemerkt als zijnde van de root user.
1.4.4 Het group id - GID
/etc/passwd : vdedauw:x:1000:1000:Valentijn De Dauw,,,:/home/vdedauw:/bin/bash
/etc/shadow : vdedauw:$1$dXV/1svW$uE7YG7nPMs8ITKbnlz/Pn.:13698:0:99999:7:::
Elke gebruiker is lid van minimaal één groep. Dit wordt de primaire groep van de gebruiker genoemd.
De groepen die op het systeem voorkomen worden gedefinieerd in het bestand /etc/group.
Net zoals een gebruiker heeft ook een groep een uniek identificatie nummer op het systeem, de group-ID (GID).
Doordat de GID van de primaire groep in /etc/passwd vermeld wordt achter de naam van de gebruiker,
kan het systeem achterhalen wat de GID van de primaire groep van de gebruiker is.
Naast het lidmaatschap van de primaire groep kan de gebruiker ook nog lid zijn van andere groepen.
Op basis van het lidmaatschap van deze groepen verkrijgt de gebruiker extra toegangs rechten in het
bestands systeem van linux.
1.4.5 Informatie
/etc/passwd : vdedauw:x:1000:1000:Valentijn De Dauw,,,:/home/vdedauw:/bin/bash
/etc/shadow : vdedauw:$1$dXV/1svW$uE7YG7nPMs8ITKbnlz/Pn.:13698:0:99999:7:::
Het informatie veld is bedoeld als een plaats om extra informatie over een gebruiker in op te slaan.
Meestal wordt dit veld het info-veld genoemd, soms wordt het ook het full-name-veld genoemd.
In dit veld kan de systeem beheerder iets meer informatie over een gebruiker opnemen dan alleen
diens naam. Hierdoor wordt de herkenbaarheid van een gebruiker vergroot.
In het info-veld kunnen diverse categorien van informatie worden opgegeven.
Elke informatie categorie wordt van de vorige gescheiden door een komma.
Een aantal van deze extra categorien staat min of meer vast.
volledige naam
kantoor
telefoon nummer kantoor
telefoon nummer prive
Deze informatie kan ingesteld worden met de opdracht
chfn.
De meeste grafische beheer programma's om gebruikers aan te maken bieden ook een voorziening om deze
extra informatie te bewerken. Als met de opdracht
finger
informatie over een gebruiker wordt gevraagd,
wordt de tekst die hier voorkomt getoond.
1.4.6 Home directory
/etc/passwd : vdedauw:x:1000:1000:Valentijn De Dauw,,,:/home/vdedauw:/bin/bash
/etc/shadow : vdedauw:$1$dXV/1svW$uE7YG7nPMs8ITKbnlz/Pn.:13698:0:99999:7:::
Na het info-veld staat de home directory. Het is gebruikelijk dat deze directory voorkomt onder de directory /home.
Men is echter volledig vrij om een andere plaats als home-directory van een gebruiker te kiezen.
Een gebruiker heeft normaal gesproken alle rechten in zijn eigen home-directory.
Deze directory wordt door de gebruiker gebruikt om zijn bestanden in op te slaan,
aan de andere kant wordt de directory gebruikt door het systeem om instellingen t.o.v. de gebruiker in op te slaan.
Als men handmatig het /etc/passwd bestand gaat bewerken dient men er rekening mee te houden dat bij het
toevoegen van een gebruiker, de home directory niet automatisch wordt aangemaakt.
Men zal zelf met behulp van de opdracht mkdir een home directory moeten aanmaken, en bovendien zal
er ook voor moeten zorgen dat de gebruiker eigenaar wordt van zijn eigen home directory.
Het aanmaken van een home-directory wordt meestal wel door de utility waarmee men een gebruiker toevoegt gedaan.
Skeleton directory
Nadat de home directory van de gebruiker is aangemaakt wordt de inhoud van de skeleton-directory naar de
home directory gekopieerd. In deze skeleton directory, meestal /etc/skel, staan een aantal configuratie
bestanden klaar voor de nieuwe gebruiker. Met behulp van deze configuratie bestanden wordt de nieuwe
gebruikers omgeving op de juiste wijze aangemaakt.
1.4.7 De shell
/etc/passwd : vdedauw:x:1000:1000:Valentijn De Dauw,,,:/home/vdedauw:/bin/bash
/etc/shadow : vdedauw:$1$dXV/1svW$uE7YG7nPMs8ITKbnlz/Pn.:13698:0:99999:7:::
In het laatste veld van het /etc/passwd bestand wordt aangegeven welke shell na inloggen gebruikt moet worden.
Op een LINUX systeem heeft men de keuze uit verschillende shells. (zie vroeger).
Hier geeft men aan van welke shell de gebruiker gebruik zal maken.
In de praktijk zal hier meestal de naam van de standaard shell (linux=/bin/bash) komen te staan.
Daarnaast wordt voor de verschillende systeem accounts aangeduid dat zij geen gebruik maken van een shell met de aanduiding /bin/false.
Hierdoor kunnen de systeem accounts ook niet inloggen hetgeen een belangrijke beveiliging is.
1.4.8 Extra informatie
/etc/passwd : vdedauw:x:1000:1000:Valentijn De Dauw,,,:/home/vdedauw:/bin/bash
/etc/shadow : vdedauw:$1$dXV/1svW$uE7YG7nPMs8ITKbnlz/Pn.:13698:0:99999:7:::
In het bestand /etc/shadow komen verder nog enkele velden voor waarmee men de status van het
wachtwoord kan opvolgen, en het gedrag van de account aanpassen naargelang de status ervan.
Het betreft de volgende waarden:
Waarde
Eigenschap
aantal dagen sinds 1 januari 1970
dat het wachtwoord is gewijzigd
aantal dagen
wachten alvorens het wachtwoord gewijzigd mag worden
aantal dagen
waarna het wachtwoord moet ingesteld worden
aantal dagen
waarna de gebruiker verwittigd wordt dat het wachtwoord moet ingesteld worden
aantal dagen
na verstrijken geldigheid wachtwoord dat account is uitgeschakeld
aantal dagen sinds 1 januari 1970
dat de account uitgeschakeld is
1.5 Verdere restricties van gebruikers instellen
Behalve de reeds genoemde gebruikers instellingen zijn er nog een aantal andere,
de meeste ervan zijn distributie afhankelijk of men kan ze optioneel instellen.
1.5.1 Gebruikers instellingen met PAM
Naast de mogelijkheden die vernoemd zijn,
zijn er meer mogelijkheden om de eigenschappen van gebruikers in te stellen.
Hoe dit precies gebeurt verschilt per distributie.
Het zogenaamde Pluggable Authentication Modules
mechanisme wordt gebruikt om extra (kernel) software modules te activeren waarmee men ten opzichte van
account instellingen allerlei dingen kan doen:
hardware matig, inloggen met bv. een vingerafdruk, smart-card, facial recognition, inplaats van met een wachtwoord
extra software, een gebruiker root rechten laten bekomen
tijds gebonden, een gebruiker account alleen toelaten tijdens de kantoor uren
security, is deze account wel geldig en in orde
Algemeen gesproken kan men niet altijd zeggen op welke wijze gebruikers instellingen verder bepaald worden.
Hiervoor is een analyse van de PAM-configuratie nodig.
In een volgende les (advanced) zien we in detail de werking van de PAM configuratie.
1.5.2 Het configuratie bestand /etc/login.defs
Een configuratie bestand dat in veel gevallen gebruikt wordt is /etc/login.defs.
Hierin kunnen algemene bepalingen worden opgenomen die van toepassing zijn bij het aanmaken van een gebruiker.
Het bestand /etc/login.defs wordt geïnstalleerd wanneer men gebruik maakt van shadow-wachtwoorden. Dit
ASCII bestand kan met een editor als 'vi' worden aangepast. Hieronder volgt een overzicht van een aantal
geselecteerde instellingen. Ook op dit vlak zijn er nogal wat verschillen per distributie.
Alleen de eerste 3 instellingen zijn verplicht de rest is optioneel.
MAIL_DIR
Geeft de directory waarin de mail-boxen van gebruikers voorkomen
ENV_SUPATH
Definieert het zoekpad voor de gebruiker root
ENV_PATH
Definieert het zoekpad voor gebruikers waarvan het UID niet 0 is
FAIL_DELAY 1
Aantal seconden na een mislukte poging tot inloggen voordat er weer
een login prompt verschijnt
FAILLOG_ENAB yes
Houdt in het bestand /var/log/faillog een overzicht van mislukte
login pogingen bij.
LASTLOG_ENAB yes
zorgt ervoor dat de laatste succesvolle login wordt genoteerd in /var/log/lastlog
LASTLOG_ENAB yes
zorgt ervoor dat de laatste succesvolle login wordt genoteerd in /var/log/lastlog
PASS_ALWAYS_WARN yes
Geeft een waarschuwing als een wachtwoord te eenvoudig is
Naast de vernoemde instellingen zijn er nog andere, zie man login.defs
2 Groepen
Het primaire nut van groepen is het toekennen van extra rechten aan gebruikers en systeem services.
Door een account lid te maken van een group erft deze account de groups-rechten in het systeem.
Aan elk bestand is naast een gebruiker ook een groep gekoppeld. Op elk systeem komen groepen voor,
die worden bijgehouden in het bestand /etc/group. Groepen zijn vooral handig wanneer men meerdere
gebruikers dezelfde machtigingen wil geven. Ook bij groepen kan een shadow-bestand voor wachtwoorden
gehanteerd worden. Als deze optie wordt ingezet, heeft het shadow bestand de naam /etc/gshadow.
Dit bestand is echter minder belangrijk dan het gebruikersbestand /etc/shadow omdat in veel gevallen
geen gebruik wordt gemaakt van de groeps wachtwoorden.
2.1 Standaard groepen
Op elk linux systeem bestaat een aantal standaard groepen.
Zo is er in veel gevallen een groep waar alle gebruikers lid van zijn,
bijvoorbeeld de groep users.
Er zijn ook standaard groepen waardoor bepaalde functionaliteit van het systeem mogelijk wordt gemaakt.
Een voorbeeld is de groep deamon, die door het systeem gebruikt wordt om processen op te starten.
Elke gebruiker is altijd lid van minimaal 1 groep.
In veel gevallen heet deze groep users, sommige distributies (fedora, redhat, debian)
kiezen er echter voor elke gebruiker lid te maken van een groep met dezelfde naam als de gebruikersnaam.
De systeem beheerder is vrij om hiervan af te wijken.
De eerste groep waar een gebruiker lid van is wordt aangeduid in het bestand /etc/passwd.
Dit wordt de primaire groep genoemd.
Een gebruiker kan ook lid zijn van andere groepen, de secundaire groepen.
Lidmaatschap hiervan wordt geregeld in /etc/group.
Zo kan er bijvoorbeeld voor elke afdeling binnen een bedrijf een groep worden aangemaakt.
De systeem beheerder kan er dan voor zorgen dat alleen de mensen die tot de afdelings groep behoren rechten hebben
in de document directory van die afdeling.
Gebruikers die geen lid zijn van de afdelings groep kunnen niet bij deze bestanden komen.
2.2 Opbouw van /etc/group
In het bestand /etc/group komen vier velden voor
naam
De groeps naam, uniek over het algemeen 8 of minder tekens
wachtwoord
Hier kan een wachtwoord worden ingesteld. Dit wachtwoord moet door alle
gebruikers worden ingegeven voordat ze door middel van de opdracht 'newgrp'
deze groep willen gaan gebruiken
group identification (GID)
Het unieke getal dat door het besturings systeem wordt gebruikt
om met de groep te werken
Gebruikers
Alle gebruikers die lid zijn van de groep. Een zogenaamde komma separated lijst.
Een voorbeeld van een /etc/group lijn : floppy:x:25:haldaemon,vdedauw,an,testtest1,testtest2
2.3 Opbouw van /etc/gshadow
Het bestand /etc/gshadow bevat de schaduw informatie voor groep accounts.
Het bevat lijnen waarin de informatie gescheiden is door een dubbele punt.
Velden in /etc/gshadow
group naam
de naam van de groep
versleuteld wachtwoord
moet ingevuld zijn, ! betekent niet actief
lijst van groep administrators
gescheiden door een komma
lijst van groep leden
gescheiden door een komma
2.4 Actieve group
Gebruikers kunnen dus lid zijn van meerdere groepen.
Het systeem kan echter maar 1 groep als de actieve groep van een gebruiker herkennen.
De primaire group is normaal gezien de actieve group.
Dit betekend dat wanneer men een bestand aanmaakt de actieve groep als de groep van dat bestand wordt ingesteld.
Met de opdracht
newgrp
wordt een nieuwe actieve groep voor de huidige gebruiker ingesteld.
Om met 'newgrp' een nieuwe actieve groep te kunnen instellen moet eerst worden gecontroleerd of men
wel voldoende rechten heeft om dit te doen.
Hiervoor bestaan 2 mogelijkheden :
de naam van de betreffende gebruiker is ingesteld als groepslid in /etc/group
De groep heeft een wachtwoord, elke gebruiker die het wachtwoord kent,
heeft het recht om deze groep als primaire groep in te stellen met behulp
van de opdracht 'newgrp'. Om dit groepswachtwoord in te stellen, maakt men
gebruik van de opdracht passwd -g groepsnaam.
Men kan achterhalen wat op dit moment de actieve groep is met de opdracht
groups.
Deze opdracht toont de lijst van groepen waarvan de gebruiker lid is, de eerst getoonde groep
is de actieve groep. De actieve groep wordt gebruikt als de eigenaar van nieuwe bestanden.
3 Beheer van gebruikers en groepen
Uit het bovenstaande is gebleken dat het heel goed mogelijk is om gebruikers en/of groepen aan te maken
door met een editor het bestand /etc/passwd, /etc/shadow, /etc/group, of /etc/gshadow te bewerken.
Deze werkwijze heeft heel wat nadelen.
Het eerste nadeel is dat bijkomende instellingen, zoals bv. het aanmaken van een home directory,
eveneens met de hand moeten gebeuren.
Nog een nadeel is dat men het risico loopt het gehele systeem onbruikbaar te maken door per ongeluk het formaat van een van de bestanden te wijzigen.
Verder is het lastiger om de meer geavanceerde instellingen te gebruiken.
Om al deze nadelen te vermijden zal men gebruikers en groepen gaan beheren met een aantal opdrachten
en utilities. In de volgende paragrafen worden er een aantal in meer detail bekeken.
3.1 Aanmaken van een gebruikers account met een editor
Als men weet hoe de bestanden /etc/passwd en /etc/shadow opgebouwd zijn kan men met behulp van een ASCII editor
een gebruiker aanmaken, simpelweg door deze gebruiker toe te voegen in de betreffende bestanden.
Wanneer men dit gaat doen zijn er een 3-tal zaken die extra aandacht behoeven.
de home-directory moet met de hand aangemaakt worden met bv. het volgende scenario
In het wachtwoord veld in /etc/passwd komt een 'x' te staan
Het wachtwoord veld in /etc/shadow blijft leeg, de systeem beheerder
kan het wachtwoord instellen met de
passwd
opdracht.
Alle velden in /etc/passwd of /etc/shadow waarvan geen gebruik wordt gemaakt
blijven leeg.
Het is van groot belang wanneer men passwd en shadow met de hand bewerkt dat beide bestanden aan alle
vereisten voldoen. Als dit namelijk niet het geval is, kan dit ertoe leiden dat niemand nog kan inloggen
op het systeem. Om deze reden bestaan er voor het nakijken van de passwd en shadow bestanden een controle programma.
Namelijk: pwck
3.2 Aanmaken van groepen met een editor
Als men weet hoe de bestanden /etc/group en /etc/gshadow opgebouwd zijn kan men met behulp van een editor een groep aanmaken, simpelweg door deze groep toe te voegen in de betreffende bestanden.
Het wachtwoord van een groep kan men achteraf instellen met de opdracht
passwd -g groepsnaam.
Wanneer men met de hand de bestanden /etc/group en /etc/gshadow gaat bewerken is het uitermate belangrijk
om het formaat van het bestand te respecteren. Indien het formaat van één van deze bestanden niet
het verwachte formaat is, dan loopt men het risico dat er niet meer kan ingelogd worden op het systeem.
Om deze reden bestaan er zowel voor het nakijken van het group bestand als het gshadow bestand een check programma.
Namelijk: grpck
3.3 Algemene opdrachten
Voor het beheren van gebruikers en groepen bestaan er op alle distributies,
en ook op de Unix systemen (Sun Solaris, Apple), een aantal command line utilities.
Alhoewel ze per distributie kunnen verschillen.
De meest bekende zijn ongetwijfeld 'useradd' en 'groupadd'.
3.3.1 useradd
Een vrij universele manier om een gebruiker toe te voegen is de opdracht
useradd
die in de meeste linux distributies voorkomt.
Men geeft door middel van een aantal argumenten de nodige informatie op.
Daarnaast is het mogelijk om voor 'useradd' een aantal standaard waarden in te stellen.
Deze waarden hoeven dan niet voor elke gebruiker opnieuw te worden opgegeven,
dit is handig wanneer grote aantallen gebruikers na elkaar moeten worden gedefinieerd.
Als men bijvoorbeeld een standaard groep definieert, is het niet langer noodzakelijk dat men bij het aanmaken
van elke individuele gebruiker ook nog een groep definieert.
Men gebruikt hiervoor useradd met de optie -D gevolgd door parameters waarmee het standaard gedrag verder wordt aangegeven.
Als men de opdracht useradd -D gebruikt zonder opties, worden de opties die nu staan ingesteld afgebeeld.
Deze standaard waarden worden opgeslagen in het bestand /etc/default/useradd.
3.3.2 groupadd
Om groepen aan te maken kan gebruik worden gemaakt van de opdracht
groupadd.
Gebruik van deze opdracht is niet moeilijk, er zijn namelijk maar weinig opties.
De meest gebruikte opties zijn -g GID, waarmee het groeps ID wordt aangegeven,
en -o waarmee geforceerd kan worden dat een groep een GID krijgt die reeds door een andere groep in gebruik is.
Bovendien moet ook de naam van de groep als argument gegeven worden.
Als men de groep boekhouders wil maken met GID 123, gebruikt men daarvoor de opdracht groupadd -g 123 boekhouders.
3.3.3 Andere opdrachten
Naast de boven genoemde opdrachten zijn er nog enkele waarmee gebruikers, groepen, en wachtwoord bestanden onderhouden kunnen worden.
command line utilities voor gebruikers en groep beheer
Wanneer de grafische omgeving GNOME geinstalleerd is dan is de ulitity 'Users and Groups' eveneens beschikbaar.
Het programma kan gevonden worden via de menu in de submenu Systeem. Of het kan gestart worden
vanaf een command line met de opdracht users-admin.
Wanneer gestart vanaf het menu zal de grafische omgeving ervoor zorgen dat er een wachtwoord moet ingegeven worden
om het programma te starten als root gebruiker. Wanneer gestart vanaf de command line kan alleen de root gebruiker
dit doen.
Het is geschikt zowel voor gebruikers als voor groepen.
Hieronder volgen een paar screen-shots.
Het programma behandeld hier de zogenaamde gebruikers profielen,
rechten worden aan gebruikers gegeven via benoemde profielen,
Desktop (desktop gebruiker), Administrator (gebruiker met administrator privileges).
Bovendien is er nog een scherm waarmee men de gebruiker bepaalde privileges kan geven.
Het programma werkt in 2 stappen. Dat wil zeggen zolang men bezig is met het toevoegen of editeren van gebruikers
wijzigt er in werkelijkheid niets. De wijzigingen worden opgeslagen in een buffer geheugen en daadwerkelijk
uitgevoerd bij het afsluiten van het programma.
3.5 KDE kuser
Wanneer de grafische omgeving KDE geïnstalleerd is dan is de ulitity (kuser) 'User Manager' eveneens beschikbaar.
Het programma kan gevonden worden via de menu in de submenu Systeem. Of het kan gestart worden
vanaf een command line met de opdracht kuser.
Wanneer gestart vanaf het menu zal de grafische omgeving ervoor zorgen dat er een wachtwoord moet ingegeven worden
om het programma te starten als root gebruiker. Wanneer gestart vanaf de command line kan alleen de root gebruiker
dit doen.
Het is geschikt zowel voor gebruikers als voor groepen.
Het programma kuser beschikt wel over de mogelijkheid om de wachtwoord tijdstippen in te stellen.
Hieronder volgen een paar screen-shots.
Het programma werkt in 2 stappen.
Dat wil zeggen zolang men bezig is met het toevoegen of editeren van gebruikers wijzigt er in werkelijkheid niets.
De wijzigingen worden opgeslagen in een buffer geheugen en daadwerkelijk
uitgevoerd bij het afsluiten van het programma.
In het hoofd scherm vindt men wel een button om de wijzigingen weg te schrijven, en dus door te voeren zonder het programma te sluiten.
3.6 YaST wachtwoord instellingen
YaST de SuSe centrale configureerder kent ook een grafisch gebruikers beheer.
4 Het begrip 'Ownership'
Op een linux systeem hebben de bestaande bestanden en directories een eigenaar en een groep.
Met de opdracht ls -l ziet men de de directory listing de eigenaar en de groep van het bestand afgebeeld staan.
Zowel de naam van de eigenaar als de naam van de groep worden door ls afgeleid uit de bestanden /etc/passwd en /etc/group.
De inode entry waar bestands-eigenschappen worden bijgehouden onthoud niet de naam van gebruiker,
respectievelijk de groep, maar hun nummer.
Wanneer de groep en/of de gebruiker van een bestand niet bestaan dan wordt dit nummer afgebeeld inplaats van de naam.
In de afbeelding van hiernaast zijn de kolommen 3 en 4 respectievelijk de eigenaar en de groep van het bestand.
De directory 'testtest2' is aangemaakt door de gebruiker 'testtest2' waarna deze verwijderd is. Dus
als ls de naam van de eigenaar en de groep niet kan vinden worden respectievelijk de SUID en SGID gebruikt.
4.1 Gebruiker is eigenaar
Als een gebruiker een bestand aanmaakt wordt hij automatisch de eigenaar van dat bestand.
Men kan dit controleren met de opdracht ls -l; de naam van de eigenaar staat in de derde kolom.
Als eigenaar van een bestand heeft men altijd het recht om de toegangs-rechten van het bestand te wijzigen.
De enige andere gebruiker die dit ook kan is de root gebruiker.
De opdracht om de eigenaar van het bestand in te stellen is
chown.
Bijvoorbeeld om de eigenaar van het bestand /home/vdedauw/test.txt te wijzigen van test in vdedauw
geeft men de opdracht: chown vdedauw /home/vdedauw/test.txt
Dit kan alleen lukken als de huidige gebruiker 'root' is of de gebruiker 'test'.
4.2 Groep is eigenaar
Op dezelfde wijze als bij de eigenaar van het bestand wordt de groep van een bestand op
de actieve groep van de gebruiker gezet op het moment dat het bestand wordt aangemaakt.
In principe is de actieve groep van de gebruiker gelijk aan de primaire groep, tenzij
deze actieve groep is ingesteld geworden met de opdracht newgrp.
In de ls -l lijst is de groep van een bestand de 4'de kolom.
Met behulp van de opdracht
chgrp
wordt de groep van een bestand gewijzigd.
Bijvoorbeeld om de groep van het bestand /home/vdedauw/test.txt te wijzigen naar de groep vdedauw geeft
men de opdracht : chgrp vdedauw /home/vdedauw/text.txt
Ook met de opdracht chown kan men de groep instellen met behulp van de volgende syntax : chown vdedauw.vdedauw /home/vdedauw/test.txt
of als men niet tegelijk de eigenaar en de groep wil instellen chown .vdedauw /home/vdedauw/test.txt
Met behulp van de opdracht 'chown' kan men zowel de eigenaar als de groep van een bestand wijzigen.
vb.: chown vdedauw.vdedauw test.txt wijzigt de eigenaar en de groep van het bestand test.txt in één stap.
5 Wachtwoord reset procedure
Het kan weleens gebeuren dat om een of andere reden de wachtwoorden van de administratieve gebruiker of van de root
vergeten zijn. Om deze reden bestaat er een emergency procedure waarmee men ondanks dat men het root wachtwoord niet
kent, toch kan binnen komen in een bestaand systeem. Voorwaarde is natuurlijke de fysieke toegang tot het systeem.
De eerste voorwaarde om een systeem te beveiligen is ervoor zorgen dat niemand het systeem kan benaderen.
Deze procedure toont aan dat eens men fysieke toegang tot het systeem heeft men ermee kan doen wat men wil.
Globaal genomen is de procedure als volgt:
Men start een linux distributie (onverschillig dewelke),
in moderne tijden met een cdrom of usb stick
Log in als root, of zorg ervoor dat je root wordt (sudo su)
Definieer een mount point (of gebruik /mnt indien aanwezig)
Mount de partititie van de hd waar de directory /etc op staat
Pas het passwd bestand aan, zorg ervoor dat root geen wachtwoord heeft
herstart het systeem, log in als root
pas de nodige wachtwoorden aan, ook dat van root
Op een Ubuntu (Debian) systeem kan men niet inloggen als root (in principe is het root wachtwoord onbekend).
De procedure wordt dan:
Start Ubuntu vanaf cd
in een terminal , maak jezelf root (sudo su)
maak een mount point
mount de partitie van de hd waar de /etc directory op staat
chroot de gemounte partitie
men kan nu Users and Groups (users-admin) gebruiken om de nodige wachtwoorden aan te passen
De cdrom distributie waarvan gestart en de geïnstalleerde distributie dienen identiek te zijn.
Het onderverdelen van gebruikers in groepen gebeurd om verschillende redenen:
hierarchisch:
sommige gebruikers hebben meer rechten op het systeem omwille van hun positie binnen het bedrijf.
Dikwijls zijn de groeps definities een afspiegeling van de bedrijfs structuur.
administratief (taak gericht):
Sommige gebruikers zullen administratieve taken moeten uitvoeren, en hebben dus bijkomende systeem rechten nodig om deze taken te kunnen doen. Bv .: de backup operator, de print operator enzo..
Een linux systeem is, min of meer op voorhand al,
georganiseerd volgens de administratieve behoeften van het systeem en het bedrijf of organisatie.
6.1 Oefening 1
Bekijk de groepen structuur van een standaard Ubuntu systeem (debian) en zoek uit wat je hieruit kunt afleiden.
6.2 Oefening 2
bepaal een bedrijfs structuur
definieer een aantal groepen, een afspiegeling van de bedrijfs structuur
bepaal voor iedere groep een aantal gebruikers
Samenvatting
In dit hoofdstuk hebben we gezien waar gebruikers en groeps informatie wordt opgeslagen.
Daarnaast hebben we gezien hoe we deze informatie kunnen beheren, zowel met
eerder eenvoudige command line utilities als met meer geavanceerde grafische programmas.
Tot slot hebben we gezien wat eigenaarschap betekend en wat dit voor gevolg heeft
voor de bestanden. In combinatie met het volgende hoofdstuk, toegangs rechten, zullen we
zien dat linux een waterdichte veiligheid kan implementeren op niveau van de bestanden.