Avatar billede kongfjong Nybegynder
17. september 2007 - 18:51 Der er 15 kommentarer og
2 løsninger

umask kontra chmod

Jeg er lidt i tvivl om, hvor forskellen ligger mellem de to metoder når vi snakker upload af filer til en server, via en formular i PHP. Jeg er klar over at med umask() sætter man de rettigheder man IKKE ønsker på filen, mens det er omvendt med chmod(), men hvad er fordelene ved den ene og den anden?

Og dernæst kunne jeg godt tænke mig at høre om hvordan man definerer følgende begreber i forbindelse med rettigheder på filer:
- Owner
- Group
- Public

På forhånd tak
Avatar billede jakobdo Ekspert
17. september 2007 - 18:58 #1
Hvis vi tager chmod, så kan du angive værdierne via:

chmod('filnavn',0765);

7 = owner
6 = group
5 = public

Værdier:
0 = ingenting
1 = execute
2 = write
3 = write/execute
4 = read
5 = read/execute
6 = write/read
7 = write/read/execute

Ved ikke om du spørger i nord og jeg svarer i vest. :o)
Avatar billede kongfjong Nybegynder
17. september 2007 - 19:16 #2
Hehe lidt måske, nok mig der formulerer mig skidt:)

Mht. group, owner osv, tænker jeg på hvem der defineres som Group, Owner og Public:)

Mht de to måder at sætte rettigheder på, såer jeg nysgerrig efter om chmod() er til den enkelte fil og umask() er til alle filer der skal loades i det pågældende script eller hvordan?
Avatar billede jakobdo Ekspert
17. september 2007 - 20:03 #3
Forskellen på umask() og chmod() kender jeg desværre ikke. :o(

Group, owner og public er relateret til Linux/Unix systemer.
På Linux/Unix køres der med 3 "grupper"

owner = ejeren af filen.
group = gruppe.
public = alle andre.

F.eks. kunne man forstille sig elever på en skole.
Du som elev kunne have en fil:
owner = kongfjong
group = elever (elever kunne så være nogle rettigheder som bliver sat på en gruppe og dermed virker på alle elever)
public er alle andre, f.eks. lærer, besøgende, gæster osv...

Der er altså tale om rettighder på filerne.
Avatar billede kongfjong Nybegynder
17. september 2007 - 20:14 #4
Okay, dvs. ham der uploader filen er ejeren?
Avatar billede jakobdo Ekspert
17. september 2007 - 20:45 #5
Når der snakkes upload, er det faktisk webserveren som bliver ejeren.
Selvom du har en bruger som uploader, sker det med webserverens rettigheder og filen er ejet af webserver-ejeren.
Avatar billede kongfjong Nybegynder
17. september 2007 - 20:55 #6
Hehe ah ja okay:) Hvad vil brugeren så være? Public?
Avatar billede jakobdo Ekspert
17. september 2007 - 21:01 #7
Brugeren vil jo være apache eller php.
En bruger på din hjemmeside, vil aldrig være bruger direkte på linux/unix systemet.
Avatar billede arne_v Ekspert
17. september 2007 - 21:05 #8
umask saetter default for nye filer men chmod aendrer for eksisterende filer

argumentet er det samme som for chmod
Avatar billede kongfjong Nybegynder
17. september 2007 - 21:41 #9
ah okay, så umask() bruger man før man oploader og chmod() efter?
Avatar billede arne_v Ekspert
17. september 2007 - 22:14 #10
umask foer *eller* chmod efter hver

da umask er en egenskab ved shell er jeg skeptisk overfor hvordan den bruges i PHP kontekst
Avatar billede kongfjong Nybegynder
18. september 2007 - 08:28 #11
ok, men tak for svarende, det hjalp gevaldigt:) Lig et svar begge to:)
Avatar billede jakobdo Ekspert
18. september 2007 - 08:32 #12
Svar!
Avatar billede arne_v Ekspert
18. september 2007 - 22:44 #13
svar

http://us3.php.net/manual/en/function.umask.php

siger

    Note:  Avoid using this function in multithreaded webservers. It is better to change the file permissions with chmod() after creating the file. Using umask() can lead to unexpected behavior of concurrently running scripts and the webserver itself because they all use the same umask.
Avatar billede kongfjong Nybegynder
19. september 2007 - 08:41 #14
Ah ja, nu tror jeg faktisk jeg forstår problemet med umask(). De fleste servere er vel multi-threaded?
Avatar billede jakobdo Ekspert
19. september 2007 - 08:52 #15
Jeg takker for point. (og satser Arne_v kan svare på det med multithreaded).
Men mon ikke svaret er jo.
Avatar billede arne_v Ekspert
19. september 2007 - 13:13 #16
IIS og Apache 2 er.

Jeg mener at Apache 1 stadigvæk forker.
Avatar billede jakobdo Ekspert
19. september 2007 - 13:47 #17
Ang. apache er det vel også noget man kan sætte op med forskellige moduler, hvis ikke jeg tager fejl.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester