# Coppermine Photo Gallery v1.5.x: Dokumentation och Manual

# Sätta behörigheter

Alla PHP script som är tänkta att köras på en webbserver behöver läs och exekvera rättigheter på servern. Följaktligen behöver alla Coppermine-filer dessa behörigheter.
Dessutom behöver Coppermine skriv åtkomst till ett antal filer och mappar på webbservern för att åstadkomma följande:

- under installationer behöver Coppermine skapa och skriva till filen "config.inc.php" i "include" mappen för att kunna lagra nödvändiga mySQL access data för att kunna köra Coppermine och förhindra att installationsprogrammet körs en andra gång efter en lyckad installation.
- när http uppladdningar används, behöver Coppermine skriva de filer som ska laddas upp till en undermapp som du och dina användare skapar i Coppermines mapp albums
- oavsett uppladdningsmetod, kommer Coppermine att skapa miniatyrbilder och medelstora bilder (om du har konfigurerat Coppermine för det) och lagra dem också i en undermapp till mappen "albums"
- Om du tänkt aktivera loggning i något skede, behöver scriptet skrivbehörighet till mappen "logs"
- Mappen "plugin" behöver få skrivrättigheter också om du vill använda möjligheten till komprimerade uppladdningar i Hantera insticksmoduler

Som standar är filer och mappar på en webbserver inte skrivbara, så du behöver troligtvis ändra behörigheterna före installationen, av ovan nämnda skäl. Det är verkligen obligatoriskt att du sätter/ändrar (CHMOD) behörigheter - annars får du problem förr eller senare.

För att kunna sätta behörigheterna rätt behöver du förstå hur de fungerar: det finns read (läs), write (skriv) och execute (exekvera) behörigheter (förkortat med rwx) för varje mapp och fil. Behörigheterna till en huvudmapp kan ärvas till mapparna och filerna i den men det är möjligt att göra inställningar så att behörigheterna inte ärvs till underliggande mappar och där i liggande filer.

Om du inte kan gissa hur du sätter behörigheterna korrekt, fråga supporten på ditt webbhotell. Det är ingen mening med att be om hjälp angående detta på Coppermines supportforum - vi kan inte berätta för dig vilken nivå av behörigheter man behöver sätta på just din webbserver. Bara ditt webbhotell kan svara på den frågan.

## Behörigheter på olika typer av webbservrar

Det finns skillnader mellan olika operativsystem som används på webbservrar. Därför finns det flera olika tillvägagångssätt. Eftersom Coppermine har gjorts för att köras på många olika webbserveruppsättningar, har vi lagt till lite generella instruktioner. Det som har lite mer kännedom tycker kanske att dessa instruktioner är lite väl generaliserade och saknar en del detaljer.

Notera: det är inte din lokala dator som har betydelse behörighetsmässigt utan snarare det operativsystem som används på din webbserver. Om du inte är säker på vilket operativsystem som körs på din webbserver, försök med CHMOD instruktionerna först - de flesta webbservrar kör en version av Unix/Linux.

Här en sammanfattning på hur behörigheter fungerar på en del webbservrar:

### Apache på Unix/Linux (CHMOD)

- #### Basics

  De finns olika inriktningar av Unix/Linux - men alla fungerar på ett liknande sätt. Vad gäller uppbyggnaden, används ordet "Lunix" för både Unix och Linux derivater. "Read" behörigheter sätts på filer som inte aktivt körs, utan bara används, t.ex. text- eller raka html filer. "Write" behörigheter behövs för att kunna dynamiskt skapa filer, ändra eller radera dem. "Execute" behörigheter behövs för att kunna köra körbara filer, t.ex. scriptfiler som PHP. För att rätt kunna tjäna webbsidor som är php-drivna, är de grundläggande behörigheter som krävs därför "read" och "execute" (förkortat som r-x).
  Möjliga behörighetsinställningar är:
  - `r--` ... läs endast
  - `r-x` ... läs och exekvera
  - `rwx` ... läs, skriv och exekvera
  Fler kombinationer är tekniskt möjliga (som -wx, --x ellerr -w-), men de är ganska meningslösa som en webbserverinställning och vi förbiser dem i detta dokument.

- #### Grupper i Lunix

  Lunix använder ett set av tre-gruppsbehörigheter, var och en kan beviljad oberoende av de andra. Dessa är: owner (ägare), group (grupp) och world (värld). Med hjälp av detta set, kan du diktera om en användare som äger en fil har behörighet att ändra eller radera den (skrivbehörigheter) medan andra användare bara kan läsa/se och möjligen exekvera filen. På din server är behörighetsinställningarna för dessa tre möjliga grupper skrivna i en enda rad (i ordningen "owner", "group", "world").
  - `rwxrwxrwx` ... läs, skriv och exekverings (rwx) rättigheter för alla tre grupper
  - `rwxr-xr-x` ... rwx rättigheter för ägaren, r-x rättigheter för alla andra
  - `r-xr-xr-x` ... läs och exekveringsrättigheter för alla grupper, endast

- #### Webserver daemon

  Även om du (som ägare till filerna på din server och den som har kontroll över rättigheterna) kan komma åt en fil (t.ex. med hjälp av din FTP app), kanske Coppermine scriptet inte kan göra det. Detta orsakas ofta av ett visst inställningsalternativ för servrar: services (i Lunix som ofta kallas för "daemons") kan köras under en viss användare som är skilt från den användare som har åtkomst till filerna. På många sådana servrar, körs webbserverns (apache) service under användaren "nobody". PÅ så sätt kan servern skydda sig mot hacker-attacker. Därför fungerar det inte att sätta behörigheterna på servern till "owner" bara, du måste sätta behörigheter för både "group" och "world" (åtminstone för den grupp som webserver daemon är i).

- #### Binär aritmetik

  Som du ser kan behörigheter vara antingen "på" eller "av", "on" eller "off" - det motsvarar de två olika status en databit kan ha i binär aritmetik (och därför i hela datavärlden). Som vi har tre typer av behörigheter (read, write, execute), behöver vi tre bits för att kunna sätta behörigheter. Den högsta biten är "read" bit - decimal "4" används för att representera det. Den mittersta biten "write" har tilldelats en decimal "2", och den lägsta biten "execute" representeras av decimal "1". Det kan först vara lite svårt att förstå, speciellt om du inte haft att göra med binär aritmetik förut. Om du vill lära dig mer, googla på det. Det är lättare att förstå om du ser på några exempel:

  behörighet | bit värde | set? | värde
  --- | --- | --- | ---
  read | 4 |  | 4
  write | 2 |  | 2
  execute | 1 |  | 1
  total (resulterar i byte värde) | 7

  behörighet | bit värde | set? | värde
  --- | --- | --- | ---
  read | 4 |  | 4
  write | 2 |  | -
  execute | 1 |  | 1
  total (resulterar i byte värde) | 5

  behörighet | bit värde | set? | värde
  --- | --- | --- | ---
  read | 4 |  | 4
  write | 2 |  | 2
  execute | 1 |  | -
  total (resulterar i byte värde) | 6

- #### Vad är det för bra med allt det här?

  Istället för att behöva komma ihåg och skriva `rwxrwxrwx` för varje fil och mapp i din installation kan du skriva `777` istället. Detsamma gäller för `rwxr-xr-x`, du kan skriva `755`, istället.

- #### FTP applikation

  Att sätta behörigheter med hjälp av en FTP applikation är det alternativ som gäller för de flesta användare som har webbhotell. Beroende på den FTP app du använder, kommer gränssnittet att skilja sig åt något: en del applikationer tillåter dig att använda numren (777 eller755) i CHMOD kommandot, medan andra tillhandahåller en kryssruta där du kan bocka av behörigheterna separat för varje grupp. Mer avancerade FTP applikationer kan även tillhandahålla båda dessa sätt. Eftersom den här dokumentationen inte kan täcka alla individuella FTP applikationer som finns, kan den exakta metoden skilja sig från den du har.
  Din FTP applikation har troligtvis två fönster, en som visar dina lokala filer och en som visar filerna som finns på din server. I fönstret som visar filerna på servern, navigera till den mapp som dina Copperminefiler finns i. Markera mappen "albums" som finns i den mappen. Från innehållsmenyn (höger-klicka!), välj "egenskaper" (kan kallas för "chmod" eller liknande också). Behörighetsdialogen kommer då att visas. Välj behörigheter enligt ovan (777 eller 755, beroende på din server setup). Om du har en kryssruta som möjliggör att sätta behörigheter för alla undermappar och filer, bocka för det. Om du inte har det, gör det inget. Klicka sedan "OK" på dialogrutan för att behörigheterna ska sättas. Tänk på att din FTP app kanske inte kan se vilka behörigheter som redan är beviljade, så du bör inte lita på den information som visas i dialogrutan: även om det verkar som om behörigheterna redan finns kan det vara så att det inte är sant, du bör sätta rätta behörigheter oavsett.
  Efter att du beviljat behörigheter för din "albums" mapp gör detsamma för mappen "include" som finns i din Coppermine mapp.
  För en lista på rekommenderade FTP applikationer, se Developer documentation → Tools recommended by the devs → FTP clients.

- #### Website kontrollpanel

  En del webbhotell kanske inte ger dig möjlighet att komma åt din sida med FTP, eller så tillåter de inte din FTP klient att köra CHMOD kommandot. Om så är fallet, har du troligtvis ett gränssnitt för serverinställningar (t.ex. cpanel) för att kunna sätta behörigheter på mappar och filer. Det spelar så fall ingen roll, metoden för att sätta behörigheter skiljer sig inte åt från det som beskrivs i avsnittet 'FTP applikation" ovan: navigera till mappen "album" och sätt nödvändiga behörigheter så att din webbserver får åtkomst till alla filer och mappar inom mappen "albums". Gör samma sak för mappen "include".

- #### Shell access

  Om du har shell access till din, kan du köra ditt inbyggda CHMOD kommando på dina filer och mappar. Gå till din Coppermine mapp med hjälp av din shell access, sätt behörigheterna till mapparna "albums" och "include" och allting i dem. Som förklarats ovan behöver användaren som apache daemon körs under skrivbehörighet, så du bör sätta CHMOD till 777 eller 755, beroende på din serverinställning.

- #### Ägarskap (CHOWN)

  I unika fall kan det hända att du får behörighetsproblem som inte kan lösas genom att sätta behörigheterna med kommandot CHMOD - istället måste du ändra ägare till dina mappar/filer med det CHOWN kommando som bara gäller på Posix-kompatibla operativsystem. Problem med ägarskap händer vanligtvis när användaren som FTP uppladdningen körs med skiljer sig åt från den användare som webbservern körs under. Det knepiga är att det inte finns någon inbyggd funktion i din FTP applikation för att kunna se eller ändra ägare. Om det inte är din server att administrera, och du inte har shell access, har du kört fast och måste be ditt webbhotell om support.

### Apache på Windows

Du måste förstå att det inte finns något sådant som CHMOD på ett Windows operativsystem - detta kommando finns bara på en Unix/Linux, även om din FTP applikation visar ett CHMOD alternativ. Om du försöker använda CHMOD på Windows, kommer kommandot bara att ignoreras och ingenting händer. Men det finns behörigheter på Windows också.

Apache webserver service körs under en specifik användare - om du har full behörighet till servern, se på services control för att ta reda på vilken det är. Om du inte kan det, be ditt webbhotell.

Som en tillfällig lösning, sätt behörigheterna på mapp- och filnivå som föreslås i avsnittet IIS på Windows, men inte för IUSR (som bara finns på IIS), utan för alla "everyone". Att tillåta alla att ha läs, skriv och exekveringsrättigheter kan vara en säkerhetsrisk, så det rekommenderas inte alls.

### IIS på Windows

Förutsättningar: du behöver alla administratörsrättigheter på din server för att kunna göra det här. Om du inte har din egen webbserver, har ditt webbhotell troligtvis satt upp ett webb-baserat gränssnitt för att låta dig ändra behörigheter. Om du inte vet, fråga ditt webbhotell.

Dialogrutan kan skilja sig åt beroende på vilken Windowsversion du har:

- Starta Windows Explorer på din webbläsare och navigera till din Coppermine mapp
- högerklicka på den mapp som du vill ändra behörigheter för
- Välj "Properties"
- På dialogrutan för egenskaper, klicka på fliken "Security"
- Markera användaren "Internet guest account (hostname\IUSR_hostname)". Om det inte redan finns, använd "Add..." förr att lägga till denna specifika användare
- Bocka för "Allow" i kryssrutan för "Write"-behörighet
- Klicka på knappen "Advanced"
- Bara för att säkerställa att skrivrättigheterna ärvs ner till alla mappar och filer inom den mapp du redigerar, bocka för kryssrutan "Reset permissions on all child objects and enable propagation of inheritable permissions"
- klicka på "OK"
- svara, på bekräftelserutan som frågar om alla behörigheter ska ersättas, med "Yes"
- beroende på antal underobjekt och hastigheten på ditt system, vänta tills alla behörigheter har ändrats och statusfönstret stängs.
- Klicka på "OK" för att stänga dialogrutan för behörigheter

Du måste förstå att det inte finns något sådant som CHMOD på ett Windows operativsystem - detta kommando finns bara på en Unix/Linux, även om din FTP applikation visar ett CHMOD alternativ. Om du försöker använda CHMOD på Windows, kommer kommandot bara att ignoreras och ingenting händer. Men det finns behörigheter på Windows också.

## Be om hjälp med behörighetsproblem

De flesta användare med Windows bakgrund (eller som inte har någon aning om hur behörigheter fungerar) ställer ofta frågor på supportforumet "Varför måste det vara så komplicerat? Varför skapar ni inte bara ett script som hanterar alla dessa komplicerade behörigheter åt mig?". Svaret är helt enkelt: därför att vi inte kan.

Coppermine har gjorts för att fungera på ett antal olika plattformar och operativsystem. De behörigheter du behöver sätta är en del av hur operativsystemet på din webbserver fungerar - de är inte en del av Coppermine självt. Ett script kan inte sätta behörigheter till sig självt om det inte har behörigheter att göra det.

Tänk på det som om det hade samma struktur som en armé: en soldat som har låg rang kan inte befordra sig själv till general; bara en officer med högre rang kan befordra soldater med lägre rang. De skulle aldrig befordra dem till generaler heller, utan bara ge dem den rang de behöver för att kunna göra sitt jobb (t.ex. befordra dem från vanlig menig till korpral).

Eftersom webbservrar är olika, kan vi inte ge dig en enkel, lättbegriplig instruktion som "CHMOD allting till 755 så är du klar sedan". Även om det skulle vara fallet för många som har delat webbhotell kanske det inte gäller dig. På en del servrar kanske det inte räcker. På en del andra kan det vara en säkerhetsrisk. På en del andra kanske det inte går alls eftersom det inte finns något sådant kommando där.

En del supportrar svarar motvilligt på samma frågor om behörigheter som ställs om och om igen. Om du ställer frågor relaterade till behörigheter på Coppermines supportforum, och det tydligt framgår att du inte läst dokumentationen (åtminstone den dels som behandlar behörigheter), får du förmodligen ett snarstucket svar eller inget alls. Tänk gärna två gånger och läs dokumentationen noggrant. Det finns bara lite andra kan göra för att hjälpa dig med detta. Om du verkligen kör fast är det bättre att du ber ditt webbhotell om hjälp.

## Behörigheter på mappnivå

Som ovan sagts, behöver Coppermine olika nivåer på behörigheter på en del av sina undermappar. Alla mappar och filer inom Coppermine mappen behöver vara läsbara och behöver exekveringsrättigheter också.

Dessutom behövs, skriv rättigheter för:

- Mappen `"albums"` och allting i den.
  Blanda inte ihop mappen (på filsystemsnivå) som heter `"albums"` med den logiska, organisatoriska termen "album" på databasnivå: även om både termerna låter likadan och även om det kan finnas ett förhållande på filsystemsnivå och filer på databasnivå, får dessa termer inte blandas ihop. Album på databasnivå är logiska behållare. Mappen `"albums"` på filsystemsnivå är fysiska behållare.
- Mappen `"include"` måste vara skrivbar under installationen av Coppermine; installationsprogrammet kommer att försöka att lägga till en fil som heter `config.inc.php` till mappen `"include"` där all information lagras som galleriscriptet behöver för att upprätta en anslutning till databasen. Den informationen behöver lagras på filsystemsnivå - alla andra coppermineinställningar lagras på databasnivå så snart scriptet lyckats ansluta till databasen.
- Mappen `"logs"` måste vara skrivbar om du aktiverar loggning i Coppermine's konfiguration.
- Mappen `"plugins"` måste vara skrivbar om du vill använda insticksmoduler och om du vill ladda upp dem med hjälp av http uppladdningsfunktionen som finns inbyggd i insticksmodulshanteraren.