spam@reippuert.dk (Morten Reippuert Knudsen) writes:
> Thorbjørn Ravn Andersen <thunderbear@bigfoot.com> wrote:
>
> > Hvis -x er sat, så kan du endda spare "sh " væk
>
> forklar (jeg er blot en simpel macbruger der er ved at lære *nix)
Under Unix er antagelserne om en given fil og dens indhold meget
begraensede. Nu kender jeg ikke meget til Mac, men Windows arbejder
ud fra filendelser. DANMARK.GIF er et billede, og WINWORD.EXE er et
program (som saa skal ligge i et korrekt binaert format), men du vil
have meget svaert ved at udfoere DANMARK.GIF som et program.
Under Unix er der ingen antagelser om filens indhold ud fra dens navn.
Det afgoeres fuldt og helt ud fra dens attributter, som vises af "ls
-l" og saettes med chmod (som ikke er for hvide mennesker der ikke kan
regne oktalt).
Her er et dump af et filkatalog med "ls -l":
total 3588
-rw-rw-r-- 1 ravn ravn 0 Jan 29 10:01 00README
lrwxrwxrwx 1 ravn ravn 23 Oct 18 13:01 lftp -> /home/ravn/gnu/bin/lftp
lrwxrwxrwx 1 ravn ravn 26 Oct 18 13:01 lftpget -> /home/ravn/gnu/bin/lftpget
-rwxrwxr-x 1 ravn ravn 3541072 Sep 22 12:50 p
-rwxrwxr-x 1 ravn ravn 115490 Jun 5 2000 tidy
-rwxrwxr-x 1 ravn ravn 101 Jun 5 2000 xslt
^^^^^^^^^^ dette er attributterne, som bestaar af 10 tegn, hvoraf det
foerste er filens fysiske type, og der saa er 3x3 tegn der beskriver
hvorvidt r(ead), w(rite), x(ecute) er sat for ejeren (her ravn),
gruppen (her ravn) og alle andre.
I det ovenstaaende er "p" laesbar og eksekverbar af alle grupper, men
indholdet er skrivebeskyttet for alle andre end dem der er i gruppen
"ravn" og brugeren "ravn".
(almindelige filer har - i foerste kolonne, filkataloger har d,
symbolske links l, deviceenheder b og c, og saa er der nok nogen flere
jeg ikke lgie kan huske).
Hvis en given bruger har lov til at eksekvere en given fil, sker der
noget forskelligt afhaengigt af hvad der befinder sig i den (og
afhaengig af hvilken kerne det er - det her skulle dog vaere helt
generelt for alle unixsystemer). Hvis det er et binaert program, som
fx et oversat C program, saa bliver det koert uden yderligere
dikkedarer. Hvis det ikke genkendes som saadan, saa gaar "#!"
mekanismen igang, som kigger paa foerste linie i filen, og hvis den
begynder med "#!" tages resten af den linie som navnet paa det program
som det skal koeres med, med argumenter og hele molevitten.
Perlprogrammer starter fx ofte med
#!/usr/bin/perl -w
som betyder at programmet skal startes som "/usr/bin/perl -w filnavn".
Hvis en saadan linie ikke findes, startes programmet som "/bin/sh
filnavn". Dette er ikke at foragte - det er muligt at lave meget
komplicerede programmer i /bin/sh.
Til sidst skal lige siges, at rettighederne paa en given fil kun
bestemmer hvordan _indholdet_ behandles. Rettighederne til at aendre
paa filens metadata, som navn og adgangsrettigheder, bestemmes af
hvordan rettighederne paa det _filkatalog_ som filen befinder sig i
er. Du kan altsaa godt risikere at en omdoebning bliver naegtet
selvom det er din fil. Det ses dog oftest hvis andre forsoeger at
give adgang til en et fremmed sted.
Jeg tror jeg fik det hele med.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk