Huiswerk Linux: Apache groepsrechten Opdracht: configureer Apache zodanig, dat je Cygwin niet meer Als administrator hoeft te starten om Apache te configureren. Om dit te bereiken maken we in Windows een nieuwe groep, genaamd apache aan. Daarna moeten we de Apache-bestanden aan de nieuwe groep toewijzen en de gebruikersrechten instellen op group writable. Over Linux gebruikers en groepen Het Linux gebruikersmodel kent drie soorten eigenaren: de gebruiker (user), de groep (group) en iedereen (other). Een gebruiker kan in meerdere groepen zitten. Voor de naamgeving van groepen heeft het Linux gebruikersmodel twee regels: 1. Een programma is ook een gebruiker 2. Een gebruiker is ook een groep Regel 2 kan alsvolgt worden gedemonstreerd. Maak een nieuw (leeg) bestand aan met het commando touch (raak aan): touch test.txt Controleer wat je gedaan hebt met het commando ls: ls -l test.txt Het resultaat ziet er alsvolgt uit: EIGENAREN Gebruiker Groep -rw-r--r-- 1 Daniel Daniel 0 13 okt 18:36 test.txt De eigenaren van een nieuw bestand zijn de gebruiker welke het bestand heeft aangemaakt en een groep met dezelfde naam Hier is regel 2 toegepast: gebruiker Daniel zit standaard in een groep, genaamd Daniel. Hierdoor kun je rechten uitdelen aan andere gebruikers die lid worden van jouw groep. Het sudo mechanisme Het aanmaken van een nieuwe groep en het instellen van toegangsrechten doen we namens de root gebruiker. We moeten daarom tijdelijk inloggen als Administrator (root). Cygwin gebruikers Sudo voor Cygwin gebruikers: rechts-klik op het icoon van de Cygwin terminal, en kies voor Als administrator uitvoeren. Overige Linux gebruikers Sudo voor de overige Linux-smaken: start een terminal met de toetsencombinatie <Ctrl><Alt>-T. We gebruiken het commando sudo om in te loggen met het su (become Super User) commando. Daardoor blijven we ingelogd: sudo su Apache groep aanmaken Als programma s ook gezien worden als gebruiker, dan heeft Apache de gebruikersnaam apache (regel 1). Om toegangsrechten aan andere gebruikers uit te delen, heeft de apache gebruiker ook een groep, genaamd apache (regel 2). Om straks groepsrechten op de Apache bestanden uit te kunnen delen gaan we de groep voor Apache aanmaken. Dit doen we met het groupadd commando: groupadd apache Nu maken we ons zelf lid van de nieuwe groep: usermod -G apache -a daniel Let op: Vervang daniel door jouw eigen gebruikersnaam. Als je die niet weet, zoek hem op met het commando whoami. Via optie G (groups) geven we de lijst van aanvullende groepen aan. Met optie a (append) geven we aan dat de gebruiker moet worden toegevoegd aan de reeds toegewezen groepen.
Controleer of het gelukt is. Dit doen we met het commando groups: groups daniel Let op: geef in plaats van daniel je eigen gebruikersnaam. Je zou ongeveer het volgende moeten kunnen zien: Daniel : Daniel apache Administrators Linux toegangsrechten Linux deelt bestandsrechten uit aan elk van de drie soorten eigenaren: gebruiker, groep en iedereen. Dit kunnen we alsvolgt zichtbaar maken. Vraag de inhoud van je home directory op met het ls commando: ls -l ~ Met de optie l (list) geven we aan dat we een lijst met toegangsrechten willen zien. De tilde ( ~ ) is het symbool voor je home directory. Het resultaat ziet er ongeveer alsvolgt uit: RECHTEN EIGENAREN AB C D E User Group lrwxrwxrwx 1 Daniel Daniel 35 3 okt 07:21 Downloads -> /cygdrive/c/users/daniel/downloads/ lrwxrwxrwx 1 Daniel Daniel 23 25 sep 12:18 ROC-Leiden -> /cygdrive/d/roc-leiden/ drw-r--r-- 1 Daniel Daniel 64 13 okt 18:36 netstat -rw-r--r--+ 1 Daniel Daniel 0 13 okt 18:36 test.txt -rw-rw-r-- 1 Daniel Daniel 0 8 okt 00:07 thang.txt In de eerste kolom zie je een rijtje met codes. Hier staan ook de toegangsrechten voor elk van de drie eigenaren vermeld: Onder A kun je het type bestand zien. Daarbij geldt: - gewoon bestand l symbolic link (snelkoppeling) d directory (map) s socket (voor communicatie met daemons) Onder B staan de toegangsrechten van de eigenaar van het bestand. Daarbij geldt: r read-only (alleen schrijven) w write (schrijven) x execute (uitvoeren) t sticky bit (alleen gebruiker mag bestanden verwijderen) s setuid bit (uitvoeren namens de eigenaar van het bestand) Onder C staan de toegangsrechten van de groep. Onder D staan de toegangsrechten van alle anderen. Onder E staat speciale informatie welke voor Cygwin belangrijk is. Over het bestand thang.txt kunnen we nu zeggen: Daniel is eigenaar van het bestand, en mag het lezen en schrijven (B). Gebruikers die lid zijn van Daniel s groep mogen ook lezen en schrijven (C). Alle anderen mogen het bestand alleen lezen (D). Apache-bestanden bekijken Zoals in de les behandeld, is Apache een daemon en alle daemons worden in Linux gestart door de root gebruiker. Apache logt vervolgens in als een gewone gebruiker. Standaard is dit apache, maar kan worden gewijzigd in het Apacheconfiguratiebestand (/usr/local/apache/conf/httpd.conf). In Windows heten daemons services en worden ze gestart door de SYSTEM gebruiker. Windows Service SYSTEM Linux Daemon root Bekijk de inhoud van de Apache map met het ls commando: ls -l /usr/local/apache/ Het resultaat zou er ongeveer alsvolgt uit moeten zien. Onderstaand de output van een Cygwin systeem: drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 bin drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 cgi-bin drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 conf
drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 htdocs drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 icons drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 include drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 libexec drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 logs drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 man drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 proxy We zien nu dat gebruiker daniel (root in andere Linux distributies) de eigenaar van de bestanden is en rwx (read, write en execute) rechten op de bestanden heeft. Verder mag de groep (daniel) alleen lezen en uitvoeren. Op dit moment kan dus alleen de daniel gebruiker wijzigingen aanbrengen. Apache groepsrechten instellen Om de Apache configuratie-bestanden te kunnen wijzigen als gewone gebruiker gaan we de bestanden in de apache groep zetten. Daarvoor gebruiken we het commando chgrp (CHange GRouP): chgrp -R apache /usr/local/apache/conf We gebruiken de optie R (Recursive) om ook alle mappen en bestanden eronder te wijzigen. Ten slotte moeten we ervoor zorgen dat de apache groep schrijf- en uitvoerrechten op de configuratie-bestanden krijgt. Dit doen we met het chmod (CHange MODe) commando: chmod -R 0775 /usr/local/apache/conf De code 0770 is uit octale nummers samengesteld, waarbij geldt: octaal betekenis 1 x 2 w 4 r Octaal nummer 7 is samengesteld uit 1 + 2 + 4, en geeft een gebruiker x (execute), w (write) en r (read) rechten. In dit geval hebben we de combinatie 0775 gebruikt (de voorlopende 0 is voor speciale toegangsrechten; hier komen we later op terug). De combinatie 775 betekent: rwx voor de gebruiker, rwx voor de groep en r-x (alleen lees- en toegangsrechten) voor iedereen. Controleer wat je gedaan hebt met het ls commando: ls -l /usr/local/apache/ Het resultaat zou er ongeveer alsvolgt uit moeten zien. Onderstaand de output in een Cygwin systeem: drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 bin drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 cgi-bin drwxrwxr-x+ 1 daniel apache 0 4 apr 12:10 conf drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 htdocs drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 icons drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 include drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 libexec drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 logs drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 man drwxr-xr-x+ 1 daniel daniel 0 4 apr 12:10 proxy Huiswerk opsturen Stuur mij een e-mail met daarin de output van het history commando. Dit doen we met een pijpleiding tussen de commando s history en email. Zorg dat het onderwerp van de e-mail tussen aanhalingstekens staat: history email -s "Apache groepsrechten" daniel@smtp.boland.nl Als er geen foutmelding verschijnt, is de e-mail correct verstuurd. Administrator uitloggen We hebben de Apache-bestanden toegankelijk voor de groep apache gemaakt, maar we zijn nog steeds ingelogd als Administrator (root).
Geef tot slot <Ctrl>-D om de Administrator uit te loggen. Het hoera moment Open nu opnieuw een terminal als gewone gebruiker. Kijk of je het Apache configuratie bestand mag wijzigen: vi /usr/local/apache/conf/httpd.conf De inhoud van het Apache configuratie-bestand wordt getoond en onderin het scherm zou je het volgende moeten kunnen zien: "/usr/local/apache/conf/httpd.conf" 975L, 33677C