WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Frågor om filrättigheter och PHP, CHMOD (https://www.wn.se/forum/showthread.php?t=1042471)

Jim_Westergren 2010-06-10 11:11

Frågor om filrättigheter och PHP, CHMOD
 
På både Loopia och Binero så kan PHP fritt ändra på filer, skapa filer, skapa mappar, radera filer och mappar osv och man behöver inte sätt att något ska vara CHMOD 777. Filerna som PHP skapar får CHMOD 644 och katalogerna CHMOD 755 automatiskt. Det har funkat perfekt för mig.

Nu har jag skaffat en VPS och installerat LAMP enligt denna guiden.

På min VPS måste mappen först ha CHMOD 777 innan PHP kan skapa mappar och filer under den katalogen. Men de mappar och filer som skapas får 644 för filer och 755 för mappar.

Mitt problem blir när jag nu flyttar filer från min sajt på Binero till min VPS via FTP. PHP vägrar skriva till filerna om inte alla mappar plus alla filer får CHMOD 777.

Jag gissar att det har något att göra vem som äger eller vem som har skapat filerna - eller? Hur kan jag på min Debian VPS göra så att PHP fritt kan manipulera filer precis som på Binero och Loopia? Det har väl att göra med kommandot chown att göra - eller?

Och om jag sätter CHMOD 777 på allting - gör jag inte säkerheten mindre då? Vad skulle kunna hända? Säkerhet är det viktigaste för mig.

Tack på förhand.

abergman 2010-06-10 11:49

Citat:

Ursprungligen postat av Jim_Westergren (Inlägg 20358893)
På både Loopia och Binero så kan PHP fritt ändra på filer, skapa filer, skapa mappar, radera filer och mappar osv och man behöver inte sätt att något ska vara CHMOD 777. Filerna som PHP skapar får CHMOD 644 och katalogerna CHMOD 755 automatiskt. Det har funkat perfekt för mig.

Nu har jag skaffat en VPS och installerat LAMP enligt denna guiden.

På min VPS måste mappen först ha CHMOD 777 innan PHP kan skapa mappar och filer under den katalogen. Men de mappar och filer som skapas får 644 för filer och 755 för mappar.

Mitt problem blir när jag nu flyttar filer från min sajt på Binero till min VPS via FTP. PHP vägrar skriva till filerna om inte alla mappar plus alla filer får CHMOD 777.

Jag gissar att det har något att göra vem som äger eller vem som har skapat filerna - eller? Hur kan jag på min Debian VPS göra så att PHP fritt kan manipulera filer precis som på Binero och Loopia? Det har väl att göra med kommandot chown att göra - eller?

Och om jag sätter CHMOD 777 på allting - gör jag inte säkerheten mindre då? Vad skulle kunna hända? Säkerhet är det viktigaste för mig.

Tack på förhand.

chown är din vän:) jag antar att du använder apache och debian, då bör chown -R www-data:www-data eller -R www-data:root på /var/www fixa biffen.

Jim_Westergren 2010-06-10 11:58

chown -R www-data:www-data funkade perfekt, tack!

Testade bara en viss mapp.

Är det säkrare att köra det på bara de mappar och filer som behöver det än hela /var/www och alla domäner?

abergman 2010-06-10 12:19

Citat:

Ursprungligen postat av Jim_Westergren (Inlägg 20358903)
chown -R www-data:www-data funkade perfekt, tack!

Testade bara en viss mapp.

Är det säkrare att köra det på bara de mappar och filer som behöver det än hela /var/www och alla domäner?

Som du säkert förstår så ändrar chown ägaren av filerna, så att sätta det på alla filer i webbkatalogen skulle ge webbservern fullt ägarskap på alla filer, och kan potentiellt ge en utomstående hacker eller något tillgång till filerna.

Men jag skulle inte säga att det är något extremt utan du kan lugnt sätta det på alla filer för domänen/siten/vhosten som används av webbservern.

Dock så ska du ju bara ge webbservern skrivrättigheter på de filer som den ska ha skrivrättigheter på.

Jim_Westergren 2010-06-10 12:30

Ok jättebra.

Dock upptäckte jag om jag satte webbservern som ägare så förlorade jag själv skrivrättigheter via FTP. Jag behöver både två.

Jag har tidigare använt detta för att skapa en grupp och en användare:
groupadd www-pub
adduser –ingroup www-pub NN

Så hur fixar jag så att denna användaren NN äger och har rättigheter till allt och sedan kan webbservern även äga vissa mappar och filer. Kan mappar och filer ha flera ägare? Googlade lite men hittade inget svar.

Weaver 2010-06-10 12:33

Citat:

Ursprungligen postat av Jim_Westergren (Inlägg 20358903)
Är det säkrare att köra det på bara de mappar och filer som behöver det än hela /var/www och alla domäner?

Rent generellt skall du låta servern kunna läsa allt i webrooten men du skall vara mycket sparsam med skrivrättigheter.

Skrivrättigheter skall du bara dela ut på uppladdnings-mappar (tex för wordpress: wp-content/upload, wp-content/gallery) och mappar som innehåller cachar.

Om ett script behöver skriva till servern under installation så ge den temporärt tillstånd genom chmod (utan -R) i den specifika mappen och ta sedan bort skrivrättigheterna när installationen är klar.

Weaver 2010-06-10 12:41

Citat:

Ursprungligen postat av Jim_Westergren (Inlägg 20358907)
Dock upptäckte jag om jag satte webbservern som ägare så förlorade jag själv skrivrättigheter via FTP. Jag behöver både två.

Jag har tidigare använt detta för att skapa en grupp och en användare:
groupadd www-pub
adduser –ingroup www-pub NN

Så hur fixar jag så att denna användaren NN äger och har rättigheter till allt och sedan kan webbservern även äga vissa mappar och filer. Kan mappar och filer ha flera ägare? Googlade lite men hittade inget svar.

På min server äger NN filerna vilket gör att man kan logga in via ftp och ändra och ta bort filer hur man vill. Gruppägaren för filerna är apache vilket gör att apache kan läsa och tolka innehållet.

Kataloger och filer kan bara ha en ägare men via grupper kan man låta flera användare få access till filerna.

abergman 2010-06-10 12:43

Citat:

Ursprungligen postat av Jim_Westergren (Inlägg 20358907)
Ok jättebra.

Dock upptäckte jag om jag satte webbservern som ägare så förlorade jag själv skrivrättigheter via FTP. Jag behöver både två.

Jag har tidigare använt detta för att skapa en grupp och en användare:
groupadd www-pub
adduser –ingroup www-pub NN

Så hur fixar jag så att denna användaren NN äger och har rättigheter till allt och sedan kan webbservern även äga vissa mappar och filer. Kan mappar och filer ha flera ägare? Googlade lite men hittade inget svar.

Du kan prova lägga till ftp-användaren i gruppen www-data/www-pub eller tvärt om. annars kan du alltid sätta ftp-gruppen som ägare och www-data användaren som ägare.

Jag undviken att använda FTP av den här anledningen:) Kör med scp eller något liknande istället och har en användare med lite mer rättigheter.

cyner 2010-06-10 13:02

Jag tycker att /var/www och alla underkataloger och filer ska ägas av användaren www-pub och gruppen www-pub som jag skrev i guiden (inte www-data, alltså webbservern).

MEN, det krävs ofta att man ger PHP eller webbservern rättigheter att skriva till vissa filer eller mappar (vi tar exemplet "wp-content" i WordPress), och då föreslår jag att du gör så här:

Kod:

chown -R www-pub:www-data wp-content
Då blir www-pub ägare och www-data ägargrupp för dessa filer och mappar, men alla andra är fortfarande skrivskyddade för webbservern.

Sedan måste du också ange vilka rättigheter ägaren och användarna i ägargruppen ska ha -- de kan nämligen skilja sig åt. Det gör du med kommandot chmod:

Kod:

chmod -R g+w wp-content
ger (+) gruppen (g) rättighet att skriva (w) till wp-content och alla underkataloger och filer.

(Jag brukar aldrig använda siffror för chmod, det är obegripligt för mig.)

Du kan också skriva exempelvis

Kod:

chmod -R o-wx wp-content
för att ta bort (-) rättigheterna att skriva (w) och köra/öppna (x) från användare som inte är ägare eller tillhör ägargruppen.

För att se vilka rättigheter filerna och mapparna har, kör kommandot "ls -l" och titta på de första kolumnerna.

Jim_Westergren 2010-06-10 13:05

Weaver,

Jo det är väl så man normalt gör. Men i mitt fall måste servern även kunna manipulera med filer och mappar i två stora mappar.

abergman,

Tack så mycket för hjälpen. Som du kanske förstod så är jag helt noob med detta. Har nyligen skaffat VPS.

Jag testade useradd -G www-data NN och då stod det:
useradd: user NN exists

Sen för att testa skrev jag groups NN men då nämns bara www-pub och sudo och inte www-data plus att det är samma sak på FTP.

Jag vet inte om jag gjorde fel. scp har jag aldrig hört talat om.

Jag behöver inte riktigt FTP för dessa två stora mapparna, jag kan skriva ett PHP script istället som kan manipulera de filerna så jag har i alla fall löst mitt problem även om det kanske inte är perfekt.

Är det förresten någon skillnad i säkerhet mellan om www-data äger och kan manipulera filerna eller om filerna har CHMOD 777 och kan på det sättet manipuleras av www-data?


Alla tider är GMT +2. Klockan är nu 11:08.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson