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:
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)