Velg en side

På utviklingsserver er nå Apache2 satt opp, og kjører med bruker/gruppe: www-data:www-data. Dette angis i filen /etc/apache2/envvars, som konfigurerer Apache_Run_User og Apache_Run_Group.

Når all utvikling av nettstedet er ferdig, skal alle filer flyttes fra utvikling til webhotell. Bruker/gruppe for filene kan da ikke være www-data:www-data lenger, men må være den bruker/gruppe som webhotellet benytter for nettstedet.

Kopiering av filer er derfor ikke rett fram. På et eller annet tidspunkt må bruker/gruppe endres slik at webhotellet har korrekt brukernavn og gruppeID for alle filene til nettstedet.

Dette kan sikkert løses på flere måter. Her endres Apache_Run_User før utvikling av nettstedet.dev starter. Dermed vil alle filer ha riktige bruker/gruppe når filene utplasseres på webhotellet.

Sjekk UID og GID for nettstedadmin på webhotellet

Vi lar administrator for nettstedet på webhotellet som eksempel ha brukernavn «nettstedadmin«.

Først sjekkes hvilken UID (user id) og GID (group id) nettstedadmin har på webhotellet. La oss si det for eksempel er: 121314:121314 (UID:GID). Det finner vi ved å kjøre følgende kommandoer:

~$ id -u nettstedadmin

121314

~$ id -g nettstedadmin

121314

Sjekk hvilke brukere utviklingserver har

Så sjekkes alle brukere på utviklingsserver, slik at vi ikke får noen navnekonflikter når vi straks skal opprette en ny bruker som kan tjene som Apache_Run_User.

Output av kommandoen sudo cat /etc/passwd gir en rekke brukere, men ingen med navn nettstedadmin

brukernavn@servernavn:~$ sudo cat /etc/passwd

Opprette gruppe 121314 nettstedadmin på utviklingsserver

Først lager vi gruppa 121314 nettstedadmin med groupadd.

brukernavn@servernavn:~$ sudo groupadd -g 121314 nettstedadmin

Verifisere gruppe nettstedadmin på utviklingsserver

Vi bruker kommando getent group for å verifisere gruppa:

brukernavn@servernavn:~$ sudo getent group | grep nettstedadmin
nettstedadmin:x:121314

Opprette bruker nettstedadmin på utviklingsserver

På utviklingsserveren opprettes nå bruker «nettstedadmin» med kommando adduser. Vi lager altså en bruker på utviklingsserver som har samme navn som vår bruker på webhotellet. Bruker tilordnes også gruppa vi akkurat laget og som har samme navn.

brukernavn@servernavn:~$ sudo adduser nettstedadmin –uid 121314 –gid 121314

Adding user ‘nettstedadmin’ …

Adding new user ‘nettstedadmin’ (121314) with group ‘nettstedadmin’ …

Creating home directory ‘/home/nettstedadmin’ …

Copying files from ‘/etc/skel’ …

New password:

Retype new password:

passwd: password updated successfully

Changing the user information for nettstedadmin

Hopp over

Is the information correct? [Y/n] Y

Sjekk at bruker er på plass

Vi sjekker at bruker nettstedadmin er på plass ved å undersøke /etc/passwd med less. (less gir oss mulighet til å lese en skjermhøyde av gangen. Praktisk ved store mengder output).

Den nye brukeren nettstedadmin er muligens oppført helt sist i output omtrent som her:

brukernavn@servernavn:~$ sudo less /etc/passwd 

nettstedadmin:x:121314:121314, , , :/home/nettstedadmin:/bin/bash

/etc/passwd  (END)

Sjekk mulige aktive prosesser for bruker nettstedadmin

Vi sjekker nå om bruker nettstedadmin har noen aktive prosesser før vi tar backup av passord.

brukernavn@servernavn:~$ sudo ps -ef | grep nettstedadmin

Ta backup av passord

Før vi gjør endringer for en bruker og grupper, tar vi backup av passord.

brukernavn@servernavn:~$ sudo cp -p /etc/passwd /etc/passwd.bkp
sudo cp -p /etc/group /etc/group.bkp

Legg nettstedadmin i gruppene sudo og www-data

Vi gir nettstedadmin sudo-rettigheter. Dette skjer ved at vi legger nettstedadmin i sudo-gruppa. Vi legger også nettstedadmin i gruppa www-data.

Kommando usermod kjøres med sudo foran fordi vi skal utføre en kommando som krever root- privilegier.

-aG betyr «legg til i gruppe(r)(append to group(s))». Her  gruppene; sudo og www-data. Vi avslutter kommandoen med brukernavnet det skal gjelde for; nettstedadmin. Altså: nettstedadmin legges i sudo og www-data. (Gruppene skilles kun med komma-tegn, ingen mellomrom.)

brukernavn@servernavn:~$ sudo usermod -aG sudo,www-data nettstedadmin

Sjekke hvilke grupper nettstedadmin er i

Når en bruker opprettes, tilordnes brukeren automatisk en ny unik gruppe. Med kommandoen sudo id [bruker] kan vi se hvilke grupper en bruker er i.

Kommando sudo id nettstedadmin  viser nå gruppene.

brukernavn@servernavn:~$ sudo id nettstedadmin

uid=121314(nettstedadmin),gid=121314(nettstedadmin)  groups=121314(nettstedadmin),27(sudo),33(www-data)

Endre eierskap på nettstedets filer

Alle mapper og filer for nettstedet.dev eies av www-data:www-data. Eier og gruppe skal nå endres til nettstedadmin:nettstedadmin. -Rh Switch: -R betyr at endringen skjer rekursivt (alle mapper og filer kjøres gjennom og endres),  -h betyr at også symlinks skal tas med. Når vi bruker både R og h, trenger vi bindestrek – kun foran hele samlingen av switcher, som her blir slik: -Rh

brukernavn@servernavn:~$ sudo chown -Rh nettstedadmin:nettstedadmin /var/www/

Om eierskap for filer

Owner/Group er default www-data:www-data, men det funker ikke ved rsync mellom ulike servere, slik som utvikling og produksjon. På webhotellet er Owner/Group nettstedadmin:nettstedadmin for alle mapper/filer. Det må være det samme på utviklingsserver, og tallrepresentasjonen for bruker og gruppe må også være det samme på begge servere, som i eksempelet her: 121314:121314.

Man må logge inn på utviklingsserver som user nettstedadmin når filene skal kopieres fra en server til en annen, fordi den som kopierer filene må ha samme brukernavn som den som er satt som Owner/Group, ellers kommer ikke filer med 600-rettighet med.

I det videre arbeidet logges det alltid inn på utviklingsserver med bruker nettstedadmin til alt videre arbeid. (Brukernavnet nettstedadmin er selvsagt bare et eksempel 🙂

Endre APACHE_RUN_USER og APACHE_RUN_GROUP

Vi åpner filen /etc/apache2/envvars i nano.

I nano endrer vi www-data til nettstedadmin for disse to linjene:
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
Det endres til:
export APACHE_RUN_USER=nettstedadmin
export APACHE_RUN_GROUP=nettstedadmin

Lagre: Ctrl O og deretter Enter for å bekrefte lagring i samme katalog.
Avslutte: Ctrl X

nettstedadmin@servernavn:~$ sudo nano /etc/apache2/envvars

Utdrag av filen i nano:
# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=nettstedadmin
export APACHE_RUN_GROUP=nettstedadmin

# temporary state file location. This might be changed to /run in Wheezy+1

 

Stoppe og starte apache2

For at endringene i filen /etc/apache2/envvars skal ta effekt, må apache2 stoppes og startes igjen. Det er ikke nok med reload.

nettstedadmin@servernavn:~$ sudo service apache2 stop
sudo service apache2 start

Test nettsedet.dev i en nettleser. 

Nå skal igjen nettleser vise en nettside basert på index.html, f eks «Det funker!» (Hvis denne teksten er lagt inn i index.html)