I UNIX™ finnes flere typer filer, som identifiseres ved det første tegnet på linjen fra kommandoen ls -l fil. De vanligste er
/usit/saruman/bsd-u1/trondham den absolutte
stien til brukeren trondham sitt hjemmeområde...", som er navnet til katalogen ett hakk
opp.Eksempel 16. Relativ og absolutt sti
Først kan vi se hva som er aktiv katalog med kommandoen pwd (Print Working Directory):
user@hostname$ pwd
/usit/saruman/bsd-u1/trond
Vi bruker ls for å illustrere forskjellen på relativ og absolutt sti. Først relativ sti:
user@hostname$ ls -a ../../../
. ernst saba spfs tetrable
.. gravenstein sauron sunsite texhost
condor morgoth sp0 tag ulrik
Og så med absolutt sti:
user@hostname$ ls -a /usit
. ernst saba spfs tetrable
.. gravenstein sauron sunsite texhost
condor morgoth sp0 tag ulrik
Resultatet av de to kommandoene over er nøyaktig likt. Det er logisk, hvis man teller antall kataloger opp mot roten med utgangspunkt i aktiv katalog, som vi fikk med kommandoen pwd øverst.
Symlinker er peker til filer eller kataloger, og brukes til
mange ting i UNIX™. På UiO brukes symlinker bl.a. til å gjøre det
enklere for brukerne å gi en sti til sitt hjemmeområde. For alle
brukerne på UiO finnes det en symlink
/hom/
som peker på hjemmeområdet, uansett om hjemmeområdet flytter seg
fordi brukeren gjør endringer i studietilhørighet e.l.brukernavn
Eksempel 17. Symlinker
Vi titter på filen /hom/trondham:
user@hostname$ ls -l /hom/trondham
lrwxrwxrwx 1 root root 29 Jul 12 08:16 /hom/trondham -> /usit/saruman/bsd-u1/trondham
For å verifisere, leser vi innholdet i variabelen
HOME, som alltid forteller hva hjemmeområdet
er:
user@hostname$ echo $HOME
/usit/saruman/bsd-u1/trondham
Vi diskuterer ikke symlinker ytterligere, annet enn å vise at de eksisterer, og at de kan være nyttige i den daglige bruk av UNIX. Symlinker lages med kommandoen ln. Interesserte lesere kan se manualsiden til denne.
De fleste kommandotolkere (shell) definerer tilde
'~' til å peke på enten ditt egen hjemmeområde,
hvis du kun bruker '~', eller en annen brukers
hjemmeområde, hvis du bruker
'~brukernavn'.
Eksempel 18. Bruk av tilde (~)
Mitt eget hjemmeområde:
user@hostname$ ls -d ~
/usit/saruman/bsd-u1/trondham
En annen brukers hjemmeområde:
user@hostname$ ls -d ~sm
/usit/saruman/bsd-u3/sm
(Opsjonen -d til ls
spesifiserer at vi kun ønsker å liste opp selve katalogen (hvis
det er en katalog, som i dette tilfellet) istedenfor innholdet
av katalogen. Nyttig liten opsjon.)
I tillegg har kommandoen cd en fin egenskap. Hvis du bruker den uten argument, havner du på ditt eget hjemmeområde.
Vi tar utgangspunkt i resultatet av kommandoen ls
-l på filen minfil.txt.
user@hostname$ ls -l minfil.txt
-rw------- 1 trondham ucore 872 Aug 2 11:32 minfil.txt
Hvis vi ser litt nærmere på resultatet ser vi at ls gir oss syv felter med informasjon:
-rw-------1
trondham
ucore
872
Aug 2 11:32
minfil.txt
![]()
Her er en forklaring til alle feltene i listingen over:
De 10 første tegnene angir
| ||||||||||||||||||||||||
Antall hardlinker til filen (ignorer denne) | ||||||||||||||||||||||||
Eier av filen (her: trondham) | ||||||||||||||||||||||||
Filens gruppe (her: ucore) | ||||||||||||||||||||||||
Filens størrelse i antall bytes | ||||||||||||||||||||||||
Tidspunkt da filen sist ble modifisert | ||||||||||||||||||||||||
Filens navn |
Det er de 10 første tegnene, samt eier og gruppe som først
og fremst angår oss i dette avsnittet. Filen
minfil.txt over er en regulær fil som er
skrivbar for eier og lesbar for eier, gruppe og alle andre.
Vi sier også at filen har "adgangs-bits". Hver av bokstavene
r, w og x
kan angis med et bit i det binære tallsystemet, og assosieres i
det oktale tallsystemet. Det høres komplisert ut, men er det
egentlig ikke.
Her er en tabell som viser de åtte ulike verdiene for adgang man kan gi til eier, gruppe eller alle:
Tabell 4. Sammenheng mellom oktale og binære tall og adgang til filer
| Oktalt | Binært | Adgang | Forklaring |
|---|---|---|---|
0 | 000 | --- | Ingen tilgang overhodet |
1 | 001 | --x | Kun eksekvering |
2 | 010 | -w- | Kun skrivetilgang |
3 | 011 | -wx | Skriving og eksekvering |
4 | 100 | r-- | Kun lesing |
5 | 101 | r-x | Lesing og eksekvering |
6 | 110 | rw- | Lesing og skriving |
7 | 111 | rwx | Lesing, skriving og eksekvering |
I UNIX har man tre ulike tilganger til filer og kataloger (mapper). Disse er lesing, skriving og eksekvering. Hver av dem har en egen betydning for tilgangen til filen/katalogen, og man kan sette en hvilken som helst kombinasjon av de tre man ønsker.
Filen er lesbar. Den eller de som adgangen gjelder for, dvs. eier, gruppe eller alle, kan lese innholdet i filen.
Katalogen er lesbar. Den eller de som adgangen gjelder for, dvs. eier, gruppe eller alle, kan lese innholdet i katalogen. F.eks. kan man bruke ls til å liste opp innholdet. Merk at det ikke gis tilgang til å lese innoldet i katalogen med mindre eksekvering for katalogen også er satt.
Filen er skrivbar. Den eller de som adgangen gjelder for, dvs. eier, gruppe eller alle, kan endre innholdet i filen.
Katalogen er skrivbar. Den eller de som adgangen gjelder for, dvs. eier, gruppe eller alle, kan opprette filer i katalogen. Merk at det ikke gis tilgang til å opprette filer i katalogen med mindre eksekvering for katalogen også er satt.
Filen er eksekverbar. Den eller de som adgangen gjelder for, dvs. eier, gruppe eller alle, kan kjøre filen. Dette har bare mening hvis filen er et program.
Katalogen er eksekverbar. Eksekvering må være satt for kataloger for at lese- og/eller skrivetilgang skal ha noen mening. Kun eksekvering gir den/de som adgangen gjelder for adgang til å skrive/lese/eksekvere filer i katalogen dersom adgangen til selve filene tillater det.
Kommandoen chmod brukes til å endre tilgangsrettigheter på filer. Det gjøres på følgende måte:
chmod [opsjon(er)] MODE fil(er)
Her er MODE enten
ugoa, ett av
symbolene +-= og ett eller flere av
tegnene rwx[3]; eller
Her er en del eksempler på bruk av chmod:
Eksempel 19. Bruk av chmod
Vi vil at gruppen ucore skal ha lese- og skriverettighet:
user@hostname$chmod g=rw minfil.txtuser@hostname$ls -l minfil.txt -rw-rw-r-- 1 trondham ucore 872 Aug 2 11:32 minfil.txt
Vi vil fjerne leserettighet for alle andre enn eier og gruppe:
user@hostname$chmod o-r minfil.txtuser@hostname$ls -l minfil.txt -rw-rw---- 1 trondham ucore 872 Aug 2 11:32 minfil.txt
Vi vil at eier skal ha rettighet til å lese, skrive og eksekvere, at gruppe skal lese og eksekvere og null tilgang til alle andre:
user@hostname$chmod u=rwx,g=rx,o= minfil.txtuser@hostname$ls -l minfil.txt -rwxr-x--- 1 trondham ucore 872 Aug 2 11:32 minfil.txt
Det samme, men vi bruker tall istedenfor symboler:
user@hostname$chmod 750 minfil.txtuser@hostname$ls -l minfil.txt -rwxr-x--- 1 trondham ucore 872 Aug 2 11:32 minfil.txt
Vi vil at alle skal ha lesetilgang, i tillegg til de rettighetene som allerede eksisterer for filen:
user@hostname$chmod a+r minfil.txtuser@hostname$ls -l minfil.txt -rwxr-xr-- 1 trondham ucore 872 Aug 2 11:32 minfil.txt
Du kan angi hvilke filrettigheter nye filer automatisk skal få ved å bruke umask. Endringen skjer kun i den instansen av bash du kjører akkurat da. Starter du bash på nytt, f.eks. ved å logge inn på nytt, er umask satt tilbake som definert i standardoppsettet.
umask er en kommando som er innebygd i bash, og er som navnet sier en maske for filrettigheter. Kommandoen brukes slik:
umask [-S] [MODE]
MODE kan være enten oktale tall, eller
symbolverdier slik vi kjenner dem fra
chmod. De oktale tallene er da "omvendt" av
de tallene du ville gitt til chmod, siden det
er en maske.
Eksempel 20. Bruk av umask
Dersom du ikke angir
MODE, vil bash skrive ut
nåværende umask. Opsjonen -S skriver ut den
korresponderende symbolverdien:
user@hostname$umask 077user@hostname$umask -S u=rwx,g=,o=
Hvis man vil sette en umask slik at alle nye filer får
rettighet rwxr-xr-x, gjøres det
slik:
user@hostname$ umask 022
Eller, ved bruk av symboler:
user@hostname$ umask u=rwx,g=rx,o=rx
Hvis man vil se hva man setter umask til, gir man
opsjonen -S:
user@hostname$ umask -S 022
u=rwx,g=rx,o=rx
For mer informasjon om umask, se manualsiden til bash.
![]() | Notat |
|---|---|
Det er normalt (og anbefalt) å ha eksekveringsrettigheter med i umask. Det er kun kataloger som vil få x-bit satt, ettersom kataloger må ha x-bit for at man skal kunne liste opp innholdet i dem. |
Endring av eier gjøres med kommandoen chown:
chown [OPTION]... OWNER[:[GROUP]] FILE...
Eksempel 21. Endring av eier på fil
Vi vil at sm (ikke trondham) skal eie
minfil.txt:
user@hostname$ chown sm minfil.txt
chown: minfil.txt: Operation not permitted
Det får vi altså ikke lov til... kun superbrukeren root har lov til å gjøre slikt.
Endring av gruppe foregår vha. kommandoen chgrp:
chgrp [OPTION]... GROUP FILE...
Dette kan vi gjøre forutsatt av vi er medlem av den filgruppen vi vil endre til.
Eksempel 22. Endring av gruppe på fil
Vi vil at usit, ikke ucore, skal være gruppe for
minfil.txt:
user@hostname$ls -l minfil.txt -rwxr-xr-x 1 trondham ucore 872 Aug 2 11:32 minfil.txt*user@hostname$chgrp usit minfil.txtuser@hostname$ls -l minfil.txt -rwxr-xr-x 1 trondham usit 872 Aug 2 11:32 minfil.txt*
På UiO bruker vi katalogen www_docs
til våre personlige hjemmesider. Vi får da adgang til
hjemmesiden vår ved å bruke URL-en
http://folk.uio.no/brukernavn/
Web-tjeneren kjører som en upriviligert bruker, slik at
for at den skal kunne lese filene under
www_docs må alle filer under
www_docs som skal nås fra internett være
lesbare for alle. I tilleg må katalogen
www_docs hvor hjemmesiden ligger, og selve
hjemmeområdet ditt, må i tillegg være eksekverbare.
Vi komprimerer filer for å gi oss selv og andre som har
hjemmeområdet sitt på samme disk som oss, bedre plass. Mange filer
kan komprimeres til en brøkdel av størrelsen, mens noen filer,
blant dem .jpg og .mp3,
allerede er så komprimert at ekstra komprimering har minimal
effekt.
Komprimering og dekomprimering i UNIX gjøres henholdsvis med
gzip og gunzip. Det finnes
også andre programmer til (de)komprimering,
bl.a. bzip2 og bunzip2, og
compress og uncompress, men
gzip og gunzip er mest
brukt. Det er lurt å bruke opsjonen -v til begge
kommandoene.
Eksempel 23. Komprimering av filer
Vi komprimerer filen
minfil.txt:
user@hostname$ gzip -v minfil.txt
minfil.txt: 64.9% -- replaced with minfil.txt.gz
Som man ser har filen endret navn. Vi kan dekomprimere filen igjen:
user@hostname$ gunzip -v minfil.txt.gz
minfil.txt.gz: 64.9% -- replaced with minfil.txt
Filen er som før, og har fått tilbake sitt opprinnelige navn.
Det finnes haugevis av kommandoer som manipulerer filer, kataloger eller andre aspekter ved filsystemet. Mange av dem er lite brukt, noen er mye brukt. Under er en liste over kommandoer vi (USIT) bruker mye i vårt daglige arbeid, til smått og stort.
| Kommando/Program | Forklaring |
|---|---|
| df | Gir informasjon om filsystemene på maskinen |
| du | Disk Usage. Se eksempel under |
| find | Finne filer på filsystemet |
For mer informasjon om disse kommandoene, se manualsidene. Spesielt find er svært kraftig, men kan være vanskelig å bruke i begynnelsen.
Eksempel 24. Kommandoen du
For å finne ut hvor mye plass du bruker totalt på
hjemmeområdet ditt kan du kjøre kommandoen under. Her er vi
interessert i total størrelse, i et format passelig for oss
mennesker. Derfor bruker vi opsjonen -h (human
readable).
user@hostname$ du -sh ~
1.9G /usit/saruman/bsd-u1/trondham
(Jeg bruker visst mye... på tide å slette litt).
du kan kombineres med sort og head for å gi en liste over de største filene/katalogene på hjemmeområdet ditt:
user@hostname$ du -kx ~ | sort -nr | head -n 10
1981648 /usit/saruman/bsd-u1/trondham
911704 /usit/saruman/bsd-u1/trondham/Mail
426208 /usit/saruman/bsd-u1/trondham/Mail/Usit
210380 /usit/saruman/bsd-u1/trondham/Mail/Usit/logs
193316 /usit/saruman/bsd-u1/trondham/latex
153464 /usit/saruman/bsd-u1/trondham/Mail/linux
153192 /usit/saruman/bsd-u1/trondham/Mail/Privat
144104 /usit/saruman/bsd-u1/trondham/cvs
143096 /usit/saruman/bsd-u1/trondham/cvs/bsd
134920 /usit/saruman/bsd-u1/trondham/Mail/Osi
I eksemplet over sorterer vi på kB, angitt med opsjonen
-k til du.